Linux System Administrator's Guideには「rm -rfは、コマンドの結果がわかっている場合以外は注意して使用すること」という条項がありますが、Linuxでファイルを削除することは、実際にはディスク・パーティションからファイルを削除することではなく、ファイルのinodeノード内のセクタ・ポインタをクリアし、同時に対応するデータ・ブロックを解放することです。解放されたデータブロックがシステムによって再割り当てされるとき、削除されたデータは上書きされるため、誤ってデータを削除した後は、そのファイルがあるパーティションをすぐにアンマウントしてください。その後、関連ツールを使って復元してください。この記事では、Ubuntu 12.04プラットフォームを例にして、一般的に使用される4つのLinux削除ファイル復元ツールの使用方法を紹介します。
Linuxファイル復元の原則
ノードとブロック
# mount /dev/sdb2 /tmp
# ls -id /tmp
2 /tmp
ファイル復元の原則
今回紹介するコマンドは、ファイルシステムのinode値からファイルシステム情報を取得するものです。ext3やext4のファイルシステムでは、各ファイルはinodeを使ってデータの格納場所を記述します。 ファイルが削除されるとinodeのデータポインタの一部が0クリアされ、ファイルディレクトリ領域はあまり変化しません。ファイルの読み書きはinodeを介して行われるため、inodeのデータポインタがクリアされると、ファイルが残っていてもその内容を結合することができなくなります。ext3とext4ファイルシステムのメタデータが変更されると、ログファイルにメタデータのコピーが残ります。例えば、ファイルが削除されると、そのファイルのinode情報のコピーがログファイルに保存され、削除されるファイルのinode情報がゼロになります。このログファイルは、あまりにも多くの操作があった場合、削除されたファイルのinodeログレコードは、完全にinodeに従ってデータを取得する機会を失い、新しいデータに置き換えられますリサイクルされます。大量のファイルが削除された場合、このログファイルは何度もリサイクルされ、***によって削除されたファイルを回復するチャンスだけが残ります。
コマンドラインツールを使ったファイルの復元
foremostとextundeleteの紹介
formostは、ヘッダとテール情報、およびファイルのビルトインデータ構造に基づいてファイルを復元するためのコマンドラインツールです。formostはドライブを直接解析するだけでなく、dd、Safeback、Encaseなどによって生成されたイメージファイルを解析することができます。formostは、avi、bmp、dll、doc、exe、gif、htm、jar、jpg、htm、html、jpgなどの形式の復元をサポートしています。avi、bmp、dll、doc、exe、gif、htm、jar、jpg、mbd、mov、mpg、pdf、png、ppt、rar、rif、sdw、sx、sxc、sxi、sxw、vis、wav、wmv、xls、zip。
Linuxのextファイルシステムでは、一般的に使用されるLinuxファイル削除回復ツールは、debugfs、ext3grep、extundeleteなどです。extundeleteは、ext3およびext4ファイルシステムをサポートするオープンソースのデータ回復ツールであり、その公式ウェブサイトは、http://..et/ にあり、現在の *** 安定バージョンは 0.2.0 です。
foremost と extundelete の 2 つのコマンドラインツールと比較して、foremost はより多くのファイルシステムをサポートし、extundelete はより少ないファイルシステムをサポートします。ただし、foremost は特定の形式のファイルのみ復元をサポートします。
最前線の使用
まずパッケージをインストールします:
#apt-get install foremost
他のLinuxディストリビューションのユーザーは、コンパイルとインストール用のソースコードをhttp://..et/からコンパイルとインストール用のソースコードをダウンロードできます。使い方は以下の通り。
個々のタイプのファイルの復元
USBメモリからpngファイルを削除し、formostを使って復元しました。
#rm -f /dev/sdb1/photo1.png
#foremost -t png -i /dev/sdb1
リカバリが完了すると、カレントディレクトリに出力ディレクトリが作成され、出力ディレクトリの下にpngサブディレクトリが作成されます。
pngサブディレクトリには、名前が変更されたpng形式のファイルが含まれ、出力ディレクトリのaudit.txtファイルは、回復されたファイルのリストであることに注意する必要があります。
複数種類のファイルの復元
#foremost -v -T -t doc,pdf,jpg,gif -i /dev/sda6 -o /media/disk/Recover
リカバリが完了すると、カレントディレクトリに出力ディレクトリが作成され、その下に4種類のファイルを含む4つのサブディレクトリが作成されます。出力ディレクトリ内のaudit.txtファイルは復旧されたファイルのリストです。
extundelete の使用
まずパッケージをインストールします:
#apt-get install extundelete
他のLinuxディストリビューションのユーザーは、コンパイルとインストール用のソースコードをhttp://..et/ にあるソースコードをコンパイルしてインストールしてください。extundelete のダウンロードとインストールには、e2fsprogs と e2fslibs という 2 つのパッケージのインストールが必要です。
#p#
データ消去環境のシミュレーション
ここでは、/backupdateにマウントされたパーティション/dev/sdd1を使用し、テスト用のディレクトリ/deleteを作成し、ファイルdel1.txtを作成します。
# mkdir –p /backupdate/deldate
# mkfs.ext4 /dev/sdd1
# mount /dev/sdd1 /backupdate
#cd /backupdate/deldate
# touch del1.txt
# echo " test 1" > del1.txt
ファイルのチェックサムを取得します:
# md5sum del1.txt
66fb6627dbaa37721048e4549db3224d del1.txt
ファイルを削除します:
# rm -fr /backupdate/*
ファイルシステムをアンマウントするか、読み取り専用でマウントします:
# umount /backupdate
リカバリーデータ情報を照会します。ここで --inode 2 に注目してください:
# extundelete /dev/sdd1 --inode 2
.....
File name | Inode number | Deleted status
Directory block 8657:
. 2
.. 2
lost+found 11 Deleted
del1.txt 12 Deleted
上記のDeletedとマークされたファイルまたはディレクトリは、削除されたファイルまたはディレクトリです。
ファイル復旧の開始
デフォルトのリカバリは、カレント・ディレクトリのRECOVERED_FILESディレクトリに行われます。
# extundelete /dev/sdd1 --restore-file del1.txt
カタログが復元された場合:
# extundelete /dev/sdd1 --restore-directory /backupdate/deldate
すべてのファイルを復元します:
# extundelete /dev/sdd1 --restore-all
リカバリファイルのチェックサムを取得し、比較し、リカバリが成功したかどうかを検出します:
# md5sum RECOVERED_FILES/ del1.txt
66fb6627dbaa37721048e4549db3224d RECOVERED_FILES/del1.txt
とまったく同じかどうかをチェックします。
アプリケーションの概要:私はextundeleteはまだ全体のディスクの回復機能がより強力であるに基づいて、ディレクトリとファイルベースの回復が十分に強力ではありませんが、実際に使用する過程で大きな不完全性を持っていることがわかりました。Linux 上で誤ってファイルを削除してしまった場合、データが失われたことが分かったら、その場面を維持するための操作を行ってはいけません。ddコマンドやAIR(Automated Image Restore, http://--...et/)ツールを使って、失われたファイルシステムを別のファイルシステムに復元する方法を見つける必要があります。.et/)ツールを使って、データ復旧専門家によるオンサイト診断復旧のために、元のバックアップとして別のストレージスペースに保存してください。
メスの使用
上記のツールは主に ext3 と ext4 ファイルシステムで使用されますが、ロギングメカニズムがない古いファイルシステムを使用している場合は、scalpel ユーティリティを使用できます。scalpel は、ファイルシステムのデータベースを読み込んでファイルを復元する高速ファイル復元ユーティリティです。ファイルシステムに依存しません。
ユーザーは http://... からソースコードをダウンロードできます。/el/でコンパイルとインストール用のソースコードをダウンロードできます。使い方は以下をご覧ください:
scalpel ユーティリティを使用するには、まず設定ファイル /etc/scalpel/scalpel.conf を変更します。
例えば、削除された全てのpdfファイルを復元したい場合、/etc/scalpel/scalpel.confで、pdfファイル形式を含む2行から#を削除します。
[...]
pdf y 5000000 %PDF %EOF\x0d REVERSE
pdf y 5000000 %PDF %EOF\x0a REVERSE
[...]
その後、ファイルを保存します。
使い方は以下をご覧ください:
# scalpel /dev/sdb1 -o /RECOVERY/
ここで、/dev/sdb1 はターゲット・ドライブ、/RECOVERY/ はリカバリ・ファイルが格納されているディレクトリです。ディレクトリ内のaudit.txtファイルはリカバリファイルのリストです。
#p#
キャラクターターミナルツールtestdiskとphtorecの使用
テストディスクの紹介
testdisk 是分区表恢复,raid 恢复,分区恢复的开源免费工具。testdisk 支持的功能: 修复分区表,恢复已删除分区,用 FAT32 备份表恢复启动扇区,重建 FAT12/FAT16/FAT32 启动扇区,修复 FAT 表,重建 NTFS 启动扇区,用备份表恢复 NTFSブートセクタ、mftイメージテーブルでmftテーブルを修復、ext2/ext3バックアップのスーパーブロックを検索、FAT、NTFS、ext2ファイルシステムから削除されたファイルを復元、削除されたFAT、NTFS、ext2/ext3パーティションからファイルをコピー。
使用方法
まずインストール:
#apt-get install testdisk
testdiskを起動します:
#testdisk
testdisk起動インターフェイスの最初のステップは、図1に示すように、リカバリ操作のログファイルのロギング方法を選択することです。
図1.復旧作業におけるログファイルのロギング方法の選択
[作成する]
[追加する]
[ログなし]
ログファイルの記録方法を選択した後、システムは図2に示すように接続されたディスクデバイスを表示します。
図2 接続状態のディスク装置
リストされたディスクデバイスの中から、復元するパーティションを選択し、ディスクパーティションのタイプを選択します。ext4 ファイルシステムの場合は、[None] Non partitioned media を選択します (図 3 を参照):
図3.パーティションなしメディアを選択します。
注:一般的に[Intel]Intel/PCパーティションを選択し、ext4ファイルシステムのために[Intel]Intel/PCパーティションを選択することも正しく識別することができますが、ハードドライブの分析が遅くなります。
次の画面で[Analyse]を選択し、図4を参照してパーティションを分析します。
図4.
以下は現在のパーティションの状態を示しています。これは現在のパーティションテーブルがソフトウェアによって分析された結果です。詳細な検査のために "Deep Search "を選択してください(図5参照)。
図5.ディープサーチを行うには「Deep Search」を選択します。
以下は、図 6 に示すテスト完了画面です。
図6.
この画面でPキーを押すと、図7に示すようにハードディスク上のファイルが一覧表示されます。
図7 赤いファイル名が削除されたファイルです。
赤いファイル名は削除されたファイルです。復元したいファイルを選択した後、cキーを押すと、コピー先のディレクトリを聞いてきますので、コピー先を選択してください。
#p#
フォトレックについて
フォトレックによるファイルの復元
photorecはtestdiskのコンパニオンです。
フォトレック開始
# photorec
図8は接続されたディスクデバイスを表示し、ファイルを復元したいデバイスを選択し、[進む]ボタンを選択して次のステップに進みます。
図8 接続されたディスク装置
次に、復元されたディスクのパーティションフォーマットを選択します。ここでは ext4 が選択されています。図 9 を参照してください。
図9 リカバリーディスクのパーティション形式の選択
復元できるファイルの種類は、画面下部の[File Opt]で選択できます(図10参照)。
図10 復旧可能なファイルの種類
注:いくつかのファイル署名に従っていくつかのファイルタイプのみを復元したい場合、sを押してすべてのチェックを外し、復元するファイルタイプにカーソルを移動し、スペースを押してハイライトされたタイプを選択することができます。
パーティション全体を検索するか、または空き領域だけを検索するか、ディスク領域の分析範囲を設定できます(図11参照)。
図11 分析する椎間板領域の設定
次に、パーティションが使用するファイルシステムのタイプを選択し、エクスポートされたファイルのディレクトリを設定します。図12は復旧完了画面です。
図12.
PhtoRecを終了するにはQuitを選択してください。 復元されたファイルは、カレントディレクトリの/recup_dirのサブディレクトリで、ファイル名としてrecup_dir.xという番号のサブグループが保存されます。
機能比較
表1は、Linuxの削除されたファイルの回復ツールを示しています
概要
testdiskでファイル復旧が可能な場合、つまりハードディスク上のパーティションが破損した場合ですが、破損した後に再度新しいパーティションを作成した場合は可能性が低く困難です。photorecはハードディスク、USBデバイス、CD-ROM、SDカードだけでなく、他のストレージデバイスにも適用できます。そのため、以下のような一般的に使用されるファイルのほとんどを復元することができます。





