Ежедневная синхронизация S3 между двумя сегментами на основе даты - PullRequest
0 голосов
/ 12 марта 2019

Я выполняю синхронизацию S3 от источника к месту назначения и хочу синхронизировать только определенную папку каждый день в зависимости от даты.В настоящее время источник S3 bucket имеет формат S3: // bucket / year / month / day / min.Я запустил приведенную ниже команду синхронизации S3 для первой загрузки, которая заняла 4 часа:

aws s3 sync s3://source-bucket/ s3://destination-bucket 

Однако я хочу сделать что-то подобное, чтобы сэкономить время:

aws s3 sync s3://source-bucket/year/month/day s3://destination-bucket/year/month/day

Вопрос в том --> Есть ли способ передать параметры каждой части года, месяца, дня, чтобы она была автоматизирована?Например, если я запускаю сценарий сегодня, он должен запуститься:

aws s3 sync s3://source-bucket/2019/03/11 s3://destination-bucket/2019/03/11

Моя сценарий-оболочка не настолько сильна, поэтому пытаюсь выяснить, есть ли хороший способ сделать это.

Ответы [ 2 ]

1 голос
/ 13 марта 2019

Один из вариантов - извлечь путь к «последнему файлу» из исходной корзины и использовать его для копирования в место назначения.

Эта команда предоставит ключ файла, который был последний раз изменен:

aws s3api list-objects-v2 --bucket my-bucket --query 'sort_by(Contents, &LastModified)[-1].Key' --output text

Затем можно манипулировать возвращаемым значением, удалив имя файла и использовать оставшийся путь в команде aws s3 sync.

1 голос
/ 13 марта 2019

понял это.Вот что я написал:

 export current_date=$(date +%Y%m%d)
 export previous_date=
 export Year=$(date +%Y)
 export Month=$(date +%m)
 export day=$(date --date='1 day ago' '+%d') 
#Taking yesterday's date
 export SOURCE_S3='s3://Source/'$Year/$Month/$day/
 export DESTINATION_S3='s3://DESTINATION/'$Year/$Month/$day/

echo 'aws s3 sync' $SOURCE_S3 $DESTINATION_S3
aws s3 sync $SOURCE_S3  $DESTINATION_S3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...