S3 Spaces에서 최신 150개 파일을 다운로드하고 싶습니다. 이 명령을 사용했습니다
s3cmd get s3://obs/site1/uploads/large/ /home/ankit -r | tail -n150
하지만 내가 원하는 효과는 없습니다. 대신 모든 파일을 다운로드하기 시작합니다.
예를 들어: 내가 명령한다면:
입력하다
s3cmd ls s3://obs/site1/uploads/large/
산출
2020-04-30 20:04 0 s3://obs/site1/uploads/large/
2020-04-30 20:04 1401551 s3://obs/site1/uploads/large/501587671885rwk.jpg
2020-04-30 20:04 268417 s3://obs/site1/uploads/large/501587676002xe2.jpg
2020-04-30 20:04 268417 s3://obs/site1/uploads/large/501587677157ssj.jpg
2020-04-30 20:04 268417 s3://obs/site1/uploads/large/501587747245hea.jpg
2020-05-01 05:23 399636 s3://obs/site1/uploads/large/87429599_1412258992269430_5992557431891165184_o.jpg
마지막 파일(최신 파일)만 다운로드하고 싶습니다.
2020-05-01 05:23 399636 s3://obs/site1/uploads/large/87429599_1412258992269430_5992557431891165184_o.jpg
최신 파일을 나열할 수 있지만 최신 파일을 다운로드할 수는 없습니다. 내가 나열하는 내용은 다음과 같습니다.
s3cmd ls s3://obs/site1/uploads/large/ | tail -n1
출력: 2020-05-01 05:23 399636
s3://obs/site1/uploads/large/87429599_1412258992269430_5992557431891165184_o.jpg
그럼 이 최신 파일만 다운로드 받는 명령어를 알려주세요.
답변1
모든 조각이 제 위치에 있으므로 함께 연결하기만 하면 됩니다.
이 명령은 원하는 마지막 파일을 제공하지만 결과의 첫 번째 부분을 잘라야 합니다.
s3cmd ls s3://obs/site1/uploads/large/ | tail -n1
2020-05-01 05:23 399636 s3://obs/site1/uploads/large/87429599_1412258992269430_5992557431891165184_o.jpg
s3cmd ls s3://obs/site1/uploads/large/ | sed -rn 's!^.*(s3://)!\1!p' | tail -n1
s3://obs/site1/uploads/large/87429599_1412258992269430_5992557431891165184_o.jpg
이 명령은 파일을 다운로드합니다
s3cmd get s3://obs/site1/uploads/large/some_file_or_other /home/ankit
그래서 당신은 그것들을 하나로 합쳤습니다.
file=$(s3cmd ls s3://obs/site1/uploads/large/ | sed -rn 's!^.*(s3://)!\1!p' | tail -n1)
s3cmd get "$file" /home/ankit
s3cmd ls
질문의 또 다른 부분에서 여러 파일을 다운로드하는 것에 대해 논의했으므로 다음은 마지막 150개 파일을 순서대로 가져오는 이 방법의 확장입니다 .
s3cmd ls s3://obs/site1/uploads/large/ |
tail -n150 |
while read -r date time size s3path
do
s3cmd get "$s3path" /home/ankit
done
답변2
DATE=$(date +%Y-%m-%d)
FILE="$(aws s3api list-objects --bucket bucket_name --query 'Contents[?LastModified>= `'"$DATE"'`][].{Key: Key}' --output=text| grep file_name)"
aws s3 cp s3://bucket_name/${FILE} .