2015-06-02 5 views
9

aws s3 sync --delete удалены некоторые новые файлы.AWS S3 sync - удалять новые файлы локально

Например:

Существует файл в ведре - S3://my-bucket/images/1.jpg

Затем я загрузил файл на сервер: 2.jpg

Есть 2 файлов на сервере: 1.jpg и 2.jpg

Начало работы синхронизации cronjob:

aws s3 sync s3://my-bucket/ ./ --delete 
aws s3 sync ./ s3://my-bucket/ --delete 

Почему мы добавляем --delete - мы хотим удалить файлы в s3 и синхронизировать их с сервером.

Мы загрузим файлы на сервер и удалим файлы в s3.

Есть ли способ исправить это?

ответ

13

По умолчанию команда aws sync не удаляет файлы. Он просто копирует новые или измененные файлы в пункт назначения.

Использование опции --delete удаляет файлы, существующие в пункте назначения, но не в источнике.

Таким образом, если источник содержит: 1.jpg и 2.jpg и назначения содержит 1.jpg, 2.jpg и 3.jpg, затем с помощью --delete опции будут удалены 3.jpg от пункта назначения.

Я вижу, что вы используете команду sync в обоих направлениях. Ваша первая команда (которая синхронизирует S3 с локальным каталогом) удалит любые локальные файлы, которые не находятся в S3.

Если ваша цель состоит в том, чтобы скопировать все локальные файлы в S3 и все файлы S3 в локальный каталог, без удаления каких-либо файлов, то не используйте --delete опцию.

+0

Привет, Моя цель - удалить несколько старых файлов в s3-ведро, тогда я запустил эту команду с помощью --delete и хочу, чтобы она также удаляла мои локальные файлы. И тогда я могу загрузить некоторые новые файлы с локального на s3 с помощью команды aws s3 sync. Можно ли это сделать? –

+2

Да, вы можете это сделать. Просто имейте в виду, что '--delete' удалит файлы в месте назначения, которые не находятся в исходном коде. Таким образом, используйте его только из «хозяина». Он не будет удалять файлы из локального местоположения (источника). Просто поиграйте с порядком, в котором вы запускаете команды, чтобы получить желаемое поведение. –

Смежные вопросы