110

У меня была папка, которую я не хотел называть ~, поэтому из командной строки я набрал

rm -rf ~

и случайно удалил мою домашнюю папку (так как ~ разрешено в /home /username). Есть ли какой-то путь назад или мне в принципе нужно заново создать аккаунт с нуля?

12 ответов12

146

В общем, обратного пути нет.

Вы можете восстановить из вашей ежедневной резервной копии.

66

Другие (такие как @RiMMER, @Adam и @James T) отметили, что для большинства файловых систем можно восстановить большинство или все ваши данные (возможно, без имен файлов), потому что данные на самом деле не обнуляются, а только удаляются из файла-таблицы. Это относится не только к Linux - это относится и к Windows и Mac.

Однако никто не упомянул самое главное - ВЫКЛЮЧИТЕ СВОЙ КОМПЬЮТЕР. СЕЙЧАС. ,

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

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

13

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

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

cd ~

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

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

7

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

5

Вы можете попробовать использовать testdisk для восстановления отдельных файлов. Это работает только на ext2 и NTFS (но все же стоит попробовать).

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

4

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

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

Это спасло меня однажды от бета-версии Reiser4, когда я не знал, что он будет делать, даже если я смонтировал его только для чтения. Я читал где-то в то время, когда записи в журналы были еще возможны

Это также хорошая техника для сохранения данных с умирающего диска.

2

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

  1. Найдите того, кто его создал, и убедитесь, что они никогда не сделают это снова.
  2. Не используйте -rf или любые безумные мощные аргументы rm для удаления. Вместо этого возьмите это красиво и медленно и убедитесь, что вы можете видеть, что происходит. Можно войти в тильду, не расширяя ее до вашего домашнего каталога, включив ее в оболочку. Теоретически вы могли бы rm -rI \~ , однако вы можете пойти еще дальше.
    1. Во-первых, cd \~ чтобы получить в эту папку, может даже использовать pwd чтобы проверить, что вы туда попали. Десять удалить его содержимое, пока вы там. Снова будьте осторожны, но очистите папку с помощью rf -rI * а также, если вам нужно получить .* .
    2. Теперь вернитесь обратно с помощью cd .. и удалите каталог с помощью rmdir \~ .
2

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

1
alias rm="rm -i"

Предполагая, что вы используете оболочку Bash (поместите ее в свой файл .bashrc, чтобы она сохранялась для новых оболочек, которые вы открываете).

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

$ rm -rf ~
rm: examine files in directory /nas/users/u12345/unix (yes/no)? n

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

РЕДАКТИРОВАТЬ: Некоторые люди могут отговорить вас от использования этой техники, поскольку она делает вас менее осторожным с помощью команды "rm". По моему опыту, это далеко от истины. На самом деле, эффект псевдонима состоит в том, что вы отговариваете вас от использования «rm -rf» - поскольку вы знаете, что это приведет ко многим подсказкам, на которые вы не хотите отвечать, - и для того, чтобы получить "без приглашения" rm -rf msgstr "вам нужно намеренно ссылаться на команду rm как /bin /rm (или как угодно). Это приводит к гораздо более осознанному и преднамеренному использованию команды "rm" в целом - поскольку вам всегда нужно предшествовать использованию rm с умственным выбором «rm или /bin /rm» - как на вашем сервере, так и на любом другом, с которым вы работаете чтобы войти в. И мир, в котором все думали перед использованием rm, был бы действительно более безопасным!

1

Я просто cd .snapshot и восстановить файлы. Но я делаю это на работе и понятия не имею, откуда взялся каталог .snapshot. Хотя, возможно, это была особенность Linux.

0

Инструменты восстановления - Командная строка:

Инструменты восстановления - Gui:

Информация:

По своему личному опыту я получаю свои данные обратно, используя "UFS Explorer" и PhotoRec.

(1) = Не с открытым исходным кодом, не бесплатно

(2) = не с открытым исходным кодом, бесплатно

(3) = с открытым исходным кодом и бесплатно

(4) = есть поддержка NTFS

(5) = иметь структуру каталогов

-3

рм навсегда.

Хотя это не поможет вам сейчас, вы можете в будущем не использовать rm или действительно заставить себя, добавьте найденный ранее в вашем пути скрипт с именем rm, который перемещает файлы в папку для мусора, которую вы очищаете в другой раз (позволяя ты ошибаешься и не будешь СОЛ).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .