「ファイルリカバリ」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (校正(でき・出来)) |
|||
(5人の利用者による、間の13版が非表示) | |||
2行目: | 2行目: | ||
[[Category:システムリカバリ]] |
[[Category:システムリカバリ]] |
||
[[en:File recovery]] |
[[en:File recovery]] |
||
− | [[zh- |
+ | [[zh-hans:File recovery]] |
+ | {{Related articles start}} |
||
− | この記事では Arch Linux でデータをリカバリ・復活させる方法をまとめています。 |
||
+ | {{Related3|Post recovery tasks#Photorec|リカバリ後の作業#Photorec}} |
||
+ | {{Related articles end}} |
||
+ | この記事では Linux でデータをリカバリ・復活させる方法をまとめています。 |
||
== 特記事項 == |
== 特記事項 == |
||
9行目: | 12行目: | ||
=== 緒言 === |
=== 緒言 === |
||
− | このページは基本的に教育目的で使われることを想定しています。''' |
+ | このページは基本的に教育目的で使われることを想定しています。'''かけがえのない貴重な''' データを偶発的に削除または破損してしまって以前にデータの復元をしたことがない場合、すぐにコンピュータの電源を切って (電源オフボタンを押し続けるかコンセントを抜いて下さい、システムのシャットダウン機能を使ってはいけません) プロの助けを求めましょう。下で説明している手順の意味を完全に理解しないまま中途半端に従うと、状況がますます悪化する可能性があります。 |
+ | |||
+ | {{Warning|以下に説明する手順のいずれかを完全に理解せずに実行すると、状況が悪化する可能性が非常に高くなります。}} |
||
=== 故障したドライブ === |
=== 故障したドライブ === |
||
− | データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまず |
+ | データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまずできる限り早くできる限り多くのデータを救出して、それからディスクを破棄するのが目標となるのが当然です。{{Pkg|ddrescue}} や {{Pkg|dd_rescue}} ユーティリティは、{{ic|dd}} と違って、エラーからのリカバリを繰り返し試行してドライブを前から後ろに、そして後ろから前に読み取って、データのサルベージを試みます。これらのユーティリティはログファイルを残すため途中経過を見失うことなくリカバリを停止したり再開することができます。 |
− | [[ |
+ | [[ディスクのクローン]]を参照してください。 |
ddrescue などのユーティリティを使って作成したイメージファイルは物理デバイスと同じようにマウントすることができ安全に作業することが可能です。常にオリジナルイメージのコピーを作成して問題が生じた時にイメージを元に戻せるようにしておくと良いでしょう。 |
ddrescue などのユーティリティを使って作成したイメージファイルは物理デバイスと同じようにマウントすることができ安全に作業することが可能です。常にオリジナルイメージのコピーを作成して問題が生じた時にイメージを元に戻せるようにしておくと良いでしょう。 |
||
36行目: | 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}}}} |
||
− | == |
+ | == 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 はどちらも [ |
+ | 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''' は |
+ | '''PhotoRec''' は、ハードディスクや CD-ROM から写真 (ヒント: '''Photo'''graph'''Rec'''overy)、ビデオ、ドキュメント、アーカイブなどの失われたファイルを回復するために設計されたファイル回復ソフトウェアです。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] |
||
+ | * 独自のカスタムファイル署名を追加する方法: [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 |
||
* ホームページ: http://www.cgsecurity.org/ |
* ホームページ: http://www.cgsecurity.org/ |
||
− | * [[Sort images by resolution|解像度で画像をソート]] |
||
− | * [[Restore name of a tar.gz archive|tar.gz アーカイブの名前を復元]] |
||
− | * [[Post recovery tasks|リカバリ後の作業]] |
||
== e2fsck == |
== e2fsck == |
||
102行目: | 164行目: | ||
スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで {{ic|dumpe2fs -h}} を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。 |
スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで {{ic|dumpe2fs -h}} を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。 |
||
− | スーパーブロックの場所を求める別の方法として mke2fs の -n オプションを使う方法もあります。'''絶対に''' {{ic|-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 ディスクイメージを使う == |
||
119行目: | 178行目: | ||
=== ディスク全体をマウント === |
=== ディスク全体をマウント === |
||
+ | ディスクイメージをループデバイスにマウントするには、{{ic|losetup}} コマンドを使います: |
||
− | To mount a complete disk image to the next free loop device, use the {{ic|losetup}} command: |
||
# losetup -f -P /path/to/image |
# losetup -f -P /path/to/image |
||
{{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. |
||
}} |
}} |
||
+ | |||
+ | [[QEMU#loop モジュールでパーティションを自動検出する]]も参照。 |
||
=== パーティションをマウント === |
=== パーティションをマウント === |
||
145行目: | 206行目: | ||
Windows が {{ic|''primary''.img}} にインストールされている場合、それを使って {{ic|''/path/to/DamagedDisk''.img}} のパーティションをチェックできるでしょう。 |
Windows が {{ic|''primary''.img}} にインストールされている場合、それを使って {{ic|''/path/to/DamagedDisk''.img}} のパーティションをチェックできるでしょう。 |
||
+ | {{Warning|新しいバージョンの Windows で作成した NTFS パーティションを古いバージョンの Windows でチェックしないでください。例えば Windows 8 が作成した NTFS パーティションに Windows XP がダメージを与えることがあります。サポートされている[[wikipedia:NTFS#Metafiles|メタデータ]]の設定を修復して、サポートされていないエントリを削除したり壊してしまうためです。}} |
||
− | == テキストファイルのリカバリ == |
||
+ | == テキストファイルのリカバリ == |
||
− | It's possible to find deleted plain text on a hard drive with a few commands. A preferably unique string from the file you are trying to recover is needed. |
||
+ | ブロックデバイスを直接検索して、ハードドライブから削除してしまったテキストファイルを探すことができます。ファイルをリカバリするときはなるべく一意な文字列がファイルに必要です。 |
||
− | First, use the {{ic|strings}} command to dump all the text from a partition: |
||
+ | {{ic|grep}} を使って直接パーティションから固定文字列 ({{ic|-F}}) を検索: |
||
− | # strings /dev/sd''XN'' > ''BigStringsFile'' |
||
+ | $ grep -a -C 200 -F 'Unique string in text file' /dev/sd''XN'' > ''OutputFile'' |
||
− | Then use {{ic|grep}} to filter through the content of ''BigStringsFile'': |
||
+ | 運が良ければ、削除されたファイルの中身が ''OutputFile'' に出力されます。手動で文字列の周囲からファイルを抽出できます。 |
||
− | $ grep -i -200 "Unique string in text file" ''BigStringsFile'' > ''GrepOutputFile'' |
||
+ | {{Note|grep の {{ic|-C 200}} オプションはマッチした文字列の前後200行を出力します。{{ic|-A}} や {{ic|-B}} フラグで前の行あるいは後の行だけを出力することもできます。探しているファイルが長い場合は必要に応じて指定する行数を調整してください。}} |
||
− | {{Note|The {{ic|-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 text you are looking for is very long.}} |
||
− | Hopefully, the correct deleted data is now in ''GrepOutputFile''. |
||
== 参照 == |
== 参照 == |
2024年7月10日 (水) 20:20時点における最新版
関連記事
この記事では Linux でデータをリカバリ・復活させる方法をまとめています。
目次
特記事項
緒言
このページは基本的に教育目的で使われることを想定しています。かけがえのない貴重な データを偶発的に削除または破損してしまって以前にデータの復元をしたことがない場合、すぐにコンピュータの電源を切って (電源オフボタンを押し続けるかコンセントを抜いて下さい、システムのシャットダウン機能を使ってはいけません) プロの助けを求めましょう。下で説明している手順の意味を完全に理解しないまま中途半端に従うと、状況がますます悪化する可能性があります。
故障したドライブ
データリカバリの方面では、物理ディスクをそのまま使うのではなくディスクのイメージを使って作業するのがベストです。一般的に、故障しているディスクは時間の経過と共に状態が悪化します。ディスクが故障したらまずできる限り早くできる限り多くのデータを救出して、それからディスクを破棄するのが目標となるのが当然です。ddrescue や dd_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 用の特別なツールを検索します。現在はサポートされていません。
- dvdisaster — CD/DVD メディアの追加のエラー保護。
- ext4magic — ext3 および ext4 ファイルシステムで削除または上書きされたファイルを回復します。
- Foremost — ヘッダー、フッター、および内部データ構造に基づいてファイルを回復するためのコンソール プログラム。このプロセスは、一般にデータカービングと呼ばれます。ヘッダーとフッターは構成ファイルで指定するか、コマンド ライン スイッチを使用して組み込みのファイル タイプを指定できます。
- PhotoRec — ハードディスク、CD-ROM からのビデオ、ドキュメント、アーカイブ、およびデジタル カメラのメモリからの失われた写真を含む失われたファイルを回復するように設計されたファイルデータ回復ソフトウェア。
- Scalpel — Foremost に基づいたファイル カービングおよびインデックス作成アプリケーションですが、はるかに効率的です。これにより、メディアからファイルタイプを復元するために、多数のヘッダーとフッターを指定できます。
- 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時間です。-f
はext4magic
が特定のサブフォルダー内のファイルのみを一覧表示する必要があることを示します。このパスは、パーティション ルートに対する相対パスです。-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
参照
- 元のファイル名を取得する方法: PhotoRec FAQ
- 独自のカスタムファイル署名を追加する方法: CGSecurity Wiki
- Wiki (TestDisk): http://www.cgsecurity.org/wiki/TestDisk
- Wiki (Photorec): http://www.cgsecurity.org/wiki/PhotoRec
- ホームページ: http://www.cgsecurity.org/
e2fsck
e2fsck は Arch のベースインストールに含まれている ext2/ext3 ファイルシステムのチェッカーです。e2fsck は正しいスーパーブロックを頼りにします。スーパーブロックにはファイルシステム全体のパラメータが記述されています。このデータはとても重要なため、パーティションの至るところに複数のスーパーブロックのコピーが分散して置かれます。-b
オプションを使うことで、e2fsck は別のスーパーブロックを使うことが可能です。メインであり、最初のスーパーブロックが破損したときにこれは有用です。
スーパーブロックがどこにあるのか確認するには、対象の、マウントされていないパーティションで dumpe2fs -h
を実行してください。ファイルシステムが作成されたときに設定された、ファイルシステムのブロックサイズによってスーパーブロックには異なる間隔があけられています。
スーパーブロックの場所を求める別の方法として mke2fs の -n オプションを使う方法もあります。絶対に -n
フラグを使うようにして下さい、mke2fs(8) によると、"実際にはファイルシステムを作らないが、あたかもファイルシステムを作成しているかのように表示を出す。このオプションは、ある特定のファイルシステムのバックアップスーパーブロックの位置を知るのに利用できる。ただしこの際 mke2fs にはそのファイルシステムを作ったときと同じパラメータを渡す必要がある (もちろん -n は加えてよい!)"。
詳しくは e2fsck(8) と dumpe2fs(8) を参照してください。
インストール
e2fsck
と dumpe2fs
はどちらも e2fsprogs として Arch のベースインストールに含まれています。
raw ディスクイメージを使う
ddrescue や dd を使ってドライブをバックアップした後、物理ドライブとしてイメージをマウントする必要がある場合、このセクションを見て下さい。
ディスク全体をマウント
ディスクイメージをループデバイスにマウントするには、losetup
コマンドを使います:
# losetup -f -P /path/to/image
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
のパーティションをチェックできるでしょう。
テキストファイルのリカバリ
ブロックデバイスを直接検索して、ハードドライブから削除してしまったテキストファイルを探すことができます。ファイルをリカバリするときはなるべく一意な文字列がファイルに必要です。
grep
を使って直接パーティションから固定文字列 (-F
) を検索:
$ grep -a -C 200 -F 'Unique string in text file' /dev/sdXN > OutputFile
運が良ければ、削除されたファイルの中身が OutputFile に出力されます。手動で文字列の周囲からファイルを抽出できます。
参照
- Data Recovery on the Ubuntu wiki