Я пытаюсь использовать «aws s3 sync» на моем экземпляре EC2. Параметр --exclude не работает?

8

Я пытаюсь сделать резервную копию своего экземпляра EC2 на S3, используя официальные инструменты Amazon, которые предварительно установлены на экземпляре EC2. У меня проблемы с получением команды синхронизации для исключения каталогов из синхронизации. Документация делает его звук , как это легко с помощью «--exclude» вариант. Однако я не смог заставить его работать.

Я использую последнюю версию, доступную через yum:

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

Это команда, с которой у меня проблемы:

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

Я хочу исключить из синхронизации все папки с именем «.git» и все файлы в этих папках.

Судя по документации шаблон, который я дал '--exclude', должен работать. Однако весь каталог .git и все его файлы по-прежнему синхронизируются. Вот пример строки вывода:

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

Я попробовал следующие команды, которые не смогли исключить папки с именем .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/.*'

И, пожалуй, самое неприятное, эта команда ничего не исключает из синхронизации:

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

На самом деле, похоже, что --exclude работает только в том случае, если сглаживание находится на правой стороне абсолютного пути. Например, это исключает папку .git в /var/www/site/.git:

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

но это ничего не исключает:

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

У меня есть много сайтов в / var / www и много папок, которые я хочу исключить из синхронизации, такие как '.git', 'parsed', 'cache' и т. Д. Было бы ужасно иметь абсолютные пути для всех них. ,

Я надеюсь, что здесь есть что-то простое, что я делаю неправильно. Спасибо за вашу помощь.

user158845
источник

Ответы:

2

Упомянутая проблема с github закрыта, и команда sync теперь позволяет исключить .

Я пробовал и добавлял --exclude ".git/*"работы.

Обратите внимание, что окончание /*обязательно.

Лучано
источник