跳至內容

如何將 Amazon EBS 快照資料複製到 Amazon S3 儲存貯體?

2 分的閱讀內容
0

我想將 Amazon Elastic Block Store (Amazon EBS) 快照中的資料複製到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

簡短說明

您無法將 Amazon EBS 快照直接複製到您管理的 Amazon S3 儲存貯體。若要將快照資料複製到 S3 儲存貯體,請從快照建立磁碟區。接著,將磁碟區連接至 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體。最後,使用 AWS Command Line Interface (AWS CLI) 傳輸資料。

若要儲存不常存取的快照,請參閱封存 Amazon EBS 快照。

解決方法

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

重要: 最佳實務是使用加密保護資料。請確認 S3 儲存貯體具有正確的存取控制設定。

若要將 Amazon EBS 快照的內容複製到 S3 儲存貯體,請完成以下步驟:

  1. 從快照建立 Amazon EBS 磁碟區。

  2. 在與磁碟區相同的可用區域中啟動 Amazon EC2 Linux 執行個體。

  3. 將磁碟區作為次要磁碟區連接至執行個體。

  4. 使用 SSH 或 AWS Systems Manager 的 Session Manager 功能連線至 Linux 執行個體。

  5. 授予 EC2 執行個體存取 S3 儲存貯體的權限。

  6. 若要查看可用的磁碟裝置,請執行以下命令:

    lsblk

    輸出範例:

    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0   15G  0 disk
    └─xvda1 202:1    0   15G  0 part /
    xvdf    202:0    0   15G  0 disk
    └─xvdf1 202:1    0   15G  0 part

    注意: Nitro 型執行個體會將Amazon EBS 磁碟區顯示為 NVMe 區塊型儲存設備,磁碟名稱為 nvme[0-26]n1。
    Nitro 型執行個體的輸出範例:

    NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    nvme0n1       259:0    0    8G  0 disk
    └─nvme0n1p1   259:1    0    8G  0 part /
    └─nvme0n1p128 259:2    0    1M  0 part
    nvme1n1       259:3    0  100G  0 disk
    └─nvme1n1p1   259:4    0  100G  0 part
  7. 若要將磁碟區掛載至執行個體,請執行以下命令:

    sudo mount /dev/xvdf1 /mnt

    注意: 請將 /dev/xvdf1 替換為磁碟區的分區名稱。

  8. 開啟 Extra Packages for Enterprise Linux (EPEL) 儲存庫,然後安裝 pv 套件,以便在建立 tar 封存檔時監控進度。若要安裝 pv,請執行以下命令:

    sudo $(command -v dnf || command -v yum || command -v apt) install pv
  9. 若要將 Amazon EBS 磁碟區資料複製到 S3 儲存貯體,請執行以下命令:

    SIZE=$(( $(sudo du -sk /mnt | awk '{print $1}') * 1024 ))
    
    sudo tar c /mnt \
        | pv -s "$SIZE" \
        | gzip \
        | tee >(md5sum > backup1.md5) \
        | aws s3 cp - "s3://MY-BUCKET/backup1.tar.gz" \
            --expected-size "$SIZE" \
            --storage-class STANDARD

    注意: 請將 MY-BUCKET 替換為 S3 儲存貯體的名稱,並將 backup1 替換為檔案名稱。此命令會從 /mnt 目錄建立壓縮封存檔,並將封存檔上傳至 S3 儲存貯體。此命令也會產生 MD5 總和檢查碼,以驗證資料完整性,並使用 AWS CLI 分段上傳大型檔案。

  10. (選用) 若要驗證總和檢查碼,請執行以下命令:

aws s3 cp s3://MY-BUCKET/backup1.tar.gz - | md5sum -c backup1.md5

注意: 請將 MY-BUCKET 替換為 S3 儲存貯體的名稱,並將 backup1 替換為檔案名稱。 開啟 Amazon S3 console (Amazon S3 主控台),確認壓縮檔已上傳至 S3 儲存貯體。 若要卸載磁碟區,請執行以下命令:

sudo umount /mnt
  1. 從 Linux 執行個體分離 Amazon EBS 磁碟區。
  2. 刪除磁碟區,然後終止執行個體。
AWS 官方已更新 6 個月前