Я пытаюсь выяснить, что команда s3cmd будет загружать файлы из ведра по дате, так например, у меня есть ведро с именем «test», и в этом ковше есть разные файлы из разных дат. Я пытаюсь получить файлы, которые были загружены вчера. какова была бы команда?ищет команду загрузки s3cmd на определенную дату
0
A
ответ
0
Нет единой команды, которая позволит вам это сделать. Вы должны написать сценарий, что-то вроде этого. Или используйте SDK, который позволяет вам это делать. Ниже сценария - пример скрипта, который будет получать файлы S3 за последние 30 дней.
#!/bin/bash
# Usage: ./getOld "bucketname" "30 days"
s3cmd ls s3://$1 | while read -r line; do
createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
olderThan=`date -d"-$2" +%s`
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk {'print $4'}`
echo $fileName
if [[ $fileName != "" ]]
then
s3cmd get "$fileName"
fi
fi
done;
0
Мне нравится s3cmd но работать с командой в одной строке, я предпочитаю выход JSon АМС кли и процессор jq JSon
Команда будет выглядеть
aws s3api list-objects --bucket "yourbucket" |\
jq '.Contents[] | select(.LastModified | startswith("yourdate")).Key' --raw-output |\
xargs -I {} aws s3 cp s3://yourbucket/{} .
в основном то, что сценарий
- все объекты из данного ковша
- (интересная часть) jq проанализирует массив
Contents
и выделит элемент, где значениеLastModified
начнется с вашего шаблона (вам нужно будет изменить), получитеKey
объекта s3 и добавьте--raw-output
, чтобы он разделил цитату из значения - передать результат на команду AWS копию, чтобы загрузить файл с s3
если вы хотите автоматизировать немного дальше, вы можете получить вчера из командной строки
для Mac OS
$ export YESTERDAY=`date -v-1w +%F`
$ aws s3api list-objects --bucket "ariba-install" |\
jq '.Contents[] | select(.LastModified | startswith('\"$YESTERDAY\"')).Key' --raw-output |\
xargs -I {} aws s3 cp s3://ariba-install/{} .
для ОС Linux (или другого вкуса Баша, что я не знаком)
$ export YESTERDAY=`date -d "1 day ago" '+%Y-%m-%d' `
$ aws s3api list-objects --bucket "ariba-install" |\
jq '.Contents[] | select(.LastModified | startswith('\"$YESTERDAY\"')).Key' --raw-output |\
xargs -I {} aws s3 cp s3://ariba-install/{} .
Теперь вы получите идею, если вы хотите изменить переменную YESTERDAY
иметь различный вид даты
Как организована ведро/папка? Он плоский или по дате? – helloV
Файл, размер, тип, последний модифицированный (год-месяц-дата, час-минута-секунда), класс Sotrage –
, если структура вашего ведра организована в соответствии с датами, можно перебирать структуру папок и извлекать файлы. (Это относится к журналам AWS S3 CloudTrail) – Ali