簡體   English   中英

如何按日期將文件子集從一個 S3 存儲桶文件夾復制到另一個

[英]How to copy subset of files from one S3 bucket folder to another by date

我在 AWS S3 中有一個存儲桶。 存儲桶中有兩個文件夾 - folder1 和 folder2。 我想將文件從 s3://myBucket/folder1 復制到 s3://myBucket/folder2。 但有一個轉折點:我只想復制在某個日期之后創建的文件夾 1 中的項目。 我想做這樣的事情:

aws s3 cp s3://myBucket/folder1 s3://myBucket/folder2 --recursive --copy-source-if-modified-since 
2020-07-31

沒有aws-cli命令可以在一行中為您完成此操作。 如果文件數量相對較少,比如十萬個或更少,我認為編寫 bash 腳本或使用您最喜歡的語言的 AWS SDK 是最簡單的,它列出了第一個文件夾、創建日期的過濾器並發出復制命令.

如果文件數量很大,您可以創建一個S3 清單,該清單將為您提供存儲桶中所有文件的列表,您可以從中下載並生成復制命令。 當有很多很多文件時,這將比列出更便宜和更快。


像這樣的事情可能是一個開始,使用@jarmod 關於--copy-source-if-modified-since

for key in $(aws s3api list-objects --bucket my-bucket --prefix folder1/ --query 'Contents[].Key' --output text); do
  relative_key=${key/folder1/folder2}
  aws s3api copy-object --bucket my-bucket --key "$relative_key" --source-object "my-bucket/$key" --copy-source-if-modified-since THE_CUTOFF_DATE
done

它將單獨復制每個對象,如果有很多對象,它會相當慢,但至少可以從某個地方開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM