ここでは、CentOS 7 を例として、誤って削除したデータをすばやく復元するためのオープンソースツールである Extundelete の使い方を紹介します。
概要
作業中に、データを誤って削除してしまうことがあります。 この場合、データをすばやく効果的に復元するにはどうしたらよいでしょうか。 Alibaba Cloud には、以下に示す例のように、データを復元する方法がいくつかあります。
- ECS コンソールからスナップショットまたは カスタムイメージをロールバックします。
- 負荷分散とサービスの高可用性を実装するために、ECS インスタンスをいくつか購入します。
- OSS (Object Storage Service)を使用して、Web ページ、画像、動画など、大量のデータを保存します。
debugfs、R-Linux、ext3grep、Extundelete など、Linux 用のさまざまなオープンソースデータリカバリツールがあります。 その中で、ext3grep と Extundelete が一般的に使用されています。 どちらのツールも同じリカバリ手法を採用していますが、Extundelete の方が強力です。
Extundelete は、Linux ベースのオープンソースのデータリカバリソフトウェアです。 Linux インスタンスを使用する場合、Linux にはごみ箱がないため、誤って削除したデータをすばやく復元するためにこのツールを手軽にインストールできます。
Extundelete は、inode 情報とログを組み合わせることによって inode ブロックの位置を特定し、目的のデータを検索して復元できます。 この強力なツールは、ext3 および ext4 デュアルフォーマットパーティションのディスク全体の復元をサポートします。
対象ユーザー
- 誤ってディスク上のファイルを削除し、削除後にディスク上で書き込み操作を行っていないユーザー。
- Web サイトのトラフィックが少なく、ECS インスタンスをほとんど持っていないユーザー。
手順
このページが書かれている時点で利用可能なのは、上記のリリースです。 お客様の手元には、違うものがダウンロードされているかもしれません。
-
Extundelete のデプロイ
wget http://zy-res.oss-cn-hangzhou.aliyuncs.com/server/extundelete-0.2.4.tar.bz2 yum -y install bzip2 e2fsprogs-devel e2fsprogs gcc-c++ make #Install related dependencies and libraries tar -xvjf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 #Enter the program directory ./configure #Installed successfully as shown below
make && make install
この時点で、src ディレクトリが表示されます。 Extundelete 実行可能ファイルと対応するパスが含まれています。 以下のように、デフォルトのファイルが "usr/local/bin" にインストールされ、次のデモは "usr/local/bin" ディレクトリに作成されます。
-
ファイルを削除し、Extundelete を使って復元します。
- ECS インスタンスの使用可能なディスクとパーティションを確認し、次に /dev/vdb パーティションをフォーマットしてパーティション分割します。 フォーマットとパーティションの詳細は、「データディスクの形式とマウント」をご参照ください。
fdisk -l
- パーティションに分割されたディスクを "/zhuyun" ディレクトリ配下にマウントしてから、"hello" という名前のファイルを作成します。
mkdir /zhuyun #Create the zhuyun directory. mount /dev/vdb1 /zhuyun #Mount the disk under the zhuyun directory. echo test > hello #Create a test file.
- md5sum コマンドを実行してファイルの MD5 値を生成し、書き留めます。 削除前と削除後のファイルの MD5 値 を比較して、ファイルの整合性を確認できます。
md5sum hello
- "hello" ファイルを削除します。
rm -rf hello cd ~ fuser -k /zhuyun #Terminate the process tree that uses a certain partition (skip this if you are sure that no resources are occupied).
- データディスクのマウントを解除します
umount /dev/vdb1 #Before using any file restoration tool, unmount or mount the partitions to be restored in read-only mode to prevent their data from being overwritten.
- Extundelete を使用してファイルを復元します。
extundelete --inode 2 /dev/vdb1 #Query the contents in a certain inode. ”2” を使用するとは、パーティション全体を検索するということです。 ディレクトリを検索するには、inode とディレクトリを指定するだけです。 これで、削除したファイルと inode を確認できます。
/usr/local/bin/extundelete --restore-inode 12 /dev/vdb1 #Restore the deleted file.
この時点で、RECOVERED_FILES ディレクトリが、コマンドが実行されたディレクトリ配下に表示されます。 ファイルが復元されたかどうかを確認します。
削除前と削除後のファイルの MD5 値を確認します。 MD5 値が同じであれば、復元は成功です。
--restore-inode 12 # --restore-inode Restore by the specified inode. --extundelete --restore-all # --restore-all Restore all.
- ECS インスタンスの使用可能なディスクとパーティションを確認し、次に /dev/vdb パーティションをフォーマットしてパーティション分割します。 フォーマットとパーティションの詳細は、「データディスクの形式とマウント」をご参照ください。