以下は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
回復したファイルを見てみましょう。
$ 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が出力する情報と同じではないかもしれません。誰でも試すことができます。
(記事の終わり)
mysqlのデフォルトのエンコーディング形式を表示 &ldquo; character%&rdquo ;;のような変数を表示示す:reality-bash:show:コマンドが見つからないログイン結果
でchroot SFTPを設定する方法いくつかのシナリオでは、システム管理者がほんの少数のユーザにだけファイルをsshではなくLinuxボックスに転送することを許可するようにします。 SFTPをchr
のTelnetサービスの設定手順は以下の通りである: A、Telnetのインストールパッケージ(通常2つ)ログイン 1、telnet-クライアント(またはtelnet)は、そのパッケージのt
コマンドを言うと、この特別なコマンド viはコマンドであるだけでなく、Linuxのエディターでもあります。時間的関係のため、これは一例ではなく、将来ネットワークサービスを設定するときにviの実用的なア