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