J'essaie d'utiliser «aws s3 sync» sur mon instance EC2. L'option '--exclude' est-elle cassée?

8

J'essaie de sauvegarder mon instance EC2 sur S3 à l'aide des outils officiels d'Amazon préinstallés sur l'instance EC2. J'ai du mal à obtenir la commande sync pour exclure les répertoires de la synchronisation. La documentation donne l'impression qu'il est facile d'utiliser l'option '--exclude'. Cependant, je n'ai pas pu le faire fonctionner.

J'utilise la dernière version disponible via yum:

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

Voici la commande avec laquelle j'ai des problèmes:

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

Je souhaite exclure tous les dossiers nommés '.git' et tous les fichiers de ces dossiers de la synchronisation.

A en juger par la documentation Le modèle que j'ai donné à «--exclure» devrait fonctionner. Cependant, l'intégralité du répertoire .git et tous ses fichiers sont toujours synchronisés. Voici un exemple de ligne de sortie:

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

J'ai essayé les commandes suivantes, qui n'ont pas toutes exclu les dossiers nommés '.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/.*'

Et, ce qui est peut-être le plus troublant, cette commande n'exclut rien de la synchronisation:

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

En fait, il semble que '--exclude' ne fonctionne que si le globbing se trouve sur le côté droit d'un chemin absolu. Par exemple, cela exclut le dossier .git dans /var/www/site/.git:

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

mais cela n'exclut rien:

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

J'ai de nombreux sites dans / var / www et de nombreux dossiers que je souhaite exclure de la synchronisation tels que '.git', 'analysé', 'cache', etc. Ce serait terrible de devoir fournir des chemins absolus à chacun d'eux .

J'espère qu'il y a quelque chose de simple que je fais mal ici. Merci à tous pour votre aide.

user158845
la source

Réponses:

2

Le problème de github mentionné est fermé et la commande de synchronisation permet d'exclure maintenant .

J'ai essayé et ajouté des --exclude ".git/*"œuvres.

Notez que la fin /*est obligatoire.

Luciano
la source