Назад | Перейти на главную страницу

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

Я пытаюсь сделать резервную копию своего экземпляра 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' и т. Д. Было бы ужасно предоставлять абсолютные пути ко всем из них .

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

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

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

Обратите внимание, что окончание /* необходимо.

У меня тоже сломано - и уже есть открытая проблема для этого https://github.com/aws/aws-cli/issues/434. Это ошибка.