2015-08-31 7 views
0

У меня есть 2 ведра, ковш A и ковш B. Bucket A содержит файлы Javascript и bucket B содержит смесь javascript и других типов файлов. Я пытаюсь сделать синхронизацию только JS файлов из ковша A в B.Amazon S3 sync Удаление исключенных файлов

Я использую следующий:

AWS s3 синхронизация s3: // Ведро-а s3: // ковш-б --delete --exclude «*» --include «* .js»

Я предполагал, что это оставит ведро B с точной копией всех файлов JS. Однако вышеприведенная команда начнет удаление всех файлов, не являющихся Js в Bucket B.

Когда я запускаю следующую команду:

AWS s3 синхронизации. s3: // ковшеобразные-б --delete --exclude "*" --include "* .js"

С текущей директории, содержащей копию ведро А, ведро B будет иметь одни и те же файлы JS так как файлы A и non js не будут затронуты.

Почему эта команда функционирует по-разному при синхронизации локально с ведром по сравнению с ведром в ковш?

EDIT: Добавлен ввод/вывод CLI для воспроизведения проблемы.

Darrrens-MBP:testFolder darren$ aws --version 
aws-cli/1.7.4 Python/2.7.9 Darwin/14.4.0 
Darrrens-MBP:testFolder darren$ aws s3 ls s3://tmp-test-bucket-a 
2015-09-01 11:40:44   2 test1.js 
2015-09-01 11:40:43   2 test2.js 
Darrrens-MBP:testFolder darren$ aws s3 ls s3://tmp-test-bucket-b 
2015-09-01 11:39:32   2 test1.js 
2015-09-01 11:39:34   2 test2.js 
2015-09-01 11:39:34   3 test3.php 
Darrrens-MBP:testFolder darren$ ls 
test1.js test2.js 
Darrrens-MBP:testFolder darren$ aws s3 sync . s3://tmp-test-bucket-b --delete --exclude "*" --include "*.js" 
Darrrens-MBP:testFolder darren$ aws s3 sync s3://tmp-test-bucket-a s3://tmp-test-bucket-b --delete --exclude "*" --include "*.js" 
delete: s3://tmp-test-bucket-b/test3.php 
copy: s3://tmp-test-bucket-a/test2.js to s3://tmp-test-bucket-b/test2.js 
copy: s3://tmp-test-bucket-a/test1.js to s3://tmp-test-bucket-b/test1.js 
+0

Мне не удалось воспроизвести результаты. Не могли бы вы показать некоторые «до и после» списки источника и назначения вместе с командами 'sync', чтобы мы могли попытаться воспроизвести ситуацию? Кроме того, стоит проверить, что вы используете последнюю версию [AWS Command Line Line Interface (CLI)] (http://aws.amazon.com/cli/). –

+0

Привет, Джон, спасибо, что вернулись ко мне. Я обновил вопрос, включив пример проблемы. Как вы можете видеть, у меня одинаковый контент в bucket a, как в локальном каталоге. Почему результат синхронизации отличается? Я использую OSX, но у меня был тот же результат на ubuntu 12.04 – DarrenCibis

+1

Хорошо, я могу воспроизвести поведение, которое вы испытали. Нет удаления с локального компьютера, но удаление между ведрами S3. Я поднял [проблему против проекта CLI AWS] (https://github.com/aws/aws-cli/issues/1481). –

ответ

0

Если я правильно понял проблему правильно, --delete удаляет файлы, которые существуют в пункте назначения, но не в источнике во время синхронизации, которые являются те, которые вы exclude.better использовать AWS s3 ф вместо AWS s3 синхронизации.

Check AWS CLI reference

+0

Проблема с использованием cp заключается в том, что он будет копировать каждый файл каждый раз, с тысячами файлов это нецелесообразно. Мы закончили тем, что изменили наше решение, чтобы синхронизация не была необходимой. – DarrenCibis

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