EBS スナップショットからファイルを復元する際の備忘録。よくある作業だが忘れがちなので、手順をまとめておく。
https://blog.serverworks.co.jp/tech/2019/06/10/restore-file/
こちらを参考にした。
今回は削除済みインスタンスのスナップショットであるため、作業用の EC2 インスタンスを作成する。その後、スナップショットから作成した EBS ボリュームをアタッチし、必要なファイルをコピーする。
なお、作業用インスタンスは、Amazon Linux 2023 にした。
作業用EBSボリュームの作成
スナップショットを選択して、「アクション」-「ボリュームの作成」
- EBS ボリュームは AZ 内のリソースなので、作業用インスタンスと同じ AZ にボリュームを作成する必要がある
- Name タグに判別しやすい文字列を入れておくとよい
作業用EC2インスタンスの作成
- SSM や SSH 等でターミナルログインできるように構成する
EBSボリュームのアタッチ
ボリュームをアタッチする。
デバイス名はデータボリューム推奨の/dev/sdfにした。
EBSボリュームのマウント
Claude の回答。
デバイス名は/dev/xvdf でも、実際にマウントするのはパーティション /dev/xvdf1 になるケースが多いです。lsblk で確認してから作業するのが安全です。
lsblk # xvdf # └─xvdf1 ← これをマウント
今回の作業用インスタンスは、以下のとおり。
lsblk # NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS # ... # nvme1n1 259:4 0 50G 0 disk # ├─nvme1n1p1 259:5 0 50G 0 part # └─nvme1n1p128 259:6 0 1M 0 part
したがって、デバイス名/dev/nvme1n1p1をマウントする。
復元元ボリュームは読み取りのみで十分なので、誤操作防止のため read-only マウントを推奨します。
Claude のアドバイスに従い ro オプションを使用してマウントしたが、このあとボリュームは削除するのでいらなかったかも。
sudo mkdir /mnt/restore sudo mount -o ro /dev/nvme1n1p1 /mnt/restore
対象ファイルのコピー
今回は SSM のターミナルから作業しているため、バケット経由でファイルを取得した。
# ディレクトリの場合は、recursive オプションをつける aws s3 cp /mnt/restore/{your path} s3://{your bucket}/ --recursive
アンマウント
cd でマウント先のディレクトリから移動してから、アンマウントする。
sudo umount /mnt/restore
EBSボリュームのデタッチ
作業用インスタンスから EBS ボリュームをデタッチする。
ボリュームとインスタンスの削除
ボリュームとインスタンスを削除する。
なおデタッチした EBS ボリュームを削除しても、元になったスナップショットは消えない。