![s3 저장소에서 특정 날짜의 파일만 복사](https://linux55.com/image/141632/s3%20%EC%A0%80%EC%9E%A5%EC%86%8C%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%EB%82%A0%EC%A7%9C%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EB%A7%8C%20%EB%B3%B5%EC%82%AC.png)
오늘부터 100개의 파일이 포함된 버킷의 S3에서 파일만 복사하고 싶습니다. 다음을 시도했지만 $ aws s3 ls s3://cve-etherwan/ --recursive --region=us-west-2 | grep 2018-11-06 | awk '{system("aws s3 sync s3://cve-etherwan/$4 . --region=us-west-2") }'
제대로 작동하지 않았고 다른 날짜에 대한 파일도 받았습니다. 이 작업을 올바르게 수행하려면 어떻게 해야 합니까?
답변1
두 번째에서는 .Try 를 aws s3
사용하기 때문입니다 . "grep"과 "awk"를 함께 결합할 수도 있습니다.sync
cp
$ aws s3 ls s3://cve-etherwan/ --recursive | awk '/^2018-11-06/{system("aws s3 cp s3://cve-etherwan/$4 .") }'
답변2
이것은 나에게 효과적입니다
- 시간 제한이 추가되었습니다. 여기서는 19/12/12 8:00 ~ 8:30을 선택합니다.
- awk 부분을 약간 수정하고 철자 오류를 제거했습니다.
- 전화하는 대신
system
Nawk의 시간, 텍스트 출력을 생성하고 bash를 통해 파이프
예, Bash에서 파이프를 사용할 때는 주의하세요 :-)
aws s3 ls --recursive s3://cve-etherwan/
| awk '/^2019-12-12 08:[0-3]/{
print "aws s3 cp s3://cve-etherwan/"$4" ."}'
| bash
답변3
MLu의 답변은 제게는 효과가 있었지만 Amazon Linux 2에서는 4달러를 내고 도망쳐야 했습니다.
aws s3 ls s3://my-files --recursive --region=eu-west-1 |
awk '/^2021-01/{system("aws s3 cp s3://my-files/" $4 " .")}'
그리고
"aws s3 cp s3://my-files/$4 ."
대신에"aws s3 cp s3://my-files/" $4 " ."
awk
문자열은 기본적으로 연결됩니다.