Как восстановить удаленный файл в Linux?

случайно, я использовал rm в файле, который я не хотел удалять. Есть ли способ вернуть его под Linux?

15 ответов:

ниже приведены общие шаги для восстановления текстовых файлов.

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

    # wall
    System is going down to .... please save your work.
    

    нажмите CTRL+D, чтобы отправить сообщение.

  2. далее используйте команду init 1, чтобы перевести систему в однопользовательский режим:

    # init 1
    
  3. использование grep (традиционный UNIX способ) для восстановления файлов

    используйте следующий grep синтаксис:

    grep -b 'search-text' /dev/partition > file.txt
    

    или

    grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
    

    здесь

    -i : Ignore case distinctions in both the PATTERN and the input files i.e. match both uppercase and lowercase character.
    -a : Process a binary file as if it were text
    -B Print number lines/size of leading context before matching lines.
    -A: Print number lines/size of trailing context after matching lines.
    

    чтобы восстановить текстовый файл, начиная с" nixCraft " word on / dev / sda1, вы можете попробовать следующую команду:

    # grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
    
  4. затем используйте vi, чтобы увидеть файл.формат txt.

    этот метод полезен только в том случае, если удаленный файл является текстовым файлом. Если вы используете файловую систему ext2, попробуйте команду recover.

найти на http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html

  • если это очень-очень важно, возьмите диск с компьютера и нанять компанию, чтобы сделать это за вас.
  • если это очень важно, установите диск только для чтения, скопируйте весь раздел в файл с помощью dd и попытаться найти файл в нем (с помощью grep, или редактором).

изменить: иногда ddrescue работает лучше, чем dd.

Если ваша файловая система ext3 используйте ext3grep.

Testdisk имеет опцию восстановления, которая должна работать с Linux.

здесь пошаговое руководство для Linux. Обратите внимание, что он работает ext2,ext3 и ext4.

Если это стандартный rm, Я надеюсь, что у вас есть резервная копия. Процедура восстановления удаленного файла будет отличаться для каждой файловой системы, если это вообще возможно. Linux не имеет встроенной "корзины"; как только вы удалите файл, он почти исчез.

любым способом вы это сделаете, вы захотите отключить компьютер - как можно скорее, так как продолжение работы компьютера (даже для его выключения) вызывает запись на диск и увеличивает вероятность того, что некоторые блоки ранее занятый файл будет перезаписан. Как только вы это сделаете, либо поместите его на другой компьютер, перезагрузите live CD (Не подключайте диск, если вы не подключаете его только для чтения) или извлеките жесткий диск и отнесите его специалисту по восстановлению данных.

  • единственный правильный ответ : восстановить файл из резервной копии. У каждого должно быть подкрепление. Для действительно важных файлов, вы должны иметь две резервные копии. Не знаешь? Ну, очень плохо, вот урок ( извините за резкость, но я нахожусь в хранилище данных, и люди не создают резервные копии, пока не потеряют некоторые важные данные, это факт. Так что да, вы выглядите глупо, но почти все остальные ).

  • ОК, у вас нет резервной копии. Вы должны остановка используя файловую систему, которая содержала файл ПРЯМО СЕЙЧАС. Любое действие записи может определенно шлангом данные файла, что мая (всего мая) остаются на диске.

  • Если вы сделали трагическую ошибку, чтобы использовать только один раздел в качестве корневой файловой системы и / home, это означает, что вы должны загрузка с другого устройства. теперь .

  • Если ваш файл имеет некоторые общие формат ( файл Word, JPG и т. д.), Используйте Photorec. Photorec может извлекать наиболее распространенные форматы файлов.

  • вы можете попробовать метод "ext3 undelete", предложенный ранее, но вам нужно быть удобным с командной строкой, понимать основные внутренние работы linux и т. д.

  • Если ваш файл имеет какой-то особый формат, не повезло. Однажды я написал программу Perl для сканирования диска для некоторых специальных файлов, и она работала довольно хорошо; но вам нужно будет знайте некоторые программы, чтобы сделать это, и быть довольно непринужденно с linux тоже.

Я сделал это пару лет назад. Мой подход состоял в том, чтобы напрямую, не теряя времени, размонтировать раздел, а затем

dd if=/dev/hda1 of=backup_image.ext3

иметь файл резервной копии точного состояния раздела. Затем вы можете снова подключить раздел и продолжить работу, как обычно, когда вы ищете удаленный файл в созданном образе. Изображение, вероятно, будет очень большим, так как вам нужно все "пустое" пространство, поэтому это может быть практической проблемой для его хранения.

тогда было просто для выполнения скучных поисков после фрагментов текста я ожидал, что буду где-то в супе содержимого раздела. Е. Г. найти .Текс-файлы, я побежал

grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles

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

команда strings была полезна удаление двоичного мусора с выхода, но если я правильно помню, он также лишил все новые строки, Что может быть проблемой.

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


краткие технические Примечания: существуют технические трудности с восстановлением диска и Ext3 / 4. Это долго объяснять, но кратко (и неадекватно): Ext3 / 4 удаляет "маркеры", которые сообщают ОС, где находятся файлы на диске при их удалении. Файлы не очищаются, но никто не знает, где на диске они начинаются и заканчиваются, а иногда они даже фрагментированы в нескольких местах. Некоторые другие файловые системы просто устанавливают статусы файлов в "удалено", но сохраняют данные о местоположении. Затем восстановить не сложнее, чем посмотреть на указатели файлов с этим флагом (они все равно должны быть доступны, если не слишком много активности произошло), а затем надеюсь, их содержание не было перезаписано.

