簡體   English   中英

在 AWS S3 上批量移動文件

[英]Move files in bulk on AWS S3

我有一個 S3 存儲桶,它的目錄結構包含輸入和 output 文件夾。 The files are stored in the input directory using a tool that uses java API to communicate with S3, but in the case of moving the files from the input to the output directory we need to do it using other alternatives (even if it is a java class 由我們實現)。

我需要知道的是是否可以在給定要移動的文件列表的情況下批量移動文件,而不必逐個文件地調用 unix s3 cli 中的 mv 命令,這似乎很慢。 我使用 java 檢查了有關 S3 上批量刪除的一些信息,但如果有的話,我需要更多的專業意見。

我願意接受有關可以使用 API 的語言的建議來滿足我的目的。

PS:關於要移動的文件列表的問題很關鍵,因為使用我們在 unix s3 cli 中可用的通常包含/排除來實現獲取這些文件的標准是不可能的

提前致謝

*********** 編輯 *********

剛剛發現了設置非常簡單的boto3 API。 只需將此信息和標簽添加到主題,以便對此有更多見解。 Tks

Amazon S3 中沒有“移動”命令。 相反,需要復制對象,然后刪除源文件。 這是 AWS CLI 在執行aws s3 mv時實際執行的操作。

AWS CLI 的偉大之處在於它並行發出復制命令,這大大減少了移動大量對象的時間。 事實上,Amazon S3 CopyObject API 調用一次只接受一個 object。 因此,需要並行發出此類命令以更快地移動它們。

另一種方法是使用S3 Batch Operations 您可以使用Put object 復制

Put object 復制操作復制清單中指定的每個 object 您可以將對象復制到同一 AWS 區域中的不同存儲桶或不同區域中的存儲桶。 S3 批量操作支持通過 Amazon S3 提供的大多數用於復制對象的選項。 這些選項包括設置 object 元數據、設置權限和更改對象的存儲 class。

可以在 CSV 文件中指定要復制的對象列表。 然后,您需要在復制后刪除對象,這可以通過aws cli delete-objects和對象列表來完成。

如果需要並行調用多個文件的 aws cli,可以在 linux 上使用並行:

find . -name *.jpg | parallel aws s3 mv s3://bucketA/{} s3://bucketB/

不過,您需要安裝它。 例如:

sudo apt install parallel

或者

sudo yum install parallel

暫無
暫無

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

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