「ファイルリカバリ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(文字列「[[zh-cn:」を「[[zh-hans:」に置換)
(校正(でき・出来))
 
(5人の利用者による、間の10版が非表示)
6行目: 6行目:
 
{{Related3|Post recovery tasks#Photorec|リカバリ後の作業#Photorec}}
 
{{Related3|Post recovery tasks#Photorec|リカバリ後の作業#Photorec}}
 
{{Related articles end}}
 
{{Related articles end}}
この記事では Arch Linux でデータをリカバリ・復活させる方法をまとめています。
+
この記事では Linux でデータをリカバリ・復活させる方法をまとめています。
   
 
== 特記事項 ==
 
== 特記事項 ==
12行目: 12行目:
 
=== 緒言 ===
 
=== 緒言 ===
   
このページは基本的に教育目的で使われることを想定しています。''貴重な掛えのない''データを偶発的に削除または破損してしまって以前にデータの復元をしたことがない場合、すぐにコンピュータの電源を切って (電源オフボタンを押し続けるかコンセントを抜いて下さい、システムのシャットダウン機能を使ってはいけません) プロの助けを求めましょう。下で説明している手順の意味を完全に理解しないまま中途半端に従うと、状況がますます悪化する可能性が大いにあります。確実にそうなると云っても過言ではありません
+
このページは基本的に教育目的で使われることを想定しています。'''かえのない貴重な''' データを偶発的に削除または破損してしまって以前にデータの復元をしたことがない場合、すぐにコンピュータの電源を切って (電源オフボタンを押し続けるかコンセントを抜いて下さい、システムのシャットダウン機能を使ってはいけません) プロの助けを求めましょう。下で説明している手順の意味を完全に理解しないまま中途半端に従うと、状況がますます悪化する可能性があります。
  +
  +
{{Warning|以下に説明する手順のいずれかを完全に理解せずに実行すると、状況が悪化する可能性が非常に高くなります。}}
   
 
=== 故障したドライブ ===
 
=== 故障したドライブ ===
   
データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまず出来る限り早く出来る限り多くのデータを救出して、それからディスクを破棄するのが目標となるのが当然です。{{Pkg|ddrescue}} や {{Pkg|dd_rescue}} ユーティリティは、{{ic|dd}} と違って、エラーからのリカバリを繰り返し試行してドライブを前から後ろに、そして後ろから前に読み取って、データのサルベージを試みます。これらのユーティリティはログファイルを残すため途中経過を見失うことなくリカバリを停止したり再開することができます。
+
データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまずできる限り早くできる限り多くのデータを救出して、それからディスクを破棄するのが目標となるのが当然です。{{Pkg|ddrescue}} や {{Pkg|dd_rescue}} ユーティリティは、{{ic|dd}} と違って、エラーからのリカバリを繰り返し試行してドライブを前から後ろに、そして後ろから前に読み取って、データのサルベージを試みます。これらのユーティリティはログファイルを残すため途中経過を見失うことなくリカバリを停止したり再開することができます。
   
 
[[ディスクのクローン]]を参照してください。
 
[[ディスクのクローン]]を参照してください。
39行目: 41行目:
 
下のセクションで説明しているユーティリティをフラッシュメディアで使うには、問題のデバイスがブロックデバイスとして ({{ic|/dev}} 以下に) マウントされている必要があります。その際 PTP (Picture Transfer Protocol) モードを使っているデジタルカメラは利用できません。PTP カメラは libgphoto や libptp によって透過的に扱われます。この、"透過的"は PTP デバイスをブロックデバイスにできないことを意味します。PTP モードに取って代わるモードとして、USB Mass Storage (UMS) モードがありますが、カメラによってはサポートされていないことがあります。カメラによってはメニューアイテムから2つのモードを切り替えることが可能です。カメラのユーザーマニュアルを参照してください。カメラが UMS モードをサポートしてない場合はブロックデバイスとしてアクセスすることができないため、フラッシュメディアリーダーを使ってカメラから物理的に取り外したストレージメディアを利用するしかありません。
 
下のセクションで説明しているユーティリティをフラッシュメディアで使うには、問題のデバイスがブロックデバイスとして ({{ic|/dev}} 以下に) マウントされている必要があります。その際 PTP (Picture Transfer Protocol) モードを使っているデジタルカメラは利用できません。PTP カメラは libgphoto や libptp によって透過的に扱われます。この、"透過的"は PTP デバイスをブロックデバイスにできないことを意味します。PTP モードに取って代わるモードとして、USB Mass Storage (UMS) モードがありますが、カメラによってはサポートされていないことがあります。カメラによってはメニューアイテムから2つのモードを切り替えることが可能です。カメラのユーザーマニュアルを参照してください。カメラが UMS モードをサポートしてない場合はブロックデバイスとしてアクセスすることができないため、フラッシュメディアリーダーを使ってカメラから物理的に取り外したストレージメディアを利用するしかありません。
   
  +
== ユーティリティ一覧 ==
== Foremost==
 
   
  +
参照 [[Wikipedia:List of data recovery software#File Recovery]]
[http://foremost.sourceforge.net Foremost] はファイルのヘッダやフッタ、内部データ構造に基づいてファイルを復旧させるコンソールプログラムです。この手法は一般的にデータカービングと呼ばれます。Foremost は (dd, Safeback, Encase などで生成された) ディスクイメージのファイル上で動作させることも直接ドライブで動かすことも可能です。ヘッダやフッタを設定ファイルで指定したりコマンドラインのスイッチを使って固有のファイルタイプを指定できます。これらの固有タイプは指定されたファイルフォーマットのデータ構造を考察することで、より信頼性のある高速なリカバリを可能にします。
 
   
  +
* {{App|ddrutility|GNU {{Pkg|ddrescue}} 不良セクタに関連するファイルと NTFS 用の特別なツールを検索します。現在はサポートされていません。|https://sourceforge.net/projects/ddrutility/|{{AUR|ddrutility}}}}
[[Foremost]] の記事を参照してください。
 
  +
* {{App|[[Wikipedia:dvdisaster|dvdisaster]]|CD/DVD メディアの追加のエラー保護。|https://sourceforge.net/projects/dvdisaster/|{{AUR|dvdisaster}}}}
  +
* {{App|ext4magic|ext3 および ext4 ファイルシステムで削除または上書きされたファイルを回復します。|https://sourceforge.net/projects/ext4magic/|{{Pkg|ext4magic}}}}
  +
* {{App|[[Foremost]]|ヘッダー、フッター、および内部データ構造に基づいてファイルを回復するためのコンソール プログラム。このプロセスは、一般にデータカービングと呼ばれます。ヘッダーとフッターは構成ファイルで指定するか、コマンド ライン スイッチを使用して組み込みのファイル タイプを指定できます。|https://foremost.sourceforge.net/|{{Pkg|foremost}}}}
  +
* {{App|[[Wikipedia:PhotoRec|PhotoRec]]|ハードディスク、CD-ROM からのビデオ、ドキュメント、アーカイブ、およびデジタル カメラのメモリからの失われた写真を含む失われたファイルを回復するように設計されたファイルデータ回復ソフトウェア。|https://www.cgsecurity.org/|{{Pkg|testdisk}}}}
  +
* {{App|Scalpel|[[Foremost]] に基づいたファイル カービングおよびインデックス作成アプリケーションですが、はるかに効率的です。これにより、メディアからファイルタイプを復元するために、多数のヘッダーとフッターを指定できます。|https://github.com/sleuthkit/scalpel|{{AUR|scalpel-git}}}}
  +
* {{App|[[Wikipedia:TestDisk|TestDisk]]|特定の種類のウイルスや人為的エラー (誤ってパーティションテーブルを削除するなど) などの障害のあるソフトウェアが原因でこれらの症状が発生した場合に、失われたパーティションを回復したり、非起動ディスクを再度起動できるようにすることを主な目的として設計されたデータ回復ソフトウェア。|https://www.cgsecurity.org/|{{Pkg|testdisk}}}}
   
== Extundelete ==
+
== Ext4Magic ==
   
  +
{{Pkg|ext4magic}} は、ext3 および ext4 ファイル システムのリカバリ ツールです。
'''[http://extundelete.sourceforge.net/ Extundelete]''' は ext3 や ext4 パーティションから削除されてしまったファイルを戻すために作られた、ターミナルで動かすユーティリティです。最近パーティションから削除されたファイルや相対パスや inode 情報によって指定したファイルを全てリカバリすることができます。Extundelete はパーティションのマウントが解除されているときしか動作しないので注意してください。リカバリされたファイルは {{ic|RECOVERED_FILES/}} という名前のフォルダ下にある作業ディレクトリに保存されます。
 
   
  +
一部のファイル/フォルダを誤って削除した場合は、コンピュータの電源を '''切らないでください''' 最良の結果を得るには (実際、まともな結果を得るには)、ext4 ジャーナルをどこかに保存する必要があります。
=== インストール ===
 
   
  +
すぐにターミナルを開き、ファイルシステム ジャーナルのコピーをダンプします。
{{Pkg|extundelete}} は[[公式リポジトリ]]からインストールできます。
 
   
  +
# sudo debugfs -R "dump <8> /some/safe/path/sdXY.journal" /dev/sdXY
=== 使用方法 ===
 
   
  +
削除されたファイルがルート パーティションにあるかどうかに応じて、ジャーナルを別の場所に保存する必要があります。ルートパーティションの場合は、外部ドライブをマウントし、そこにジャーナルをダンプします。非ルートパーティションの場合は、他のパーティションでも構いません。データがクリーンアップされる可能性があるため、{{ic|/tmp}} への保存は避けてください。
''[http://linuxpoison.blogspot.com/2010/09/utility-to-recover-deleted-files-from.html Linux Poison] の記事から引用。''
 
   
  +
削除されたファイルがルート パーティションにある場合は、ジャーナルを保存した後、コンピューターの電源をオフにする必要があります。これを行うには、電源がオフになるまで電源ボタンを押し続けます。これにより、ディスクへの追加の書き込みが防止されます。 Arch ブータブル メディアからプロセスを続行します。それ以外の場合は、影響を受けるパーティションをアンマウントした後、起動したシステムを続行できます ({{ic|sudo umount /dev/sdXY}} または {{ic|sudo umount /home}} など。)
特定のパーティションからデータをリカバリするには、{{ic|/dev/sd''XN''}} という形で (''X'' は文字で ''N'' は数字)、パーティションのデバイス名を知る必要があります。ここの例では {{ic|/dev/sda4}} を使いますが、あなたのシステムではファイルシステムやデバイスの設定によって違う名前になります (例えば、MMC カードリーダーは {{ic|/dev/mmcblkNpN}} という命名規則を使います)。よくわからない場合は、{{ic|df}} を実行してください。現在マウントされているパーティションが表示されます。
 
   
  +
回復可能なファイルを一覧表示するには:
データをリカバリするパーティションを決めたら、次を実行してください:
 
# extundelete /dev/sda4 --restore-file ''directory''/''file''
 
サブディレクトリを指定する必要があり、パーティションの一番上からコマンドが実行されます。{{ic|/home/''SomeUserName''/}} のファイルをリカバリするには、次を実行 ({{ic|/home}} がパーティション上にある場合):
 
# extundelete /dev/sda4 restore-file ''SomeUserName''/''SomeFile''
 
素早く複数のファイルをリカバリするために、extundelete には {{ic|--restore-files}} オプションもあります。
 
   
  +
# ext4magic /dev/sdXY -a "$(date -d "-2hours" +%s)" -f deleted/folders/root -j /some/safe/path/sdXY.journal -l
ディレクトリ全体をリカバリするには、次を実行:
 
# extundelete /dev/sda4 --restore-directory ''SomeUserName''/''SomeDirectory''
 
   
  +
* {{ic|-a}} 特定の Unix エポック以降に削除されたファイルのみが表示されるようにフィルターを適用します。この例では、過去2時間に設定されています。 Arch のブータブル メディアから実行している場合、絶対時間を使用する前にタイムゾーン ({{ic|1=export TZ='Europe/Berlin'}}) を変更することをお勧めします。指定しない場合、デフォルトは過去24時間です。
上級者ならば、extundelete でブロックや inode を手動でリカバリするために、debugfs を使ってリカバリする inode を探して、それから次のコマンドを実行することができます:
 
  +
* {{ic|-f}} は {{ic|ext4magic}} が特定のサブフォルダー内のファイルのみを一覧表示する必要があることを示します。このパスは、パーティション ルートに対する相対パスです。
# extundelete --restore-inode ''inode''
 
  +
* {{ic|-j}} は、{{ic|ext4magic}} がジャーナルの特定のバックアップを使用する必要があることを示します。それ以外の場合は、コンピューターを再起動した場合に削除の記録が含まれていない通常のシステム ジャーナルが使用されます。
''inode'' は適当な inode に置き換えて下さい。空白を入れずに、カンマで区切ることでリカバリする inode を増やすことができます。
 
  +
* {{ic|-l}} は、削除されたファイルを一覧表示します
   
  +
ファイルは、最初の列に回復可能なパーセンテージとともに一覧表示されます。
最後に、パーティション全体から削除されたファイル全てをリカバリするには、次を実行:
 
  +
# extundelete /dev/sda4 --restore-all
 
  +
すべてのファイルを 100% の回復可能性で実際に回復するには、次のコマンドを実行します。
  +
  +
# ext4magic /dev/sdXY -a "$(date -d "-2hours" +%s)" -f deleted/folders/root -j /some/safe/path/sdXY.journal -d /recovery/path -r
  +
  +
* {{ic|-d}} は、復元されたファイルが保存されるターゲットを示します。
  +
* {{ic|-r}} は、回復可能性が100%のファイルのみを回復する必要があることを示します。{{ic|-m}} はより多くのファイルを復元しようとしますが、時間がかかります。
  +
  +
ジャーナル バックアップが見つからない場合でも、ファイルの回復を試みることができますが、結果は良くないことが予想されます。
  +
  +
過去24時間以内に削除されたすべてのファイルを復元するには:
  +
  +
# ext4magic /dev/sdXY -r
  +
  +
ディレクトリまたはファイルをリカバリするには:
  +
  +
# ext4magic /dev/sdXY -f path/to/lost/file -r
  +
  +
''小文字の r'' フラグ {{ic|-r}} は、上書きされていない完全なファイルのみを復元します。
  +
部分的に上書きされた壊れたファイルも回復するには、''大文字の R'' フラグ {{ic|-R}} を使用します。
  +
これにより、削除されていないファイルと空のディレクトリも復元されます。
  +
  +
デフォルトの宛先は {{ic|./RECOVERDIR}} です
  +
オプション {{ic|-d path/to/dest/dir}} を追加することで変更できます。
  +
  +
宛先ディレクトリにファイルが存在する場合、
  +
新しいファイルの名前は、末尾にハッシュ記号 {{ic|#}} を付けて変更されます。
  +
  +
''5日前'' 以降に削除されたファイルを復元するには:
  +
  +
# ext4magic /dev/sdXY -f path/to/lost/file -a $(date -d -5days +%s) -r
  +
  +
ファイル リストを使用するには:
  +
  +
# ext4magic /dev/sdXY -f path/to/lost/file -Lx | grep -a ^--- >recovery-files-big.txt
  +
# ext4magic /dev/sdXY -i recovery-files-big.txt -R
  +
  +
# ext4magic /dev/sdXY -f path/to/lost/file -lx | grep -a '^ 100%' >recovery-files-small.txt
  +
# ext4magic /dev/sdXY -i recovery-files-small.txt -r
  +
  +
''大文字の L''フラグ {{ic|-L}} と ''小文字の l'' フラグ {{ic|-l}} の違いは、
  +
2つの ''R'' フラグ {{ic|-R}} と {{ic|-r}} (上記参照) の間と同じです。
  +
  +
バイナリファイル名を保持するには、{{ic|grep -a}} を使用します。
  +
  +
ファイルリストを使用すると、たとえばファイル拡張子でファイルをフィルタリングできます。
  +
  +
# cat recovery-files-big.txt | grep -a '\.jpg"$' >recovery-files-big-jpg.txt
  +
  +
... またはファイルリストを分割するには:
  +
  +
# cat recovery-files-big.txt | split -l 100 - recovery-files-big-100-each-
   
 
== Testdisk と PhotoRec ==
 
== Testdisk と PhotoRec ==
   
TestDisk と Photorec はどちらも [http://www.gnu.org/licenses/gpl.html GNU Public License] (GPL) でライセンスされているオープンソースのデータリカバリユーティリティです。
+
TestDisk と Photorec はどちらも [https://www.gnu.org/licenses/gpl.html GNU Public License] (GPL) でライセンスされているオープンソースのデータリカバリユーティリティです。
   
'''TestDisk''' は主として欠陥ソフトウェア特定のタイプのウイルス、もしくはパーティションテーブルの偶発的な削除といったヒューマンエラーによって引き起こされた、パーティションの喪失を回復したり起動しなくなったディスクをもう一度起動できるようにするために作られまし
+
'''TestDisk''' は主、ソフトウェアの欠陥、特定の種類のウイルス、またはパーティションテーブルのった削除などの人為的エラーによってこれらの症状が引き起こされた場合に失われたパーティションを回復したり起動していディスクを再び起動可能にしたりできるように設計さていす。TestDisk は、NTFS、FAT12、FAT16、FAT32、exFAT、ext2、ext3、ext4、btrfs、BeFS、CramFS、HFS、JFS、Linux Raid、Linux Swap、LVM、LVM2、NSS、ReiserFS、UFS、XFS を含む多数のファイルシステムを検出ます。FAT、NTFS、exFAT、および ext2 ファイルシステムからファイルの削除を取り消すこともできます
   
'''PhotoRec''' は写真・動画・文章などの消失してしまったファイルをハードディスクや CD-ROM からリカバリするために作られたファイル復元ソフトウェアです (ヒント: '''Photo'''graph'''Rec'''overy)。PhotoRec はファイルシステム無視して素のデータを探し当てので、再フォーマットされたり完全に破壊されたファイルシステムやパーティションテーブルでも動作します。
+
'''PhotoRec''' はハードディスクや CD-ROM から写真 (ヒント: '''Photo'''graph'''Rec'''overy)、ビデオ、ドキュメント、アーカイブなどの失われたファイルを回復するために設計されたファイル回復ソフトウェアです。PhotoRec はファイルシステム無視して基礎となるデータを追跡すため、再フォーマットされたファイルシステムや深刻な損傷を受けたファイルシステムやパーティションテーブルでも動作します。
   
 
=== インストール ===
 
=== インストール ===
   
[[公式リポジトリ]]の {{Pkg|testdisk}} TestDisk と PhotoRec が両方入っています。
+
{{Pkg|testdisk}} パッケージで TestDisk と PhotoRec が両方インストールできます。
  +
  +
=== 使用方法 ===
  +
  +
{{pkg|ddrescue}} などを実行して {{ic|image.img}} を作成した後、{{ic|photorec image.img}} でターミナル UI が開くので検索したいファイルタイプと復元したファイルの保存場所を指定してください。
   
 
=== photorec によってリカバリされたファイル ===
 
=== photorec によってリカバリされたファイル ===
  +
photorec ユーティリティはリカバリしたファイルを番号付きのディレクトリに (ほとんどのファイルにおいて) ランダムな名前で保存します。例: {{ic|./recup_dir.1/f872690288.jpg}}, {{ic|./recup_dir.1/f864563104_wmclockmon-0.1.0.tar.gz}}。
 
  +
photorec ユーティリティはリカバリしたファイルを番号付きのディレクトリに (ほとんどのファイルにおいて) ランダムな名前で保存します。例: {{ic|./recup_dir.1/f872690288.jpg}}, {{ic|./recup_dir.1/f864563104_wmclockmon-0.1.0.tar.gz}}
   
 
=== 参照 ===
 
=== 参照 ===
   
 
* 元のファイル名を取得する方法: [http://www.cgsecurity.org/wiki/PhotoRec_FAQ#How_to_get_the_original_filenames_.3F PhotoRec FAQ]
 
* 元のファイル名を取得する方法: [http://www.cgsecurity.org/wiki/PhotoRec_FAQ#How_to_get_the_original_filenames_.3F PhotoRec FAQ]
  +
* 独自のカスタムファイル署名を追加する方法: [https://www.cgsecurity.org/wiki/Add_your_own_extension_to_PhotoRec CGSecurity Wiki]
 
* Wiki (TestDisk): http://www.cgsecurity.org/wiki/TestDisk
 
* Wiki (TestDisk): http://www.cgsecurity.org/wiki/TestDisk
 
* Wiki (Photorec): http://www.cgsecurity.org/wiki/PhotoRec
 
* Wiki (Photorec): http://www.cgsecurity.org/wiki/PhotoRec
103行目: 164行目:
 
スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで {{ic|dumpe2fs -h}} を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。
 
スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで {{ic|dumpe2fs -h}} を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。
   
スーパーブロックの場所を求める別の方法として mke2fs の -n オプションを使う方法もあります。'''絶対に''' {{ic|-n}} フラグを使うようにして下さい、{{ic|mke2fs}} の man ページによると、"''実際にはファイルシステムを作らないが、あたかもファイルシステムを作成しているかのように表示を出す。このオプションは、ある特定のファイルシステムのバックアップスーパーブロックの位置を知るのに利用できる。ただしこの際 mke2fs にはそのファイルシステムを作ったときと同じパラメータを渡す必要がある (もちろん -n は加えてよい!)''"。
+
スーパーブロックの場所を求める別の方法として mke2fs の -n オプションを使う方法もあります。'''絶対に''' {{ic|-n}} フラグを使うようにして下さい、{{man|8|mke2fs}} によると、"''実際にはファイルシステムを作らないが、あたかもファイルシステムを作成しているかのように表示を出す。このオプションは、ある特定のファイルシステムのバックアップスーパーブロックの位置を知るのに利用できる。ただしこの際 mke2fs にはそのファイルシステムを作ったときと同じパラメータを渡す必要がある (もちろん -n は加えてよい!)''"。
  +
  +
詳しくは {{man|8|e2fsck}} と {{man|8|dumpe2fs}} を参照してください。
   
 
=== インストール ===
 
=== インストール ===
   
 
{{ic|e2fsck}} と {{ic|dumpe2fs}} はどちらも {{pkg|e2fsprogs}} として Arch のベースインストールに含まれています。
 
{{ic|e2fsck}} と {{ic|dumpe2fs}} はどちらも {{pkg|e2fsprogs}} として Arch のベースインストールに含まれています。
 
=== 参照 ===
 
 
* e2fsck の man ページ: http://phpunixman.sourceforge.net/index.php/man/e2fsck/8
 
* dumpe2fs の man ページ: http://phpunixman.sourceforge.net/index.php?parameter=dumpe2fs&mode=man
 
   
 
== raw ディスクイメージを使う ==
 
== raw ディスクイメージを使う ==
124行目: 182行目:
   
 
{{Tip|
 
{{Tip|
  +
* {{ic|-f}} フラグはイメージをループデバイスにマウントします。
* The {{ic|-f}} flag mounts the image to the next available loop device.
 
  +
* {{ic|-P}} フラグは全てのパーティションに対してデバイスを作成します。
* The {{ic|-P}} flag creates additional devices for every partition.
 
 
}}
 
}}
   
154行目: 212行目:
 
ブロックデバイスを直接検索して、ハードドライブから削除してしまったテキストファイルを探すことができます。ファイルをリカバリするときはなるべく一意な文字列がファイルに必要です。
 
ブロックデバイスを直接検索して、ハードドライブから削除してしまったテキストファイルを探すことができます。ファイルをリカバリするときはなるべく一意な文字列がファイルに必要です。
   
Use {{ic|grep}} to search for fixed strings ({{ic|-F}}) directly on the partition:
+
{{ic|grep}} を使って直接パーティションから固定文字列 ({{ic|-F}}) を検索:
   
 
$ grep -a -C 200 -F 'Unique string in text file' /dev/sd''XN'' > ''OutputFile''
 
$ grep -a -C 200 -F 'Unique string in text file' /dev/sd''XN'' > ''OutputFile''
   
  +
運が良ければ、削除されたファイルの中身が ''OutputFile'' に出力されます。手動で文字列の周囲からファイルを抽出できます。
Hopefully, the content of the deleted file is now in ''OutputFile'', which can be extracted from the surrounding context manually.
 
   
  +
{{Note|grep の {{ic|-C 200}} オプションはマッチした文字列の前後200行を出力します。{{ic|-A}} や {{ic|-B}} フラグで前の行あるいは後の行だけを出力することもできます。探しているファイルが長い場合は必要に応じて指定する行数を調整してください。}}
{{Note|The {{ic|-C 200}} option tells grep to print 200 lines of context from before and after each match of the string. You may need to adjust this if the file you are looking for is very long.}}
 
   
 
== 参照 ==
 
== 参照 ==

2024年7月10日 (水) 20:20時点における最新版

関連記事

この記事では Linux でデータをリカバリ・復活させる方法をまとめています。

特記事項

緒言

このページは基本的に教育目的で使われることを想定しています。かけがえのない貴重な データを偶発的に削除または破損してしまって以前にデータの復元をしたことがない場合、すぐにコンピュータの電源を切って (電源オフボタンを押し続けるかコンセントを抜いて下さい、システムのシャットダウン機能を使ってはいけません) プロの助けを求めましょう。下で説明している手順の意味を完全に理解しないまま中途半端に従うと、状況がますます悪化する可能性があります。

警告: 以下に説明する手順のいずれかを完全に理解せずに実行すると、状況が悪化する可能性が非常に高くなります。

故障したドライブ

データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまずできる限り早くできる限り多くのデータを救出して、それからディスクを破棄するのが目標となるのが当然です。ddrescuedd_rescue ユーティリティは、dd と違って、エラーからのリカバリを繰り返し試行してドライブを前から後ろに、そして後ろから前に読み取って、データのサルベージを試みます。これらのユーティリティはログファイルを残すため途中経過を見失うことなくリカバリを停止したり再開することができます。

ディスクのクローンを参照してください。

ddrescue などのユーティリティを使って作成したイメージファイルは物理デバイスと同じようにマウントすることができ安全に作業することが可能です。常にオリジナルイメージのコピーを作成して問題が生じた時にイメージを元に戻せるようにしておくと良いでしょう。

故障しているドライブの読み込みを良くさせる実証済みの方法としてドライブを低温下に置く方法があります。少しの間だけ冷凍庫につっこむことも効果がありますが、あまりにも急速にドライブを冷たいところから温かいところへ移動しないようにくれぐれも注意してください、結露が起こってしまうからです。復旧を行う PC にケーブルを接続したままドライブを冷凍庫に入れるのがよく効きます。

故障中のディスクでファイルシステムのチェックを行ってはいけません、大抵は問題を深刻化させることになるでしょう。読み取り専用でマウントしてください。

フラッシュメディアや小さなパーティションのバックアップ

(マウントされているかどうかを問わず) 'ライブ'パーティションで作業をするのに代わる方法として、問題のファイルシステムがあまり大きすぎず、イメージファイルを作るのに十分な HDD の空き容量があるなら、イメージを使って作業を行うというのがたびたび推奨されます。例えば、USB メモリや携帯音楽プレーヤー、携帯電話などのフラッシュメモリデバイスは大抵の場合そんなにサイズが大きくないためイメージにすることが可能です。

下に記載されているユーティリティの man ページを読んでイメージファイルを扱えるか確認してください。

イメージを作成するには、以下のように dd を使います:

# dd if=/dev/target_partition of=/home/user/partition.image

デジタルカメラでの作業

下のセクションで説明しているユーティリティをフラッシュメディアで使うには、問題のデバイスがブロックデバイスとして (/dev 以下に) マウントされている必要があります。その際 PTP (Picture Transfer Protocol) モードを使っているデジタルカメラは利用できません。PTP カメラは libgphoto や libptp によって透過的に扱われます。この、"透過的"は PTP デバイスをブロックデバイスにできないことを意味します。PTP モードに取って代わるモードとして、USB Mass Storage (UMS) モードがありますが、カメラによってはサポートされていないことがあります。カメラによってはメニューアイテムから2つのモードを切り替えることが可能です。カメラのユーザーマニュアルを参照してください。カメラが UMS モードをサポートしてない場合はブロックデバイスとしてアクセスすることができないため、フラッシュメディアリーダーを使ってカメラから物理的に取り外したストレージメディアを利用するしかありません。

ユーティリティ一覧

参照 Wikipedia:List of data recovery software#File Recovery

  • ddrutility — GNU ddrescue 不良セクタに関連するファイルと NTFS 用の特別なツールを検索します。現在はサポートされていません。
https://sourceforge.net/projects/ddrutility/ || ddrutilityAUR
  • dvdisaster — CD/DVD メディアの追加のエラー保護。
https://sourceforge.net/projects/dvdisaster/ || dvdisasterAUR
  • ext4magic — ext3 および ext4 ファイルシステムで削除または上書きされたファイルを回復します。
https://sourceforge.net/projects/ext4magic/ || ext4magic
  • Foremost — ヘッダー、フッター、および内部データ構造に基づいてファイルを回復するためのコンソール プログラム。このプロセスは、一般にデータカービングと呼ばれます。ヘッダーとフッターは構成ファイルで指定するか、コマンド ライン スイッチを使用して組み込みのファイル タイプを指定できます。
https://foremost.sourceforge.net/ || foremost
  • PhotoRec — ハードディスク、CD-ROM からのビデオ、ドキュメント、アーカイブ、およびデジタル カメラのメモリからの失われた写真を含む失われたファイルを回復するように設計されたファイルデータ回復ソフトウェア。
https://www.cgsecurity.org/ || testdisk
  • ScalpelForemost に基づいたファイル カービングおよびインデックス作成アプリケーションですが、はるかに効率的です。これにより、メディアからファイルタイプを復元するために、多数のヘッダーとフッターを指定できます。
https://github.com/sleuthkit/scalpel || scalpel-gitAUR
  • TestDisk — 特定の種類のウイルスや人為的エラー (誤ってパーティションテーブルを削除するなど) などの障害のあるソフトウェアが原因でこれらの症状が発生した場合に、失われたパーティションを回復したり、非起動ディスクを再度起動できるようにすることを主な目的として設計されたデータ回復ソフトウェア。
https://www.cgsecurity.org/ || testdisk

Ext4Magic

ext4magic は、ext3 および ext4 ファイル システムのリカバリ ツールです。

一部のファイル/フォルダを誤って削除した場合は、コンピュータの電源を 切らないでください 最良の結果を得るには (実際、まともな結果を得るには)、ext4 ジャーナルをどこかに保存する必要があります。

すぐにターミナルを開き、ファイルシステム ジャーナルのコピーをダンプします。

# sudo debugfs -R "dump <8> /some/safe/path/sdXY.journal" /dev/sdXY

削除されたファイルがルート パーティションにあるかどうかに応じて、ジャーナルを別の場所に保存する必要があります。ルートパーティションの場合は、外部ドライブをマウントし、そこにジャーナルをダンプします。非ルートパーティションの場合は、他のパーティションでも構いません。データがクリーンアップされる可能性があるため、/tmp への保存は避けてください。

削除されたファイルがルート パーティションにある場合は、ジャーナルを保存した後、コンピューターの電源をオフにする必要があります。これを行うには、電源がオフになるまで電源ボタンを押し続けます。これにより、ディスクへの追加の書き込みが防止されます。 Arch ブータブル メディアからプロセスを続行します。それ以外の場合は、影響を受けるパーティションをアンマウントした後、起動したシステムを続行できます (sudo umount /dev/sdXY または sudo umount /home など。)

回復可能なファイルを一覧表示するには:

# ext4magic /dev/sdXY -a "$(date -d "-2hours" +%s)" -f deleted/folders/root -j /some/safe/path/sdXY.journal -l
  • -a 特定の Unix エポック以降に削除されたファイルのみが表示されるようにフィルターを適用します。この例では、過去2時間に設定されています。 Arch のブータブル メディアから実行している場合、絶対時間を使用する前にタイムゾーン (export TZ='Europe/Berlin') を変更することをお勧めします。指定しない場合、デフォルトは過去24時間です。
  • -fext4magic が特定のサブフォルダー内のファイルのみを一覧表示する必要があることを示します。このパスは、パーティション ルートに対する相対パスです。
  • -j は、ext4magic がジャーナルの特定のバックアップを使用する必要があることを示します。それ以外の場合は、コンピューターを再起動した場合に削除の記録が含まれていない通常のシステム ジャーナルが使用されます。
  • -l は、削除されたファイルを一覧表示します

ファイルは、最初の列に回復可能なパーセンテージとともに一覧表示されます。

すべてのファイルを 100% の回復可能性で実際に回復するには、次のコマンドを実行します。

# ext4magic /dev/sdXY -a "$(date -d "-2hours" +%s)" -f deleted/folders/root -j /some/safe/path/sdXY.journal -d /recovery/path -r
  • -d は、復元されたファイルが保存されるターゲットを示します。
  • -r は、回復可能性が100%のファイルのみを回復する必要があることを示します。-m はより多くのファイルを復元しようとしますが、時間がかかります。

ジャーナル バックアップが見つからない場合でも、ファイルの回復を試みることができますが、結果は良くないことが予想されます。

過去24時間以内に削除されたすべてのファイルを復元するには:

# ext4magic /dev/sdXY -r

ディレクトリまたはファイルをリカバリするには:

# ext4magic /dev/sdXY -f path/to/lost/file -r

小文字の r フラグ -r は、上書きされていない完全なファイルのみを復元します。 部分的に上書きされた壊れたファイルも回復するには、大文字の R フラグ -R を使用します。 これにより、削除されていないファイルと空のディレクトリも復元されます。

デフォルトの宛先は ./RECOVERDIR です オプション -d path/to/dest/dir を追加することで変更できます。

宛先ディレクトリにファイルが存在する場合、 新しいファイルの名前は、末尾にハッシュ記号 # を付けて変更されます。

5日前 以降に削除されたファイルを復元するには:

# ext4magic /dev/sdXY -f path/to/lost/file -a $(date -d -5days +%s) -r

ファイル リストを使用するには:

# ext4magic /dev/sdXY -f path/to/lost/file -Lx | grep -a ^--- >recovery-files-big.txt
# ext4magic /dev/sdXY -i recovery-files-big.txt -R

# ext4magic /dev/sdXY -f path/to/lost/file -lx | grep -a '^  100%' >recovery-files-small.txt
# ext4magic /dev/sdXY -i recovery-files-small.txt -r

大文字の Lフラグ -L小文字の l フラグ -l の違いは、 2つの R フラグ -R-r (上記参照) の間と同じです。

バイナリファイル名を保持するには、grep -a を使用します。

ファイルリストを使用すると、たとえばファイル拡張子でファイルをフィルタリングできます。

# cat recovery-files-big.txt | grep -a '\.jpg"$' >recovery-files-big-jpg.txt

... またはファイルリストを分割するには:

# cat recovery-files-big.txt | split -l 100 - recovery-files-big-100-each-

Testdisk と PhotoRec

TestDisk と Photorec はどちらも GNU Public License (GPL) でライセンスされているオープンソースのデータリカバリユーティリティです。

TestDisk は主に、ソフトウェアの欠陥、特定の種類のウイルス、またはパーティションテーブルの誤った削除などの人為的エラーによってこれらの症状が引き起こされた場合に、失われたパーティションを回復したり、起動していないディスクを再び起動可能にしたりできるように設計されています。TestDisk は、NTFS、FAT12、FAT16、FAT32、exFAT、ext2、ext3、ext4、btrfs、BeFS、CramFS、HFS、JFS、Linux Raid、Linux Swap、LVM、LVM2、NSS、ReiserFS、UFS、XFS を含む多数のファイルシステムを検出します。FAT、NTFS、exFAT、および ext2 ファイルシステムからファイルの削除を取り消すこともできます。

PhotoRec は、ハードディスクや CD-ROM から写真 (ヒント: PhotographRecovery)、ビデオ、ドキュメント、アーカイブなどの失われたファイルを回復するために設計されたファイル回復ソフトウェアです。PhotoRec はファイルシステムを無視して基礎となるデータを追跡するため、再フォーマットされたファイルシステムや深刻な損傷を受けたファイルシステムやパーティションテーブルでも動作します。

インストール

testdisk パッケージで TestDisk と PhotoRec が両方インストールできます。

使用方法

ddrescue などを実行して image.img を作成した後、photorec image.img でターミナル UI が開くので検索したいファイルタイプと復元したファイルの保存場所を指定してください。

photorec によってリカバリされたファイル

photorec ユーティリティはリカバリしたファイルを番号付きのディレクトリに (ほとんどのファイルにおいて) ランダムな名前で保存します。例: ./recup_dir.1/f872690288.jpg, ./recup_dir.1/f864563104_wmclockmon-0.1.0.tar.gz

参照

e2fsck

e2fsck は Arch のベースインストールに含まれている ext2/ext3 ファイルシステムのチェッカーです。e2fsck は正しいスーパーブロックを頼りにします。スーパーブロックにはファイルシステム全体のパラメータが記述されています。このデータはとても重要なため、パーティションの至るところに複数のスーパーブロックのコピーが分散して置かれます。-b オプションを使うことで、e2fsck は別のスーパーブロックを使うことが可能です。メインであり、最初のスーパーブロックが破損したときにこれは有用です。

スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで dumpe2fs -h を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。

スーパーブロックの場所を求める別の方法として mke2fs の -n オプションを使う方法もあります。絶対に -n フラグを使うようにして下さい、mke2fs(8) によると、"実際にはファイルシステムを作らないが、あたかもファイルシステムを作成しているかのように表示を出す。このオプションは、ある特定のファイルシステムのバックアップスーパーブロックの位置を知るのに利用できる。ただしこの際 mke2fs にはそのファイルシステムを作ったときと同じパラメータを渡す必要がある (もちろん -n は加えてよい!)"。

詳しくは e2fsck(8)dumpe2fs(8) を参照してください。

インストール

e2fsckdumpe2fs はどちらも e2fsprogs として Arch のベースインストールに含まれています。

raw ディスクイメージを使う

ddrescue や dd を使ってドライブをバックアップした後、物理ドライブとしてイメージをマウントする必要がある場合、このセクションを見て下さい。

ディスク全体をマウント

ディスクイメージをループデバイスにマウントするには、losetup コマンドを使います:

# losetup -f -P /path/to/image
ヒント:
  • -f フラグはイメージをループデバイスにマウントします。
  • -P フラグは全てのパーティションに対してデバイスを作成します。

QEMU#loop モジュールでパーティションを自動検出するも参照。

パーティションをマウント

ディスクイメージ全体のパーティションをマウントできるようにしたい場合、上の手順に従って下さい。

ディスクイメージ全体をマウントしたら、通常の mount コマンドをループデバイスで使用します:

# mount /dev/loop0p1 /mnt/example

このコマンドは loop0 のイメージの最初のパーティションをマウントポイント /mnt/example のフォルダにマウントします。マウントポイントのディレクトリは必ず存在している必要があります。

ディスクのジオメトリ情報を取得

ディスクイメージ全体をループバックデバイスとしてマウントしたら、デバイスのレイアウトを検査することができます。

QEMU を使って NTFS を修復する

一つ以上 NTFS パーティションを含んでいるディスクイメージでは Linux 用の良い NTFS ファイルシステムチェッカーが存在しないため Windows で chkdsk をする必要があります。QEMU は raw ディスクイメージを仮想マシンの中で本当のハードディスクのように使うことができます:

# qemu -hda /path/to/primary.img -hdb /path/to/DamagedDisk.img

Windows が primary.img にインストールされている場合、それを使って /path/to/DamagedDisk.img のパーティションをチェックできるでしょう。

警告: 新しいバージョンの Windows で作成した NTFS パーティションを古いバージョンの Windows でチェックしないでください。例えば Windows 8 が作成した NTFS パーティションに Windows XP がダメージを与えることがあります。サポートされているメタデータの設定を修復して、サポートされていないエントリを削除したり壊してしまうためです。

テキストファイルのリカバリ

ブロックデバイスを直接検索して、ハードドライブから削除してしまったテキストファイルを探すことができます。ファイルをリカバリするときはなるべく一意な文字列がファイルに必要です。

grep を使って直接パーティションから固定文字列 (-F) を検索:

$ grep -a -C 200 -F 'Unique string in text file' /dev/sdXN > OutputFile

運が良ければ、削除されたファイルの中身が OutputFile に出力されます。手動で文字列の周囲からファイルを抽出できます。

ノート: grep の -C 200 オプションはマッチした文字列の前後200行を出力します。-A-B フラグで前の行あるいは後の行だけを出力することもできます。探しているファイルが長い場合は必要に応じて指定する行数を調整してください。

参照