重要なファイルを誤って削除したことがありますか?誰がしません!わかりましたが、回復できますか?この投稿では、さまざまなファイルシステムでさまざまなプログラムを使用して、Linuxで削除されたファイルを復元する方法を学習します。
EXT3、EXT4などのさまざまなLinuxファイルシステム、さらにはFAT32やNTFSなどのWindowsファイルシステムから、SDカード、HDD、および削除されたパーティションから削除されたファイルを復元する方法を説明します。
削除されたパーティションからファイルを回復する
これはかなり問題です。多くの場合、Linuxユーザーは同時に複数のシステムをインストールすることが多く、インストールプロセス中に誤ってパーティションを削除する可能性があります。
しかし、それらの削除されたパーティションからファイルを回復する方法は?このためには、TestDiskと呼ばれるツールを使用してパーティションを回復する必要があります。
Testdiskは、強力なパーティション分析およびデータ回復ユーティリティです。 DebianやUbuntuなどのほとんどのLinuxディストリビューションにはTestDiskが付属しています。
一方、アプリケーションはクロスプラットフォームであり、Intel、MSDOS、Macなどの多数のパーティションテーブルをサポートします。これらは最も人気のあるパーティションテーブルです。
また、NTFS、EXT4などの多くのファイルシステム、およびBeOSやReiserFSなどの他の人気のないファイルシステムをサポートします。
ファイルを削除すると、ファイルが占有しているクラスターのリストが削除され、それらのセクターが使用可能になります。クラスタが上書きされていない場合、TestDiskはファイルを回復できます。
まず、次のようにアプリケーションを起動します:
$ testdisk
次に、ログ用の新しいファイルを作成するオプションがあります。作成する場合は、作成を選択します オプションを選択し、Enterキーを押します。ログファイルが必要ない場合は、[ログなし]オプションを選択します。
次に、システムによって認識されたディスクまたはパーティションがスキャンされます。この特定のケースでは、sdaは回復したいパーティションです。
TestDiskは、さまざまなタイプのパーティションテーブルを認識します。専用のものを使用していない限り、通常はIntelです。
次の画面では、プログラムにある一連のオプションが表示されます。この特定のケースでは、[分析]オプションを選択する必要があります。
このオプションを使用すると、プログラムはディスクを徹底的に分析して構造を見つけます。
次に、実行したい検索のタイプについて尋ねます。通常、クイック検索オプションを選択します。
運が良ければ、削除されたパーティションが表示されます。そうでない場合は、より詳細な検索を選択する必要があります。
次に、[書き込み]オプションを選択して、パーティションテーブルを書き込みます。終了したら、システムを再起動すると、パーティションが元に戻ります!
これらの手順の間、時間がかかる場合があることに注意してください。ディスクサイズによって異なります。
ファイルシステムの種類によっては、このパーティションにある場合があり、特定の指示に従います。詳細は後で説明します。
外付けドライブから削除されたファイルを復元する
ここで、外付けフラッシュドライブがあり、誤っていくつかのファイルを削除したと想像してみてください。それらを復元する方法は?
TestDiskのおかげで、プロセスは削除されたパーティションのプロセスと非常によく似たものになります。ただし、いくつかの違いがあります。
プログラムを起動するには、testdiskコマンドを使用します。また、次のようなパラメータとしてフラッシュドライブを追加できます:
$ sudo testdisk /dev/sdb
次に、[続行]を選択します。次に、パーティションテーブルの種類を選択します。
次に、[詳細オプション]を選択してファイルを復元します。
次のステップは、パーティションと[削除の取り消し]オプションを選択することです。
次に、パーティション上のすべての削除されたファイルが表示されます。
次に、復元されたファイルを配置する宛先フォルダーを選択します。現在のディレクトリにファイルを配置するには、最初のオプションでCを押す必要があります。
最後に、次のメッセージが表示されます:
おめでとう!ファイルが復元されました。
SDカードから削除されたファイルを復元する
通常、SDカードでは、マルチメディアファイルに使用されていることに気付くのが一般的です。したがって、これらのファイルにはより専門的なプログラムを使用することをお勧めします。
この場合、TestDiskに組み込まれているPhotorecというアプリケーションを使用します。
まず、SDカードをPCに挿入します。次に、ルートとしてphotorecを実行します:
$ sudo photorec [device]
次に、次の画像が表示されます。メディアを選択して続行し、Enterキーを押します。
次に、パーティションを選択します。 [オプション]を選択してEnterキーを押します。
そこに回復オプションが表示されます:
qを押すと、前の画面に戻ります。回復したいファイルの種類を選択する必要があります。これは、[ファイルオプション]オプションを選択することで実現されます。
sキーを押して、すべてのフォーマットを選択および選択解除します。正しいキーを使用して、回復するファイルの種類を選択することもできます。選択したオプションを保存するには、bキーを押します。 qキーを使用してメインメニューに戻ります。
次に、メインメニューで[検索]オプションを選択してプロセスを開始します。そして、ファイルシステムを選択します。
次に、2つのオプションが表示されます。無料で全体。通常、無料で十分です。詳細な分析を行う場合は、[全体]を選択しますが、プロセスが遅くなることに注意してください。
ここで、ファイルを保存する場所を選択する必要があります。これを行うには、cキーを押します。
宛先を選択すると、リカバリプロセスが開始されます。システムが崩壊してフリーズすることを忘れないでください。ですから、しばらくお待ちください。
最後に、発生したすべてのことを通知するメッセージが表示されます。
次に、結果を確認します。
NTFSから削除されたファイルを復元する
NTFSはWindowsファイルシステムです。コンピュータで両方のシステムを使用している場合は、このファイルシステムを使用してWindowsパーティションから削除されたファイルを復元する必要がある場合があります。
これを行うために、非常に簡単に使用できるntfsundeleteというツールがあります。
まず、ディスクまたはパーティションをスキャンする必要があります。例:
$ sudo ntfsundelete /dev/sda1
次に、次のコマンドを使用して、削除されたファイルを復元できます。
$ sudo ntfsundelete [HD_Or_partition] -u -m [filename]
回復されたファイルはrootユーザーに属します。最後のステップは、chownコマンドを使用してファイルの権限と所有者を変更することです。
FAT32からファイルを復元する
もう1つの一般的なWindowsファイルシステムはFAT32です。 TestDiskを使用すると、FAT32からファイルを回復できます。
したがって、rootユーザーとしてtestdiskを再度実行し、パラメーターとしてディスクを渡します。
$ sudo testdisk [partition/HD]
次に、上記の手順を続行してファイルを復元します。
メモリファイルの回復(iノードを使用)
別のプロセスで使用されているファイルを削除した場合は、iノードを使用してメモリから復元できます。
いくつかの初期条件を確立する必要があります。まず、削除されたファイルは別のプロセスによって開いたままにする必要があります 。次に、プロセスを確認し、最後にプロセスを回復して権限を変更する必要があります。
この場合、nanoエディターを使用してexample.txtというファイルを作成し、テキストを追加します。
$ nano example.txt
次に、変更を保存し、別のターミナルウィンドウを開いて、ファイルを使用します。たとえば、lessコマンドを使用します。
$ less example.txt
別のターミナルセッションを開き、ファイルを削除して、ファイルが削除されていることを確認します。
$ rm example.txt $ ls example.txt
ご覧のとおり、ファイルはもう存在しません。しかし、私たちはそれを回復することができます。これを行うには、ファイルのiノードに関連付けられているプロセスの番号を取得しましょう。
$ lsof | grep example.txt
ファイルを使用しているプロセスとコマンド(lessコマンド)に気付くでしょう。その画像から、2番目と4番目の値に注意を払う必要があります。これらは、それぞれプロセスのPIDとファイルの記述子です。
次に、次のコマンドを使用して回復します。
$ ls -l /proc/2325/fd/4
次に、それを好きな場所にコピーします。それで回復できます。
$ sudo cp /proc/2325/fd/4 .
次に、結果を確認してファイルを開きます:
このようにして、まだメモリ上にあり、iノードを使用するプロセスによって使用されている削除済みファイルを回復できます。
EXT4から削除されたファイルを回復する(extundeleteを使用)
EXT4は、ほとんどのLinuxディストリビューションのデフォルトのファイルシステムです。これは非常に高速で、Linuxカーネルによって非常によく利用されている技術的機能を備えています。
EXT4ファイルシステムからファイルを回復するために使用されるツールの1つは、extundeleteです。
Extundeleteは、EXT3またはEXT4ファイルシステムを使用してパーティションまたはディスクから削除されたファイルを回復できるようにするオープンソースアプリケーションです。使い方は簡単で、ほとんどのLinuxディストリビューションにデフォルトでインストールされています。
特定のファイルを回復するには、次のコマンドを使用するだけです。
$ sudo extundelete [device] -restore-file [pathfile]
例:
$ sudo extundelete /dev/sdb1 -restore-file home/angelo/other.txt
フォルダ内のすべてのファイルを回復する場合は、ワイルドカード文字を使用します:
$ extundelete /dev/sda6 -restore-file home/angelo/*
ただし、パーティションまたはディスク上のすべてのファイルを復元する場合は、次のコマンドで十分です。
$ extundelete /dev/sda6 -restore-all
したがって、回復されたファイルはRECOVERED_FILESディレクトリにあります。したがって、このようにして、extundeleteを使用して削除されたファイルを復元できます。
debugfsの使用
debugfsツールを使用して削除されたファイルを回復することも可能です。このツールは、削除されたファイルのiノード番号も使用します。ただし、これはEXT4ファイルシステムでのみ機能します。
操作も非常に簡単です。まず、パーティションまたはデバイスを入力する必要があります。
$ debugfs [device]
たとえば、
$ sudo debugfs /dev/sdb1
その後、しばらくすると、debugfsコンソールにログインして、最近削除されたファイルを検索できるようになります。
$ debugfs: lsdel
最初の列には、そのデバイスで削除されたファイルのiノード番号が表示されます。次に、次のコマンドを使用して復元します。
$ debugfs mi <inode_number>
そしてそれだけです。とても簡単です。
ext4magicの使用
Ext4ファイルシステムを使用してディスク上の削除されたファイルを回復する別の代替方法は、Ext4magicを使用することです。このアプリケーションも非常に簡単に使用できます。
アプリケーションの最も基本的な構文は次のとおりです。
$ sudo ext4magic [device] -f [folder_to_scan] -r -d [output_folder]
filesというフォルダから削除されたファイルを復元したい場合、コマンドは次のようになります。
$ sudo ext4magic /dev/sdb1 -r -d files
これが、ext4magicの使い方がいかに簡単かということです。これはすべて、Ext4がコミュニティでありオープンソースのファイルシステムであるという事実のおかげです。
上書きされたファイルを回復する(メスを使用)
Scapelは、フォーマットされたドライブ、上書きされたファイル、さらには破損したドライブからファイルを回復できる別のオープンソースツールです。スピードと効率でよく知られています。この意味で、それは考慮すべき代替案として浮上します。
メスはファイルシステムの助けを借りずにファイルを刻みます 。ファイルのヘッダーとフッターを抽出し、適切に設計されたアルゴリズムを使用してファイル構造全体を推測しようとします。
TestDiskと同様に、ほとんどのLinuxディストリビューションの公式リポジトリで利用できます。したがって、そのインストールは、ターミナルとディストリビューションのパッケージマネージャーの使用に限定されます。
Scapelを使用する最も速くて簡単な方法は、次のとおりです。
$ scalpel [device] -o [output_folder]
output_folderは、scapelが回復されたすべてのファイルを配置する場所を指定します。 Scalpelは出力ディレクトリ自体を作成することに注意してください。
しかし、Scapelはどのファイルを回復するかをどのように知るのでしょうか?それは、アプリケーション構成ファイルで定義されています。
この構成ファイルは通常、次の場所にあります。
/etc/scalpel/scalpel.conf
また、お気に入りのテキストエディタで開くことができ、検索するファイル形式を定義するために行のコメントを外すだけで済みます。
コメントを外したファイル形式。Scalpelが検索します。
次に、完全なScalpelコマンドを実行すると、出力フォルダーに復元されたファイルが表示されます。
$ sudo scalpel /dev/sdb1 -o recovered_files1
時々、メスはファイルの一部を復元します。これは、ドライブの状態と破損したデータの量によって異なります。
また、使用できる渇望アルゴリズムはたくさんありますが、ここではデータを渇望する基本的な方法について説明しました。
起動できないシステムからファイルを回復する
Ubuntuまたは他の同様のLinuxディストリビューションのLiveCDからアクセスする必要があるため、これはデリケートなケースです。起動したら、TestDiskを使用してデータの回復を試みることができます。
この場合、データを保存する場所に外付けドライブを使用する必要があります。一方、TestDiskがジョブを実行できない場合は、パーティションがExt4である限り、extundeleteまたはext4magicを試すこともできます。
動作しない場合は、上記のようにTestDiskを使用してパーティションを再生成してみてください。
結論
誤ってファイルを削除してしまう可能性があります。アイデアは、これらのファイルを回復するための適切なツールとテクニックを知ることです。
この投稿では、このような問題を回避するのに役立つ可能性のあるいくつかの状況とさまざまなファイルシステムについて説明しました。
戻ってきてください。
ありがとうございます。