Amazon EBSをファイル単位でリストアする方法

AWS運用自動化サービス「Cloud Automator」

こんにちは、マネージドサービス課の小倉です。
2019年3月からこちらの課に所属が変わりました。

今回は、EC2にマウントしているEBSのバックアップ(スナップショット)を取得していることが前提ですが、EBSをファイル単位でリストアする方法をご紹介します。
ファイルをOS内でバックアップを取得せずに致命的な編集をしてしまった場合などに使うことができます。

リストア手順

リストアする内容

Amazon Linuxの/etc/hostsファイルを例にファイル単位でリストアする方法を説明します。
まず、現在の/etc/hostsの中身を確認します。

/etc/hostsに “iranaisettei” という変な文字列が入ってますので、これを編集前の状態に戻します。

EBSボリュームの作成

マネジメントコンソールからEC2一覧を表示し、対象のEC2のインスタンスIDをコピーします。

左メニューの「スナップショット」をクリックし、検索画面に先ほど確認した対象EC2のインスタンスIDを入力して検索します。
検索結果に表示された中から、/etc/hostsが編集される前の時間のスナップショットを選択します。

スナップショット選択して、「アクション」 – 「ボリュームの作成」をクリックします。

ボリューム作成画面が表示されます。
後ほど、ここで作成したボリュームは削除しますので、タグに文字列を入れておくと削除対象がわかりやすくなります。
タグを入力して、「ボリュームの作成」をクリックします。

ボリュームが作成されました。
「閉じる」をクリックして、ボリューム一覧に戻ります。

EBSボリュームのアタッチ

対象のEBSボリュームを選択します。

「アクション」 – 「ボリュームのアタッチ」をクリックします。

アタッチする対象のインスタンスIDを選択して、「アタッチ」をクリックします。

左メニューのインスタンスをクリックし、対象のEC2インスタンスを確認するとブロックデバイスにアタッチしたEBSボリュームが表示されます。

EBSボリュームのマウント

EBSボリュームをマネジメントコンソール上でアタッチするだけでは、OS上で使用することはできませんので、EBSボリュームのマウントが必要です。
以下の例は、マウント先の /data ディレクトリを作成して、/dev/xvdf1をマウントしています。

対象ファイルのコピー

マウントしたEBSボリュームから対象ファイルを上書きコピーして、編集前の状態に戻します。

編集前の状態に戻りました。

EBSボリュームのアンマウント

OS上でEBSボリュームをアンマウントします。

/dataにマウントされていた /dev/xvdf1がアンマウントされました。

EBSボリュームのデタッチ

マネジメントコンソールでEC2を表示します。
左メニューのボリュームをクリックし、対象のEBSボリュームを選択します。
「アクション」 – 「Detach Volume」をクリックします。

「デタッチする」をクリックします。

EBSボリュームの削除

左メニューのボリュームをクリックし、対象のEBSボリュームを選択します。
「アクション」 – 「Delete Volume」をクリックします。

「はい、削除する」をクリックします。

EBSボリューム一覧から表示が消え、EBSボリュームが削除されました。

まとめ

ファイルを編集するときはOS内でコピーを取得してから実施したほうがよいですが、想定外の事象などでどうしてもバックアップ(スナップショット)からファイル単位でリストアしなければならないときは、こちらの復旧方法を検討してみてはいかがでしょうか。

また、Windowsの場合は、EBSボリュームをマウントする手順が異なりますが、その他は同様の手順で実施可能です。以下、WindowsでEBSボリュームをマウントする手順になります。
Windows で Amazon EBS ボリュームを使用できるようにする

AWS運用自動化サービス「Cloud Automator」