Estoy tratando de usar "aws s3 sync" en mi instancia EC2. ¿Está rota la opción '--excluir'?

8

Estoy tratando de hacer una copia de seguridad de mi instancia EC2 en S3 usando las herramientas oficiales de Amazon que vienen preinstaladas en la instancia EC2. Tengo dificultades para obtener el comando de sincronización para excluir directorios de la sincronización. La documentación hace que parezca fácil usar la opción '--exclude'. Sin embargo, no he podido hacer que funcione.

Estoy ejecutando la última versión disponible a través de yum:

[root@HOSTNAME ~]# aws --version
aws-cli/1.1.1 Python/2.6.8 Linux/3.4.57-48.42.amzn1.x86_64

Este es el comando con el que tengo problemas:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*.git/*'

Quiero excluir todas las carpetas llamadas '.git' y todos los archivos en esas carpetas de la sincronización.

A juzgar por la documentación, el patrón que le di a '--exclude' debería funcionar. Sin embargo, todo el directorio .git y todos sus archivos aún están sincronizados. Aquí hay una línea de salida de ejemplo:

upload: ../var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77 to s3://backup-bucket/var/www/site/.git/objects/7b/e3cdf203d34a0d7eff30a96a78d20eacee8d77

Intenté los siguientes comandos, que no pudieron excluir carpetas llamadas '.git':

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude *.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude */.git/*
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.git'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*\.git/*'
aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '.*\.git/.*'

Y, quizás lo más inquietante, este comando no excluye nada de la sincronización:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*'

De hecho, parece que '--exclude' solo funciona si el globbing está en el lado derecho de una ruta absoluta. Por ejemplo, esto excluye la carpeta .git en /var/www/site/.git:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '/var/www/site/.git/*'

pero esto no excluye nada:

aws s3 sync /var/www s3://backup-bucket/var/www/ --exclude '*/www/site/.git/*'

Tengo muchos sitios en / var / www y muchas carpetas que quiero excluir de la sincronización, como '.git', 'analizado', 'caché', etc. Sería terrible tener que proporcionar rutas absolutas a todos ellos. .

Espero que haya algo simple que estoy haciendo mal aquí. Gracias por toda tu ayuda.

usuario158845
fuente

Respuestas:

2

El problema mencionado de github está cerrado y el comando de sincronización permite excluir ahora .

He intentado y agregando --exclude ".git/*"obras.

Tenga en cuenta que /*se requiere el final .

Luciano
fuente