Скопировать структуру каталогов без изменений в ведро AWS S3

Я хочу использовать AWS S3 cli для копирования полной структуры каталога в ведро S3.

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

Используемая мной команда:

aws s3 cp --recursive ./logdata/ s3://bucketname/

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

21 голос | спросил agentv 15 AMpWed, 15 Apr 2015 00:54:07 +030054Wednesday 2015, 00:54:07

5 ответов


23

Я считаю, что синхронизация - это метод, который вы хотите. Вместо этого попробуйте:

aws s3 sync ./logdata s3://bucketname/
ответил Chad Smith 15 AMpWed, 15 Apr 2015 01:52:07 +030052Wednesday 2015, 01:52:07
7

Я столкнулся с этой ошибкой при использовании любой из этих команд.

$ aws s3 cp --recursive /local/dir s3://s3bucket/
OR
$ aws s3 sync /local/dir s3://s3bucket/

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

Наконец, s3cmd работал как шарм.

s3cmd sync /local/dir/ --delete-removed s3://s3bucket/ --exclude="some_file" --exclude="*directory*"  --progress --no-preserve

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

ответил vikas027 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 29 Sep 2015 06:58:49 +0300 2015, 06:58:49
2

Используйте следующий скрипт для копирования структуры папок:

s3Folder="s3://xyz.abc.com/asdf";

for entry in "$asset_directory"*
do
    echo "Processing - $entry"
    if [[ -d  $entry ]]; then
        echo "directory"
        aws s3 cp  --recursive "./$entry" "$s3Folder/$entry/"
    else
        echo "file"
        aws s3 cp "./$entry" "$s3Folder/"
    fi
done
ответил Shishir Arora 17 42016vEurope/Moscow11bEurope/MoscowThu, 17 Nov 2016 14:26:20 +0300 2016, 14:26:20
2

Следующие работали для меня:

aws s3 cp ~/this_directory s3://bucketname/this_directory --recursive

AWS затем «сделает» this_directory и скопирует в него все локальное содержимое.

ответил Michael Silverstein 20 WedEurope/Moscow2017-12-20T21:56:16+03:00Europe/Moscow12bEurope/MoscowWed, 20 Dec 2017 21:56:16 +0300 2017, 21:56:16
1

В качестве альтернативы вы также можете попробовать мини-клиент aka mc

$ mc cp Desktop/test/test/test.txt s3/miniocloud/Desktop/test/test/

Надеюсь, что это поможет.

PS: Я являюсь одним из участников проекта.

ответил koolhead17 4 Jpm1000000pmMon, 04 Jan 2016 12:06:28 +030016 2016, 12:06:28

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132