\r\n\r\n
ファイルを削除して、すぐに後悔したことはありませんか?早く返してくれ!しかし、ファイルが新しすぎて、バックアップを取っていない場合はどうでしょうか?幸いなことに、それに対してできることがあるのです。
rmコマンドを使った後、ターミナルウィンドウを見つめながら深く後悔することはよくあることです。ワイルドカードにちょっとしたミスがあると、それだけで多くのものを排除してしまいます。
Linuxのデフォルトのファイルシステムであるext4は,各ファイルに関するデータを保持するためにinodeを使用し,inodeテーブルを使用してinodeを追跡する.inodeには,ファイル名,ファイルの所有者,パーミッションなどのファイルに関するメタデータが含まれる.
また、ファイルへのハードリンクのエントリーポイントも含まれています。各ファイルには少なくとも1つのハードリンクがあります。新しいハードリンクが作成されるたびに、ハードリンクの数が1つずつ増えていきます。ハードリンクが削除されるたびに、inode内のハードリンク数が1つずつ減少します。
inodeで未使用(再利用可能)とマークされたファイルを削除する場合、最後のハードリンクが削除されます。この場合、ファイルはディレクトリ一覧に表示されず、使用またはアクセスできなくなります。
ただし、ファイルの中身を構成するデータはハードディスクに残っています。しかし、inodeに正しい情報が含まれるようにパッチを当てれば、ファイルは復元されます。もちろん、ハードディスク上のファイルを構成するデータがそのまま残っていて、上書きされていない場合のみ有効です。
あるいは、新しいinodeを作成し、古いinodeから残っているデータをコピーし、足りないビットを置き換えることもできます。
これらは珍しい活動です。通常、間違ってファイルを削除してしまうときは、最悪のタイミングです。そのファイルが必要なのはいつも、今なんです。部門編集者や他のユーティリティに対応する時間がない。また、作成したばかりのファイルであれば、まだバックアップされていない可能性があるので、これらも役に立ちません。
そこで便利なのがtestdiskです。使い方は簡単で、ファイルシステムに関する詳細で低レベルな知識は必要ありません。では、その使い方をみていきましょう
関連:Linuxのinodeについて知っておきたいことすべて
Ubuntuにtestdiskをインストールするには、次のコマンドを使用します。
sudo apt-get install testdiskFedoraの場合、入力する必要があります。
sudo dnf install testdiskマンガロールでは、パックマンを使って
sudo pacman -Sy testdisktestdiskはターミナルウィンドウで動作しますが、基本的なインターフェースは備えています。矢印キーで移動し、Enterキーを押して選択します。整理整頓のために、復旧したファイル用のディレクトリを作成するとよいでしょう。
以下のように入力し、復元されたファイル用に「restored」というディレクトリを作成します。
mkdir restored以下のように入力し、新しいディレクトリに切り替え、そこからtestdiskを起動します。
cd restored/testdiskではsudoを使用しなければならないので、次のように入力します。
sudo testdisktestdiskが提起した最初の問題は、ロギングについてである。新しいログファイルを作成することも、既存のログファイルを使用することも、全くログを記録しないことも可能です。どのオプションを選択しても、testdiskの動作には影響しません。
Enterキーを押すだけで、ハイライトされたオプションが受け入れられ、新しいログファイルが作成されます。testdiskを起動したディレクトリに作成されます。選択すると、testdiskはどのドライブでファイルシステムを実行したいかを聞いてきます。
発見できるドライブの一覧と、squashfsの「/dev/loop」ファイルが表示されます。スナップショットからインストールしたアプリケーションごとに1つずつあります。これらは読み取り専用なので、これらのファイルシステムから何かを削除しようとするのはやめましょう。
このテスト用コンピュータには物理的なハードディスクが1つしかないので、下矢印で「/dev/sda」オプションをハイライト表示させます。そして、右矢印で「続行」を選択し、エンターキーを押します。
testdiskはパーティションタイプを知る必要があり、オプションのメニューと、下部に自動検出されたパーティションタイプを表示します。
そうしない正当な理由がない限り、自動的に検出されたパーティションタイプをハイライトし、Enterキーを押します。
表示されたファンクションメニューで、"Advanced "をハイライト表示し、Enterキーを押す。
パーティション選択メニューが表示されます。
探しているファイルは、Linuxファイルシステムパーティションにあります。私たちのハードドライブにはLinuxパーティションが1つしかありませんが、もっとあるかもしれません。
ファイルのあるパーティションを選択し、左右の矢印キーで「List」を選択し、Enterキーを押す。ファイル選択メニューが表示される。
上下の矢印キーまたはPgUp、PgDnキーで、ファイルやディレクトリの 一覧を移動することができます。右矢印キーまたはEnterキーでディレクトリに入り、左矢印キーまたはEscキーでディレクトリを終了します。
デイブのファイルを探しているんです。ユーザーアカウント用のファイルは、すべて「Home」ディレクトリにあります。そこで、「Home」ディレクトリをハイライト表示し、右矢印またはEnterキーを押して、そのディレクトリに移動することができます。
daveをハイライトして、右矢印かエンターキーを押して、そのディレクトリに移動します。
これで、daveアカウントに属するファイルを見ることができるようになりました。赤字の項目は削除されました。復元したいファイルが見つかるまで、ファイルやディレクトリをナビゲートするのです。
ファイルを復元するには、そのファイルをハイライトしてc(小文字)を押すだけです。
表示が変わり、復旧したファイルの保存先を選択するように指示されます。Restored」というディレクトリを作成し、そこからtestdiskを起動したので、リストの最初のエントリ(.)リストの最初のエントリ(.)はこのディレクトリです。この削除されたファイルをそのディレクトリに復元するには、C(大文字)を押すのです。
この操作を行うと、「ファイル選択」の表示に戻ります。より多くのファイルを復元するには、このプロセスを繰り返すだけです。削除されたファイルをハイライト表示し、c(小文字)を押してファイルをコピーし、c(大文字)を押してファイルを復元します。
ファイルを復元した後、ディレクトリツリーは元の場所に再構築されるので、元のファイルがハードディスク上のどこにあるかを思い出すことができ、便利です。つまり、コピーバックが必要な場合、どこに入れればいいのかがわかるのです。
ファイルシステムの異なる場所にある複数のファイルを復元する場合、たまたま同じファイル名であったとしても、いずれにせよ別々に保存する必要があります。
と入力すると、「Restored」ディレクトリの中身を見ることができます。
lstestdiskにログファイルの作成を依頼した場合、ログファイルは「restore」ディレクトリに置かれます。リストアしたファイルは「/home/dave」にあるので、同名のディレクトリにネストされた「restore」ディレクトリにコピーされます。
cdを使って、コピーした「dave」ディレクトリに移動することができます。システムの「/home」ではなく、ローカルの「home」に変更するパスの先頭にフォワードスラッシュ(/)が含まれていないことを確認する。
以下のように入力します。
cd home/dave復旧したファイルはそのディレクトリにあるので、タイプします。
lsl(ロングリスト)オプションを使って、復元されたファイルをもう一度見てみましょう。
長征 - The Long March
sudoを使ってtestdiskを起動したので、復元されたファイルは「root」をオーナーとして復元されました。chownを使って所有者を "dave "に戻すことができます。
sudo chown dave.dave *正しい所有権が回復していることを確認するために、次のように入力します。
ls -lついさっきまで大事な書類を取り出して、取り返しのつかないことになったと思ったときの安堵感は、いつまでもありがたいものです。
そのため、testdiskはとても便利なユーティリティなのです。メニューを見ながらファイルの復元を始めると、ハイライト、C、Cの繰り返しのリズムに陥りやすい。