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

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

8
задан Gypsy Spellweaver
24.11.2022 18:24 Количество просмотров материала 3530
Распечатать страницу

15 ответов

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

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

    # 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

47
отвечен Gabriel L. Oliveira 2022-11-26 02:12
  • если это очень-очень важно, возьмите диск с компьютера и нанять компанию, чтобы сделать это за вас.
  • если это очень важно, смонтируйте диск только для чтения, скопируйте весь раздел в файл с помощью dd и попробуйте найти файл в нем (используя grep, или редактором).

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

13
отвечен Sjoerd 2022-11-26 04:29

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

9
отвечен zaynyatyi 2022-11-26 06:46

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

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

7
отвечен James T 2022-11-26 09:03

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

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

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

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

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

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

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

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

4
отвечен wazoox 2022-11-26 13:37

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

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

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

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

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 *

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

4
отвечен Daniel Andersson 2022-11-26 15:54

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

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

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

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

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

4
отвечен PriceChild 2022-11-26 18:11

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

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

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

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

2
отвечен Michał Šrajer 2022-11-26 20:28

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

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

2
отвечен dotancohen 2022-11-26 22:45

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

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

1
отвечен Andy Lee Robinson 2022-11-27 01:02

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

1
отвечен Izana 2022-11-27 03:19

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

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

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

0
отвечен santosh 2022-11-27 05:36

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

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

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

  • предназначен для использования вместо rm
  • обрабатывает все аргументы, которые может принимать rm
  • обрабатывает конфликты имен файлов с файлами, уже находящимися в корзине
  • обрабатывает некоторые вопросы разрешения автоматически
  • если rm вызывается из любого другого скрипта или опосредованно, тогда команда system 'rm' используется автоматически
  • показывает соответствующие сообщения об ошибках, такие как те, которые возникают в rm
0
отвечен Natesh bhat 2022-11-27 07:53

у меня была такая же проблема на прошлой неделе, и я пробовал много программ, таких как 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’

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

-2
отвечен Juan 2022-11-27 10:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх