Linux削除したファイルを復元

5228 ワード

linux削除したファイルを復元
まず、いくつかのファイルの基本的な概念を紹介します.
 
・ファイルは実際にはinodeへのリンクである、inodeリンクには、権限や所有者、データブロックアドレス(ファイルがディスクのこれらのデータブロックに格納されている)などのファイルのすべての属性が含まれている.ファイルを削除すると、inodeへのリンクが実際に削除され、inodeの内容は削除されません.プロセスはまだ使用されている可能性があります.inodeのすべてのリンクが完全に削除すると、これらのデータブロックは新しいデータに書き込むことができる.
・procファイルシステムはデータの復元に協力することができる.各システム上のプロセスには/procにディレクトリと自分の名前があり、fd(ファイル記述子)サブディレクトリ(プロセスはファイルのすべてのリンクを開く必要がある)が含まれている.ファイルシステムからファイルを削除する場合は、inodeの参照もあります.
1.第1の方法lsof
プロセスがファイルを開いたとき、削除してもファイルを開いたままであれば、そのプロセスはディスクに存在します.これは、プロセスがファイルが削除されたことを知らず、ファイルを開いたときに提供されたファイル記述子に読み取りと書き込みを行うことができることを意味します.このファイルは、対応するディレクトリインデックスノードが削除されているため、プロセス以外は表示されません.
/procディレクトリには、カーネルとプロセスツリーを反映するさまざまなファイルが含まれています./Procディレクトリはメモリにマッピングされた領域をマウントしているため、これらのファイルとディレクトリはディスクに存在しないため、これらのファイルを読み取り、書き込みすると、実際にはメモリから関連情報を取得します.
lsofに関連する情報の多くは、プロセスのPIDに命名されたディレクトリ、すなわち/proc/1234にPIDが1234のプロセスの情報が含まれている.各プロセスディレクトリには、アプリケーションがプロセスのメモリ領域、ファイル記述子リスト、ディスク上のファイルへのシンボルリンク、および他のシステム情報を簡単に理解できるようにするさまざまなファイルが存在します.
lsofプログラムは、この情報およびカーネルの内部状態に関する他の情報を使用して、その出力を生成する.したがってlsofは、プロセスのファイル記述子や関連するファイル名などの情報を表示することができる.つまり、プロセスのファイル記述子にアクセスすることで、ファイルに関する情報を見つけることができます.
プロセスは実行中です.次に/var/log/messagesというファイルを削除します.
shell> rm/var/log/messages
削除してから、このプロセスの変化を見てみましょう.
shell> lsof |grep/var/log/messages
rsyslogd   1737      root    1w      REG                8,2   5716123     652638/var/log/messages (deleted)
皆さんは変わったのを見たでしょう.二つを比べてみると、たくさん見つかりました(deleted).この書類を見つけるにはどこでこれを見なければなりませんか?
PID:1737 FD:1じゃあ、直接/proc/1737/FD/1に入ってllで見てみましょう.
shell> cd/proc/1737/fd/
shell> ll
 
total 0
lrwx------ 1 root root 64 Dec 23 13:00 0 -> socket:[11442]
l-wx------ 1 root root 64 Dec 23 13:00 1 ->/var/log/messages (deleted)
l-wx------ 1 root root 64 Dec 23 13:00 2 ->/var/log/secure
lr-x------ 1 root root 64 Dec 23 13:00 3 ->/proc/kmsg
l-wx------ 1 root root 64 Dec 23 13:00 4 ->/var/log/maillog
1対応/var/log/messages(deleted)が表示され、ファイルが必要なファイルかどうかを確認します.
shell> head -5 1
Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source =/proc/kmsg started.
Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd"swVersion="5.8.10"x-pid="1241"x-info="http://www.rsyslog.com"] start
Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset
Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu
Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
バックアップ・ファイルの比較:
shell> head -5/var/log/message_bac
Nov 14 03:11:11 localhost kernel: imklog 5.8.10, log source =/proc/kmsg started.
Nov 14 03:11:11 localhost rsyslogd: [origin software="rsyslogd"swVersion="5.8.10"x-pid="1241"x-info="http://www.rsyslog.com"] start
Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpuset
Nov 14 03:11:11 localhost kernel: Initializing cgroup subsys cpu
Nov 14 03:11:11 localhost kernel: Linux version 2.6.32-431.el6.x86_64 ([email protected]) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) ) #1 SMP Fri Nov 22 03:15:09 UTC 2013
データが同じであることを比較して、リカバリ
shell> cat 1 >/var/log/messages
 
多くのアプリケーション、特にログ・ファイルおよびデータベースでは、このリカバリによりファイルを削除する方法が役立ちます.
 
2.第2の方法extundelete
  • 試験誤操作削除以下ファイル
    /usr/local/dbdata/gperftools-2.4.tar.gz  #  
    
    /usr/local/dbdata/pcre-8.32              #  
    誤操作実行:
    # rm -rf /usr/local/dbdata/gperftools-2.4.tar.gz /usr/local/dbdata/pcre-8.32
  • 誤操作があったパーティションを読取り専用保護ファイルが誤削除されたと判断した場合は、直ちにパーティションに対して書き込み保護を実施してください(誤削除されたブロックデータを上書きするので、読取り専用に権限を与えます):
     #  # 
  • .
  • データ復旧ツールインストールツールインストール配備公式サイトはhttp://extundelete.sourceforge.net/で、現在の安定バージョンはextundelete-0.2.4である.ツールダウンロード
     # wget https://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
    インストール依存パッケージ
    # yum -y install gcc-c++ e2fsprogs.x86_64 e2fsprogs-devel.x86_64
    # tar -jxvf extundelete-0.2.4.tar.bz2
    # cd extundelete-0.2.4
    # ./configure
    # make && make install
    インストール結果を確認
    # extundelete -v
  • ファイルリカバリプロセス指定ファイルのリカバリ:ルートノード(inode=2)から削除されたファイルのiノードが見つかり、recover iノードが見つかります.以下はアナログ削除gperftools-2.4である.tar.gz(ファイル)とpcre-8.32(ディレクトリ)は、削除されたファイルがどれらがあるかを先に検出します.
    # extundelete /dev/sdb --inode 2
    には、次の2つの
    gperftools-2.4.tar.gz 15 Deleted
    
    pcre-8.32 655361 Deleted
    が表示されます.
    注意:リカバリプロセスは誤削除パーティションで行わないでください.inodeに注意してください.ブロック相互被覆
    ファイル名に基づいてリカバリ可能なファイルを先にリカバリ:
    # extundelete /dev/sdb --restore-file gperftools-2.4.tar.gz
    リカバリディレクトリ(目的:#extundelete/dev/sdb--restore-directory pcre-8.32に従って、最後に現在のディレクトリの下にRECOVERED_FILESというディレクトリが表示され、ディレクトリには誤って削除されたファイルとディレクトリが表示されます.上記の操作によって、extundeleteツールが誤削除データの回復を実現し、操作が簡単であることが証明されます.
  • .
    まとめ:
  • rmの使用は
  • に注意しなければならない.
  • ディスクは機能に従ってパーティション化する必要がある
  • 少なくとも1つのデータ復旧方式
  • を把握する.