Как восстановить файл, замененный пустым на> в Linux?

215
flipost

Я запустил команду pv как pv /path/file1 > file1и не заметил, что я нахожусь в том же каталоге, что и «путь», поэтому входной файл на самом деле является выходным файлом

PV дал мне сообщение:

PV: входной файл является выходным файлом: / путь / файл1

но оболочка усекла файл до нулевого размера

Можно ли как-нибудь восстановить этот файл?

ОС: Debian 8

0
Если вы используете `dd` для копирования необработанного раздела файла в файл, вы можете найти часть файла в свободном пространстве, если он не был перераспределен в другой файл. В противном случае вы можете восстановить некоторые из них с помощью простой программы на C, которая открывает файл в режиме добавления, помещает его в большое число байтов, затем записывает байт и закрывает его. Если ни один из этих подходов ничего не находит, вам необходимо восстановить данные из резервной копии; если это не было поддержано, то это было не очень важно (по определению). AFH 6 лет назад 0
Техническое примечание о `` pv` дало мне сообщение [...], но оно обрезало файл до нулевого размера ": это оболочка, которая усекала файл; `pv` увидел, что он уже обрезан. Kamil Maciorowski 6 лет назад 2

1 ответ на вопрос

0
flipost

Я наконец смог восстановить файл с помощью extundelete

Вот что я сделал

  • ОСТАНОВИТЕ использование операционной системы немедленно или перемонтируйте раздел как доступный только для чтения, если он не используется каким-либо процессом (мне повезло, что путь, в котором находился мой файл, находился в отдельном разделе и активно не использовался)
  • загрузиться из системы восстановления или остаться в текущей системе, если вы уверены, что ни один процесс не будет использовать раздел, с которого вы восстанавливаете, без вашего ведома
  • резервное копирование всего раздела ( ddнапример)
  • устанавливать extundelete
  • перемонтировать раздел как для чтения / записи
  • удалить пустой файл (запишите путь и имя файла)
  • cd в каталог в другом разделе, из которого вы восстанавливаете (убедитесь, что для восстановленного файла достаточно места)
  • размонтировать раздел
  • запустить extundelete path/to/disk/label --restore-file path/to/deleted/file(например extundelete /dev/sdb1 --restore-file documents/important.txt)
  • восстановленный файл должен появиться в каталоге RECOVERED_FILES

Похожие вопросы