web-dev-qa-db-ja.com

s3ストレージから特定の日付のファイルのみをコピーする

数百のファイルを含む特定のバケットから、今日からの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
stdcerr

それは2番目のaws s3syncを使用します。代わりにcpを試してください。また、「grep」と「awk」をマージすることもできます。

$ aws s3 ls s3://cve-etherwan/  --recursive | awk '/^2018-11-06/{system("aws s3 cp s3://cve-etherwan/$4 .") }'
1
MLu

これは私のために働いたものです

  • 時間制限を追加しました。ここでは、12/12/19の8:00から8:30を選択しています。
  • awkの部分を少し変更し、タイプミスを削除しました
  • awkからsystemn回呼び出す代わりに、テキスト出力を作成し、それを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
0
dirkjot