Восстановление перезаписанного файла

Я случайно использовал команду cp и перезаписал содержимое одного файла в файловой системе ext4. В любом случае, я могу восстановить содержимое старого файла и, возможно, его метаданные (т. Е. Последнее время записи и т. Д.)?

Я знаю, что mv освобождает блоки для ходов, но делает ли это то же самое для операции с оптовой копией?

Как я знаю, очень сложно восстановить удаленный файл, но попробуйте это

в 2005 году я использую этот инструмент на разделе ext3 и восстанавливаю много файлов. Конечно, сделайте резервную копию перед ее использованием и напомните, что она не гарантирует 100% для восстановления файлов

Пример сеанса в файловой системе ext4:

Создайте два файла 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 

Проверьте, где физически выделено:

 # 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 ba 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 не был действительно удален, а просто повторно использован для нового файла.