跳至內容

如何將大量資料從一個 Amazon S3 儲存貯體傳輸到另一個儲存貯體?

2 分的閱讀內容
0

我想將至少 1 TB 的資料從一個 Amazon Simple Storage Service (Amazon S3) 儲存貯體傳輸到另一個儲存貯體。

解決方法

若要將大量資料從一個 Amazon S3 儲存貯體傳輸到另一個儲存貯體,請使用下列其中一種方法:

  • AWS Command Line Interface (AWS CLI)
  • 跨區域複寫 (CRR) 或相同區域複寫 (SRR)
  • Amazon S3 Batch Operations
  • S3DistCP 搭配 Amazon EMR
  • AWS DataSync

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

AWS CLI

為了縮短資料傳輸時間,請將傳輸作業分割為多個互斥的作業。例如,使用 AWS CLI 執行多個平行作業,如 aws s3 cpaws s3 mvaws s3 sync。當您使用 --exclude 和 --include 參數根據檔案名稱篩選作業時,您可以建立更多上傳執行緒。

**注意:**由於 --exclude--include 參數在用戶端處理,因此本機上的資源可能會影響作業的效能。

若要將大量資料從一個儲存貯體複製到另一個儲存貯體,請執行以下命令:

**注意:**檔案名稱以數字開頭。

  1. 執行以下 cp 命令,以複製名稱開頭為數字 0 到 4 的檔案:

    aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"
    
  2. 在第二個 AWS CLI 作業上執行以下 cp 命令,以複製名稱開頭為數字 5 到 9 的檔案:

    aws s3 cp s3://source-awsexamplebucket/ s3://destination-awsexamplebucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"
    

您也可以自訂以下 AWS CLI S3 組態值來縮短資料傳輸時間:

  • 使用 multipart_chunksize 設定 AWS CLI 在個別檔案的分段上傳中,每個上傳部分的大小。您可以將較大的檔案拆分為較小的部分,以加快上傳速度。 
    **注意:**對於分段上傳,您最多可以將單一檔案分成 10,000 個不同的部分上傳。確認您設定的區塊大小能夠平衡部分檔案大小和部分數量。
  • 使用 max_concurrent_requests 設定您一次可以傳送到 Amazon S3 的請求數。預設值為 10,不過您可以將其增加到更高的值。確認您的機器是有足夠的資源來支援最大數量的並行請求。

CRR 或 SSR

在來源儲存貯體上設定 CRRSSR,以允許 Amazon S3 自動將新物件從來源儲存貯體複寫到目的地儲存貯體。若要篩選 Amazon S3 複寫的物件,請使用前置詞或標籤。如需詳細資訊,請參閱複寫組態檔案元素

設定複寫後,Amazon S3 只會將新物件複寫到目的地儲存貯體,而不會將現有物件複寫到目的地儲存貯體。有如需詳細資訊,請參閱使用批次來複寫現有物件複寫組態不會複寫哪些內容?

Amazon S3 Batch Operations

您可以使用 Amazon S3 Batch Operations 透過單一請求複製多個物件。建立批次作業時,您可以使用 Amazon S3 庫存清單報告來指定 Amazon S3 對其執行作業的物件。或者,您可以使用 CSV 資訊清單來指定批次作業。然後,Amazon S3 Batch Operations 會呼叫 API 以執行作業。

批次作業完成後,您會收到通知和選擇性完成報告

S3DistCp 搭配 Amazon EMR

Amazon EMR 上的 S3DistCp 作業可以跨 Amazon S3 儲存貯體平行複製大量物件。S3DistCp 會先將檔案從來源儲存貯體複製到 Amazon EMR 叢集中的工作節點。然後,該作業會將檔案從工作節點寫入目的地儲存貯體。如需詳細資訊,請參閱在 Amazon EMR 上使用 S3DistCp 在 HDFS 和 Amazon S3 之間有效移動資料的七個技巧

**重要:**由於您必須將 Amazon EMR 與 S3DistCp 一起使用,因此請務必查看 Amazon EMR 定價

AWS DataSync

若要使用 AWS DataSync 將大量資料從一個 Amazon S3 儲存貯體移至另一個儲存貯體,您必須建立傳輸位置。對於一般用途儲存貯體,請參閱為 Amazon S3 一般用途儲存貯體建立傳輸位置。對於 Outpost 儲存貯體,請參閱為 S3 on Outposts 儲存貯體建立傳輸位置

注意:

相關資訊

如何識別 Amazon S3 中的資料傳輸成本?

AWS 官方已更新 9 個月前