仅从 s3 存储复制特定日期的文件

仅从 s3 存储复制特定日期的文件

我只想从 S3 复制今天起包含 100 个文件的某个存储桶中的文件。我尝试了以下操作:$ 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

那是因为在第二个aws s3你使用sync.尝试cp一下。您也可以将“grep”和“awk”合并在一起。

$ 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 n来自 awk 的时间,创建一个文本输出并通过 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默认情况下将连接字符串。

相关内容