我想將 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 儲存貯體,請完成以下步驟:
-
從快照建立 Amazon EBS 磁碟區。
-
在與磁碟區相同的可用區域中啟動 Amazon EC2 Linux 執行個體。
-
將磁碟區作為次要磁碟區連接至執行個體。
-
使用 SSH 或 AWS Systems Manager 的 Session Manager 功能連線至 Linux 執行個體。
-
授予 EC2 執行個體存取 S3 儲存貯體的權限。
-
若要查看可用的磁碟裝置,請執行以下命令:
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
-
若要將磁碟區掛載至執行個體,請執行以下命令:
sudo mount /dev/xvdf1 /mnt
注意: 請將 /dev/xvdf1 替換為磁碟區的分區名稱。
-
開啟 Extra Packages for Enterprise Linux (EPEL) 儲存庫,然後安裝 pv 套件,以便在建立 tar 封存檔時監控進度。若要安裝 pv,請執行以下命令:
sudo $(command -v dnf || command -v yum || command -v apt) install pv
-
若要將 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 分段上傳大型檔案。
-
(選用) 若要驗證總和檢查碼,請執行以下命令:
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
- 從 Linux 執行個體分離 Amazon EBS 磁碟區。
- 刪除磁碟區,然後終止執行個體。