Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxファイルシステムの削除防止方法

Linuxファイルシステムの削除防止方法

  
について

マルチユーザー、マルチタスクのオペレーティングシステムとして、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に置かれます。このディレクトリ内のファイルは私たちが欲しいものです。


Copyright © Windowsの知識 All Rights Reserved