Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Ext3で削除されたファイルを復元する

Ext3で削除されたファイルを復元する

  

以下はExt3のファイルシステムでrm-dropされたファイルを復元する方法を教えてくれるチュートリアル
です。

‘ test.txtというファイルがあるとします。
$ ls -il test.txt 15 -rw-rw-r– 2 root root 20 Apr 17 12:08 test.txt

Note ::' -il'オプションは表示装置ファイルのiノード番号(15)を示していますUnix /Linuxファイルシステムの "Iノード"が分からない場合は、以下のものを追加する必要があります。知識簡単に言えば、iノードは運用管理ファイルの識別番号です。


その内容を見てみましょう:
$ cat test.txtこれはテストファイルです

さて、ファイルの削除を始めます。
$ rm test.txtrm :書き込み禁止の通常ファイル `test.txtを削除します。y


ジャーナルとiノード番号を使用して回復する

ファイルを削除してシステムを再起動すると、ファイルジャーナルは失われ、ファイルを回復することはできません。したがって、ファイルを復元することの前提は、ジャーナルを失わないこと、つまりシステムを再起動できないことです。

test.txtファイルのiノード番号が15であることはすでにわかっているので、それを表示するにはdebugfsコマンドを使用できます。
debugfs:logdump -i< 15> FSブロック1006ログシーケンス404351、journalブロック7241(iノード15のiノードブロック):iノード:15タイプ:標準モード:0664フラグ:0x0世代:0ユーザー:0グループ:0サイズ:20ファイルACL:0ディレクトリACL:0リンク:1ブロックカウント:8フラグメント:アドレス:0番号:0サイズ:0時間:0x48159f2d—月4月28日15:25:57 2008時間:0x48159f27—月4日28 15:25:51 2008時間:0x4806f070&木; 4月17日12:08:40 2008ブロック:(0 + 1) :10234ブロック7247のマジックナンバー:ジャーナルの終わり

メッセージの次の行に注意してください。
ブロック:(0 + 1):10234

これはiノード15ファイル(データブロック)のアドレスです。 )そして、このアドレスがわかったので、ddコマンドを使ってこのアドレスからデータを取り出すことができます。
#dd if = /dev /sda 5 of = /tmp /test.txt bs = 4096 count = 1 skip = 102341 + 0レコードin 1 + 0レコードout

  • ifが入力デバイスの場合
  • ofは出力デバイスです。
  • bsは、ブロックのサイズを指定します。
  • countダンプする必要があるブロックの数を示します。
  • skip説明最初から10234をスキップします。ブロックし、ブロックからデータを取得する

    回復したファイルを見てみましょう。
    $ cat /tmp/test.txtこれはテストファイルです

    もちろん、上記のファイルの復元は、ファイルについて知っているiノードに基づいていますが、実際には、この情報はわかりません。はい、これは可能です。回復方法を見てみましょう。

    ジャーナルとファイル名の回復の使用

    ファイルのiノードがわからない場合は、回復する可能性がありますか。これは不可能だと私はあなたに言うことができます。ただし、ファイルのiノード番号を知る方法はあります。その方法を見てみましょう。
    $ rm mytest.txtrm:書き込み禁止の通常ファイルを削除します `mytest.txt’? y

    注意、iノード番号はわかりませんが、debugfsを使用できます。表示するコマンド(そのls -dオプションを使用)。
    debugfs:ls -d 2(12)。2(12).. 11(20)lost + found 2347777(20)oss< 2121567>(20)mytest.txt

    ファイル名を見てください。 iノード番号は< 2121567>です。削除されたファイルのiノードは山括弧で囲まれています。

    iノード番号がわかったら、(logdumpオプションを使用して)簡単に復旧できます。
    debugfs:logdump -i< 2121567> iノード2121567はグループ65、ブロック2129985、オフセット3840ジャーナルです。ブロック1で開始、トランザクション405642 FSブロック2129985がシーケンス405644、ジャーナルブロック9(iノード2121567のiノードブロック)でログに記録:iノード:2121567タイプ:不良タイプモード:0000フラグ:0x0世代:0ユーザー:0グループ:0サイズ: 0ファイルACL:0ディレクトリACL:0リンク:0ブロック数:0フラグメント:アドレス:0番号:0サイズ:0 ctime:0x00000000— Thu Jan 1 05:30:00 1970 atime:0x00000000— Thu Jan 1 05: 30:00 1970 mtime:0x00000000 - Thu Jan 1 05:30:00 1970ブロック:FSブロック2129985、シーケンス405648、ジャーナルブロック64(inode 2121567のiノードブロック)で記録された:iノード:2121567タイプ:通常モード:0664フラグ: 0x0世代:913772093ユーザー:100グループ:0サイズ:31ファイルACL:2130943 Direc Tory ACL:0リンク:1ブロックカウント:16フラグメント:アドレス:0番号:0サイズ:0 ctime:0x4821d5d0&Wed 5 7 7 21:46:16 2008 atime:0x4821d 8be— Wed May 7 21:58:46 2008 mtime :0x4821d5d0 - Wed May 7 21:46:16 2008ブロック:(0 + 1):2142216

    たくさんの情報がありますので、詳しく見てみましょう。次の行の情報を見ることができます。
    FS block 2129985シーケンス405644で記録され、ジャーナルブロック9

    でそのタイプは:
    タイプ:タイプが悪い

    ブロック:なしの下のファイルのタイムスタンプをよく見てください。次のブロックを見てみましょう:
    FSブロック2129985、シーケンス405648、ジャーナルブロック64(iノード2121567のiノードブロック)で記録されます。

    このジャーナルにブロック情報があります。
    ブロック:( 0 + 1):2142216

    これは削除されたファイルのアドレスです再度restoreコマンドを実行しましょう:
    $ sudo dd if = /dev /sda5 of = /home /hchen /mytest_recovered.txt bs = 4096 skip = 2142216 count = 1

    このファイルの内容を確認しましょう:
    $ cat mytest_recovered.txtこれが私のテストファイルです

    概要

    さて、ここに私たちの要約をいくつか挙げます:1 debugfs:ls -dを使用して、削除したファイルのiノード番号を見つけます。 2)debugfs:logdumpを使用してファイルのデータブロックアドレスを見つけます。 3)ddコマンドを使用してデータを抽出し、ファイルとして保存します。

    インターネット上のファイルを復元するには、非常にさまざまな方法がありますが、基本的にはdebugfsコマンドも使用します。 Ext3ファイルシステム、しかし私はそれがExt2ファイルシステムで利用可能であるべきだといつも感じますが、私はそれを試していません。 Ext2とExt3はdebugfsが出力する情報と同じではないかもしれません。誰でも試すことができます。

    (記事の終わり)

  • Copyright © Windowsの知識 All Rights Reserved