что лучше? Риторический, на мой взгляд. Частое резервное копирование является ответом на все эти проблемы. Важные данные без автоматическое резервная система-это авария, ожидающая своего часа, ИМХО.


обязательный личный анекдот: я собирался удалить foo\ foo* С ~. Я написал

rm -r foo<Tab>*

, что печально, так как foo по-видимому, была символическая ссылка и единственный файл, соответствующий этому, оболочка, превращенная в

rm -r foo\ foo *
rm спросил меня, хочу ли я"удалить защищенный от записи файл "что-то"".Довольно быстро я почувствовал озноб и мягко и очень сдержанно нажал Ctrl+c. ~Половина моего ~ был удален, но мне удалось вернуть все ценное через вышеописанное grepping и некоторые более или менее текущие резервные копии. У меня были некоторые лично очень ценные (читай: трудоемкие) и очень свежие данные измерений на диске, который был потерян, но я сделал четырехкратные резервные копии. Один разочаровал здесь, другой из-за сбоя системы в школе, другой был поврежден, и сначала я не мог найти четвертый, так как по ошибке положил его в неправильную папку: - D . Не было rm -r застрял на защищенном от записи файле, четвертый был бы съеден, так как эта папка была смонтирована через sshfs в my ~. Я гораздо осторожнее с этим. подобные вещи с тех пор.

установите низкие ожидания. Если что-то было написано поверх "удаленных" данных, вы потеряете его.

Я сделал небольшое количество восстановления и лучшие инструменты, которые я нашел, часто были разработаны для определенных форматов. Например, "photorec" был отличным, когда я хотел восстановить десятки тысяч jpeg.

Recuva также помог мне до сих пор и может быть вашим лучшим выбором. (Его бесплатно, не обманывают в оплате их рекламы)

в конце дня, если то, что вы потеряли важно, взять диск в автономном режиме и прекратить запись на него. Использую все восстановления программного обеспечения вы можете найти, пока вы не получите ваши данные обратно или она уже стоит. Если это действительно важно, отправьте его профессионалам по высокой цене.

Если вам повезло с инструментом раньше, попробуйте еще раз увидеть, как вы знакомы с ним. В конце концов, они не должны писать на диск, и поэтому вы можете использовать программное обеспечение, пока не найдете тот, который работает.

вот это здорово документ для вас. Там вы найдете множество практических советов.

кстати, есть две группы людей:

  1. те, кто делает резервные копии
  2. те, кто будет делать резервные копии

поздравляю, вы только что продвинули себя в группу 2. ; -)

Если у вас открыто приложение, которое в данный момент читает файл, например VLC или LibreOffice, то эту потрясающую л&У. Итак, ответ помог мне выбраться из этой заварухи. Вот альтернативный метод за то же самое.

основная идея состоит в том, чтобы найти ссылку в /proc/PID/fd/DESCRIPTOR_NUMBER и скопировать его обратно в исходное местоположение. Используйте ps aux | grep APP_NAME найти PID, а затем ls -la /proc/PID/fd/ для того чтобы найти правильное DESCRIPTOR_NUMBER.

"правильный" ответ состоит в том, чтобы предположить, что нет способа надежного восстановления, а вместо этого восстановить из резервных копий или клонированной системы или переустановить.

TestDisk-отличный инструмент, и есть другие способы спасти некоторые данные с физического диска в зависимости от файловой системы и недавности удаления, но время и боль могут быть слишком велики, поэтому --3-->ХРАНИТЬ РЕЗЕРВНЫЕ КОПИИ (а также проверить, что они действительны и восстанавливаются)!

Если он не перезаписан другими пользователями, то вам повезло. Я случайно удалил исходный файл cpp и использовал инструмент foremost, который помог мне восстановить 60G cpp мусора с диска. Наконец, я восстановил свой файл, собирая эти обломки по частям. Я думаю, что он сканирует определенный шаблон для определенного типа файлов и пересекает все индексы на диске для восстановления файлов! Просто попробуйте!

Если вы случайно удалили файл из Linux, то вы можете использовать эту команду:

find /root -name "search text" -type f  -exec mv {} "/home" \;

на месте search text вы можете поместить имя файла и указать папку, где вы хотите восстановить на месте /home.

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

https://github.com/nateshmbhat/safe-rm

характеристики :

  • предназначен для использования вместо rm
  • обрабатывает все аргументы, которые rm может принимать
  • обрабатывает столкновения имен файлов с файлами, уже находящимися в корзине
  • обрабатывает некоторые вопросы разрешения автоматически
  • если rm вызывается из любого другого скрипта или косвенно, тогда команда system ' rm ' используется автоматически
  • показывает соответствующие сообщения об ошибках, такие как те, которые возникают в rm

у меня была такая же проблема на прошлой неделе, и я пробовал много программ, таких как debugfs, photorec, ext3grep и extundelete. ext3grep была лучшей программой для восстановления файлов. Синтакс очень прост:

ext3grep image.img --restore-all

или:

ext3grep /dev/sda3 --restore-all --after date -d '2015-01-01 00:00:00' '+%s' --before `date -d ‘2015-01-02 00:00:00’ ‘+%s’

видео показывает-это мини-учебник, который может помочь вам.