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

Использование aws cli sync, включение и исключение с опцией удаления

aws s3 sync /WordProcessing/DOCUMENTS s3://mybigbucket --delete --include "*" --exclude ".DS_Store"

Если каким-то образом .DS_Store попал в AWS S3 mybigbucket (из предыдущей резервной копии), использование указанной выше команды не удаляет файлы .DS_Store из места назначения, даже если я вручную:

rm /WordProcessing/DOCUMENTS/.DS_Store

на файловом сервере.

Мне не хватает логики того, как работает синхронизация aws s3? Мне кажется, он должен удалить .DS_Store из места назначения в ведре S3, если он был удален из источника на файловом сервере.

Если я сниму --exclude и снова запустил команду, он удалит .DS_Store из места назначения, когда он будет удален с файлового сервера. Это не кажется правильным.

Я ошибаюсь? Я хочу синхронизировать файловый сервер каждую ночь, чтобы он не передавал в корзину S3 тысячи файлов .DS_Store.

Похоже, вы изменили свои параметры после первой синхронизации.

Когда вы используете --exclude он исключает все файлы или объекты из команды, которая соответствует указанному шаблону. Если он совпадает, он проигнорирует любые действия для этого шаблона.

Если файл (.DS_Store) уже находится в корзине s3 и --exclude вариант соответствует ему, он проигнорирует его. Изменен ли он или исчез из источника данных.

Ты можешь сделать:

  1. Используйте --exclude для первой и всех последующих синхронизаций (вначале это отключает файл s3)
  2. Сначала удалите файл с локального хоста, синхронизируйте, затем вставьте исключение (это удалит файл, если он находится в s3, а затем предотвратит его добавление)
  3. Поместите --exclude и вручную удалите файл из s3 (это предотвратит повторное добавление файла в s3)

Ссылка

AWS cli - синхронизация