マルチユーザー、マルチタスクのオペレーティングシステムとして、Linuxのファイルを削除した後、回復するのは困難です。 deleteコマンドは単にファイルノード内のマークを削除して実際にファイルの内容を消去するわけではありませんが、他のユーザーや一部の書き込みアクションを持つプロセスはデータをすぐに上書きします。ただし、家族が使用しているLinuxの場合、またはファイルが削除された後に修復された場合は、修復できます。
1. Ext2ファイルシステム構造の簡単な説明
Linuxで使用されているExt2ファイルシステムでは、ファイルはブロック単位で保存されていますデフォルトでは、各ブロックのサイズは1Kです。異なるブロックはブロック番号によって区別されます。各ファイルにはノードもあります。このノードには、ファイルの所有者、読み取り/書き込み権限、ファイルの種類などの情報が含まれています。 12ブロック未満のファイルの場合、ファイルブロックのブロック番号はノードに直接格納されます。ファイルが12ブロックより大きい場合、ノードは12ブロック番号の後に間接ブロックのブロック番号を格納し、間接ブロック番号に対応するブロックには256ブロックのデータブロックのブロック番号が格納されます(Ext2fsの各ブロック)。番号は4バイトを占めるので、1ブロックに格納できるブロック番号は1024/4 = 256です。より大きなファイルがある場合は、ノードに2次間接ブロックと3次間接ブロックがあります。
2.誤って削除されたファイルの回復
ほとんどのLinuxディストリビューションはExt2ファイルシステムを編集するために使用できるdebugfsツールを提供しています。ただし、このツールを使用する前にやるべきことがまだいくつかあります。
最初にファイルが誤って削除されたパーティションを再マウントします。次のコマンドを使用します。(ファイルが/usrパーティションにあると仮定します)
mount?Cr?Cn?co remount /usr
-rは読み取り専用モードのマウントを意味し、-nは書き込みを行わないことを意味します//etcにファイルを復元するのであれば、Etc /mtab。システムがxxx partion busyと表示した場合は、fuserコマンドを使用してこのパーティションを使用しているプロセスを確認できますか?n:
fuser?Cv?Cm /usr
重要なプロセスがない場合は、次のコマンドでそれらを停止します。
fuser -k?Cv?Cm /usr
そして、これらのファイルシステムを再マウントすることができます。
すべてのファイルを大きな/パーティションにインストールする場合は、システムプロセスがハードディスクにデータを書き込む可能性を最小限に抑えるために、起動プロンプトでlinux singleを使用してシングルユーザーモードに入ることができます。ハードドライブを別のマシンに掛けるだけです。加えて、回収された情報は有用な情報を破壊することを避けるために書かれるべき/上にあるべきではない。あなたのマシンにdos /windowsがあるなら、あなたはこれらのパーティションに書くことができます:
mount?Cr?Cn /dev /hda1 /mnt /had
そして、あなたはdebugfsを実行することができます: /dev /hda5)
#debugfs /dev /hda5
debugfsプロンプトdebugfsが表示されます。
多くの削除されたファイルに関する情報を一覧表示するには、lsdelコマンドを使用します。 :
debugfs:lsdel
debugfs:2692個のiノードが削除されました。
iノード所有者モードサイズブロック時間削除されました
164821 0 100600 8192 1/1日5月13日19時22分46秒....................................................
36137 0 100644 4 1 /1 Tue Apr 24 10:11:15 2001
196829 0 100644 149500 38/38月5月27日13:52:04 2001
debugfs:
たくさんのファイルがリストされています(ここでは2692が見つかりました)、最初のフィールドはファイルノード番号、2番目のフィールドはファイルの所有者、3番目のフィールドは読み書きの許可、そしてファイルサイズ、ブロック数、削除時間です。その後、ファイルサイズと削除日に基づいてどのファイルが必要かを判断できます。たとえば、ノードが196829のファイルを復元します。
最初にファイルのステータスを確認できます。
debugfs:stat< 196829>
Inode:196829タイプ:通常モード:0644フラグ:0x0バージョン:1
ユーザー:0グループ:0サイズ:149500
ファイルACL:0ディレクトリのACL:0
リンク:0ブロック数:38 < Br>
フラグメント:住所:0番号:0サイズ:0
ctime:0x31a9a574 - 月5月27日13:52:04 2001
atime:0x31a21dd1 - 火曜日21 20:47:29 2001
mtime:0x313bf4d7 - 火曜日5 08:01:27 2001
dtime:0x31a9a574 - 月5月27日13:52:04 2001
ブロック:
594810 594811 594814 594815 594816 594817
........................
合計:38
次に、dumpコマンドを使用してファイルを復元します。
debugfs:dump< 196829> /mnt/hda/01.sav
これでファイルが復元されます。 debugfsを終了します。
debugfs:quit
もう1つの方法は、iノードを手動で編集することです。
debugfs:mi< 196829>
モード
ユーザーID [0]
グループID [0]
サイズ[149500]
作成時間[0x31a9a574]
変更時間[0x31a9a574]
アクセス時間[0x31a21dd1]
削除時間[0x31a9a574] 0
リンクカウント[0] 1
ブロックカウント[38]
ファイルフラグ[0x0]
予約済み1 [0]
ファイルacl [0]
ディレクトリacl [0]
フラグメントアドレス[0]
フラグメント番号[0]
フラグメントサイズ[0]
ダイレクトブロック#0 [594810]
............... ...............
トリプルインダイレクトブロック[0]
毎回miコマンドを使用すると、1行の情報が編集用に表示されます。時間が0(削除されていない)に変更され、リンク数が1に変更されましたデバッグ後、debugfsを終了します。
debugfs:quit
次にfsckを使って/dev /hda5をチェックします。
fsck /dev /hda5
欠けているデータブロックはlost + foundに置かれます。このディレクトリ内のファイルは私たちが欲しいものです。
Linuxでプログラムを追加および削除するのは非常に面倒ですソフトウェアのインストールは、ソフトウェアをインストールするための最も簡単なダブルクリックrpmパッケージを除いて、奇妙と言えます。 mak
Linuxカーネルの待機キューには、割り込み処理、プロセスの同期、およびタイミングのための多くの用途があります。ここで言うのは、プロセスは特定のイベントが発生するのを待たなければならないことが多い
Linux愛好家として、いくつかの決心をした後、彼はデュアルシステムを断念し、自分のラップトップにしかLinuxをインストールしませんでした 数ヶ月後、彼はオンラインバンキングが大きな問題である
さまざまなLinux さて、赤い帽子Enterprise Editionは、比較的安全問題です。平均的なLinuxのバージョンについては、どのように我々は、システムの安全性を確保します。あるいは、ど
Win7システムでUディスクが常にいっぱいになっているという問題を解決する
pptはどのようにアニメーション効果をもたらしますか? PPTアニメーション効果のチュートリアル
World of Warcraft映画の静止画は11月に最初に公開された予告編
Win7は常にブルースクリーンコード0x0000007eが表示される方法が表示されますか?
TencentのゲームのWin10のシステム技術のプレビュー版はどうやってプレイできないのですか?
Win10 HPノートパソコンの画面がちらつく場合はどうすればいいですか?