2017-02-04 4 views
1

J'utilise ce cli:AWS S3 cli: exclude ne fonctionne pas

aws s3 sync /home/me s3://meserver/test_me --exclude "*.o" --exclude "error_log" --exclude "access_log" --exclude "*.tgz" --exclude "*.tar.gz" --exclude "*.zip" --exclude "*.log" --exclude "*.tar" 

Le .zip et le genre excluent très bien. Mais error_log ne l'est pas.

upload: ../../home/me/log/error_log to s3://meserver/testme/log/error_log 

Que manque-t-il? C'est le nom de fichier exact.

+2

Pouvez-vous essayer 'exclude "*/error_log"' – franklinsijo

Répondre

1

Votre commande dit: --exclude "error_log"

Cependant, l'objet copié était log/error_log, parce qu'il ne correspond pas à error_log.

S'il vous plaît noter que la commande utilise des chemins et des préfixes, plutôt que des noms de fichiers. Le key d'un objet stocké dans Amazon S3 comprend en réalité le chemin d'accès complet ainsi que le nom. Ainsi, error_log doit être référencé dans son intégralité.

Vous pouvez exclure le fichier en utilisant --exclude "log/error_log" ou, si vous souhaitez exclure tous ces fichiers, utilisez --exclude "*/error_log".

+0

Oui. Ajouter '* /' devant votre motif est la solution. Je pensais que 'aws s3 sync' était supposé fonctionner comme rsync, ce qui ne nécessiterait pas le '* /'. La documentation d'Amazon devrait donner un exemple pour le rendre clair. – nmgeek

0

Essayez:

aws s3 sync /home/me s3://meserver/test_me --exclude "\*.o" --exclude "\*/error_log" --exclude "access_log" --exclude "\*.tgz" --exclude "\*.tar.gz" --exclude "\*.zip" --exclude "\*.log" --exclude "\*.tar"