上書きされたファイルの回復

上書きされたファイルの回復

誤ってこの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は実際には削除されず、新しいファイルに再利用されるため、おそらく役に立ちません。

おすすめ記事