2016-09-13 9 views
0

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

+0

Как организована ведро/папка? Он плоский или по дате? – helloV

+0

Файл, размер, тип, последний модифицированный (год-месяц-дата, час-минута-секунда), класс Sotrage –

+0

, если структура вашего ведра организована в соответствии с датами, можно перебирать структуру папок и извлекать файлы. (Это относится к журналам AWS S3 CloudTrail) – Ali

ответ

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/{} . 

в основном то, что сценарий

  1. все объекты из данного ковша
  2. (интересная часть) jq проанализирует массив Contents и выделит элемент, где значение LastModified начнется с вашего шаблона (вам нужно будет изменить), получите Key объекта s3 и добавьте --raw-output, чтобы он разделил цитату из значения
  3. передать результат на команду 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 иметь различный вид даты