
誤ってこのcp
コマンドを誤って使用して、ext4ファイルシステムのファイル内容を上書きしました。とにかく、この古いファイルの内容とメタデータ(最後の書き込み時間など)を復元できますか?
これは移動ブロックを解放することを知っていますが、mv
一括コピー操作にも適用されますか?
答え1
ext4ファイルシステムのセッション例:
指定されたサイズで2つのファイルa、bを作成します。
# dd if=/dev/urandom of=a bs=1282 count=1
1+0 records in
1+0 records out
1282 bytes (1.3 kB) copied, 0.000647314 s, 2.0 MB/s
# dd if=/dev/urandom of=b bs=3247 count=1
1+0 records in
1+0 records out
3247 bytes (3.2 kB) copied, 0.00106112 s, 3.1 MB/s
aが物理的に割り当てられている場所を確認してください。
# filefrag -sve a
Filesystem type is: ef53
File size of a is 1282 (1 block of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 32833.. 32833: 1: last,eof
a: 1 extent found
bをaにコピーしてaを「上書きします」。 (出力が短縮されました。)
# strace cp b a
open("a", O_WRONLY|O_TRUNC) = 4
write(4, "CX\256\330x01pP\326\0101~,\252\"\311\202\21\260\21y\377_S\254\2\352\262\v\3\t"..., 3247) = 3247
cp以降の物理的な場所を確認してください。
# filefrag -sve a
Filesystem type is: ef53
File size of a is 3247 (1 block of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 0: 33280.. 33280: 1: last,eof
a: 1 extent found
位置がからに変わり32833
ます33280
。これは32833
、この場合、元のデータがまだ-で見つかることができることを意味します。
何が起こっているのかcp
出力ファイルが切り捨てられ、一時的に0バイトファイルになります。これは、inodeを再利用する点を除いて、削除とほぼ同じです。ファイルへの書き込みは、使用可能なスペースのどこにでも割り当てられます。これは、古いファイルがあった他の場所である可能性があります。
そのため、元のデータに見つかるほどファイルの内容の一部を知っている場合は、回復可能性がある可能性があります。これはphotorec
実行されますが、ヘッダーが異なる既知のファイル形式に対してのみ実行されます。extundelete
ファイルのinodeは実際には削除されず、新しいファイルに再利用されるため、おそらく役に立ちません。
答え2
簡単ではないので、データの価値によって異なります。今、ハードドライブの使用を停止します。ディスク上ですべての操作を実行すると、回復の可能性が減少します。将来的には、バージョン管理システムを学習して使用し、リポジトリをリモートの場所にバックアップします。
ファイルが削除されたが一部のプロセスによってまだ開かれている場合は、削除されません。そのアイテムへの参照を見つけて/proc
新しい場所にコピーすると、それでも復元できます。
答え3
https://github.com/PabloLec/RecoverPy このツールは、誤ってファイルを空のファイルとして保存する問題を修正しました。ファイルを再び開くと、ファイルは空でした。
このツールはキーワードを使用してドライブからブロックを検索できます。このツールは、一般的な削除されたファイルではなく上書きされたファイルの内容を回復するように特別に設計されています。ただし、コンテンツはまだドライブのブロックに保存されます。
使い方:
- 検索を実行するドライブを選択し、矢印キーを移動してEnterをクリックします。ドライブの選択
- ファイルに含まれていると確信しているキーワードを検索してください。
- 検索結果が表示されたら、探しているキーワードを含む結果をクリックします。
- その後、近くのブロックに移動して選択してファイルに追加できます。
- ファイルに追加したいすべてのブロックがある場合は、「ファイルを保存」をクリックすると、tmpフォルダにファイルが保存されます。
このツールは本当に素晴らしいです。ほぼ4000行に達するファイルを回復できたからです。以下は、私が行ったいくつかの研究から得られたメモです。 (はい、バックアップを取らなければなりませんでした。)教訓を得て、今ファイルがオンラインになっています。