多く学びます(12)――extundeleteを使ってLinuxの下で誤ってファイルを削除することを回復します


通常、重要なファイルについては、酔っ払って手が不自由になるなどの異常な状態で重要なファイルを誤って削除しないように、/etcのプロファイルなどの定期的なバックアップを行う必要があります.しかし、意外にも本当に発生し、バックアップができていない場合は、手動でリカバリしてみましょう.ここで使用しているファイルリカバリソフトウェアはextundeleteです.
1.パーティションの再マウントは読み取り専用です.
これはファイルを復元する最初のステップであり、最も重要なステップの一つでもあります.誤って削除したファイルが/data/catalina.out、/dataディレクトリが/dev/sdb 5のマウントポイントである場合、パーティションへの書き込み操作によってファイルのリカバリに失敗する可能性があるため、パーティションを読み取り専用形式に再マウントします.
[root@localhost ~]# mount -o remount,ro /dev/sdb5

このコマンドを実行すると、エラーメッセージが表示される可能性があります.一般的には、ディレクトリが占有されているなどの情報は、次のようになります.
mount:/data isbusy
fuserコマンドを使用して、ディレクトリを使用しているユーザーのプロセスを表示します.
[root@localhost ~]# fuser -mv /data

           USER     PID   ACCESS  COMMAND
/data:      mysql      4345   F.c..  mysqld
mysqldコマンドはこのディレクトリを使用しており、mysqlを閉じる方法が分からない場合はkillallコマンドを使用してプロセスを終了します.
[root@localhost ~]# killall mysqld

その後、再度マウントすると成功します.
[root@localhost ~]# mount -o remount,ro /dev/sdb5

/dataディレクトリの下に新しいファイルを作成して、パーティションが書き込めないかどうかを確認します.
[root@localhost ~]# touch /data/testfile.txt

touch: cannottouch `/data/testfile.txt': Read-only file system
以上の情報は、/dataディレクトリが読み取り専用になったことを示しています.
2.extundeleteをインストールするには:
Excundelete公式サイトhttp://extundelete.sourceforge.netは、上でダウンロードするのは比較的に遅くて、私達は以下のダウンロードの住所を使いますhttp://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2:
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
[root@localhost src]# tar jxf extundelete-0.2.4.tar.bz2
[root@localhost src]# cd extundelete-0.2.4

./configureではgcc-c++ライブラリおよびe 2 fsprogs-develライブラリを使用し、yumを使用してインストールする必要があります.
[root@localhost ~]# yum install -y gcc-c++ e2fsprogs-devel

ライブラリファイルのインストールが完了したら、./configure,make,makeinstall:
[root@localhost extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete
[root@localhost extundelete-0.2.4]# make && make install

3.extundeleteを使用してファイルを復元するには:
[root@localhost ~]# cd /usr/local/extundelete

(1)指定されたパーティションのファイルの削除ステータスを表示する:
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --inode 2

File name        | Inode number | Deleted status
.               2
..              2
lost+found         11
mysql            49153
catalina.out       12         Deleted
.catalina.out.swp    12         Deleted
.catalina.out.swx    14         Deleted
ここでcatalina.outは誤って削除されたファイルであり、現在は削除されている状態であり、次のコマンドを使用してファイルを復元します.
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --restore-file catalina.out

NOTICE: Extendedattributes are not restored.
Loadingfilesystem metadata ... 130 groups loaded.
Loading journaldescriptors ... 4735 descriptors loaded.
Block 796156 isallocated.
Successfullyrestored file catalina.out
ファイルが正常に復元されたことを示すメッセージが表示され、復元されたファイルは現在のディレクトリの下にあるRECOVERED_FILES:
[root@localhost extundelete]# ls RECOVERED_FILES

catalina.out
注意:
パーティション全体のファイルを復元するには、次のコマンドを使用します.
[root@localhost extundelete]# ./bin/extundelete /dev/sdb5 --restore-all

4.最終作業:
リカバリに成功した後、喜ぶばかりでなく、ファイルを誤って削除したパーティションが読み取り専用であることを忘れず、読み書き状態に再マウントします.
[root@localhost ~]# mount -o remount,rw /dev/sdb5

エラーファイルを元の場所に移動します.
[root@localhost ~]# mv /usr/local/extundelete/ RECOVERED_FILES/catalina.out /data/

最後に、教訓を吸収して、バックアップをしっかりと行って、できるだけ誤って削除することを避けて、誤って削除した後に回復することができるかどうか誰も肯定することができないため、同時に、ディスクはパーティションをしっかりと行って、もしすべて/パーティションの下で、回復するのは難しくて難しくなりました.
 
補足:fuserコマンド
このコマンドは、現在ディスク上のファイル、マウントポイント、ネットワークポートを使用しているプログラムを表示し、プログラムプロセスの詳細を示します.共通パラメータ:
-m表示するパーティションまたはマウントポイントを指定します
-vプロセスが属するユーザ、プロセス関連コマンドなどの詳細をリストし、このパラメータを使用しない場合はPIDのみをリストします.
-uプロセスが属するユーザーのリスト
-kはkill-9信号を送信して現在のディレクトリまたはマウントポイントに関連するプロセスを終了し、-signalnを使用して他の信号量を指定できますが、-signalと-kが同時に使用されると前者は失効します.
今使用を確認するなら /dev/sdb 5パーティションのプロセスです.このパーティションのマウントポイントは/dataです.
[root@localhost ~]# fuser -mv /dev/sd5  //  
[root@localhost ~]# fuser -mv /data