Как восстановить файлы, усеченные `>`?

У меня был текстовый файл hello.txt, который содержит около 100 строк. Я случайно удалил все строки, выполнив echo > hello.txt

Теперь я хочу восстановить все 100 строк. Есть ли способ восстановить строки в этом файле, используя команды терминала?

2
задан 9 January 2014 в 21:48

3 ответа

Вы не можете вернуть содержимое. Нет пощады.

Но поиск файлов резервных копий. Если вам повезет, в этом же каталоге будет файл с именем hello.txt~ для hello.txt. Эти файлы обычно создаются текстовыми редакторами, такими как gedit или emacs, когда вы редактируете файл.

Если у вас есть такой файл резервной копии, вы можете получить обратно содержимое (вы можете вернуть только часть). Используйте в терминале следующее:

mv hello.txt~ hello.txt

Лучше иметь хотя бы часть, чем потерять ее полностью.

0
ответ дан 9 January 2014 в 21:48

tl; доктор Skip в конец для рабочего решения.

Я случайно усеченный файл с помощью gedit. Это было усеченным от 1 800 КБ вниз к 25 КБ.

Я хотел совместно использовать несколько методов восстановления, которых я делал попытку. Это не предназначено, чтобы быть категорическим ответом, больше набор ответов на попытку. Это подобно этому сообщению.


Во-первых, повторно смонтируйте файловую систему как только для чтения!. Сделайте это как можно скорее.

sudo mount -o remount,ro /

В моем случае я не мог повторно смонтироваться только для чтения, таким образом...

mount команда перестала работать. с ошибкой mount: / is busy.

Я рекомендую решительный шаг просто трудного выключения Вашей машины. Да, решительный! Но я не знаю, какой длины остатки усеченного файла будут вокруг. Они могут быть перезаписаны в любой момент. Загрузитесь в Ubuntu LiveCD.

На комментарий здесь, я работал telinit 1 который раскрытый к init уровню 1. Это только усложнило вещи, таким образом, я не рекомендую делать telinit 1. Я рекомендую жесткую силу вниз.

попытка с помощью ext3grep

После этого сообщения в блоге и этого почтового потока, попытайтесь использовать ext3grep.
Однако ext3grep отказавший для меня. Я только смог восстановить усеченный файл.

попытка с помощью sleuthkit

sleuthkit прохладный набор инструментов. Необходимо будет, вероятно, установить его. Снова, этот get's, хитрый, если усеченный файл был / смонтироваться. Снова, я рекомендую трудно выключиться и затем выполнить LiveCD. Используя это сообщение в блоге и это сообщение в блоге, инструкции по существу

  1. apt-get install sleuthkit
  2. stat truncated-file | grep Inode
    помните inode число (назовите его INODE_NUMBER)
  3. скопируйте файл, затем удалите его:
    cp -a truncated-file truncated-file.old
    rm truncated-file
    1. debugfs /dev/disk-device
    2. stats
      ищите Блоки на группу
      Это вероятно 32768. (назовите его BLOCKS_PER_GROUP)
    3. IMAP для получения блока
      imap <$INODE_NUMBER>
      помните номер блока (назовите его BLOCK_NUMBER)
  4. использовать blkls скопировать блоки в файл
    blkls /dev/disk-device $BLOCK_NUMBER-$(echo '$BLOCK_NUMBER+$BLOCKS_PER_GROUP-1' | bc) > recovered-file
  5. вручную рассмотрите и очистите восстановленный файл с помощью некоторого редактора

Но sleuthkit не работал на меня. Только усеченный файл был восстановлен.

попытка с помощью extundelete

Из этого сообщения форума.

попытка с помощью grep

Из этого сообщения, grep для некоторой известной строки в усеченном файле. Это - единственный метод, который работал на меня.

grep -a -A 1000 -F 'some known string' \
    /dev/disk-device > recovered-file


Удивительно простой, а?

2
ответ дан 9 January 2014 в 21:48

Извини, друг, это невозможно ...

Вы можете восстановить удаленные файлы, но не можете восстановить файл с удаленным содержимым ..

0
ответ дан 9 January 2014 в 21:48

Другие вопросы по тегам:

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