Перейти к содержимому

Отменить команду "rm -rf ~"?

110

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

rm -rf ~ 

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

109 843 просмотра
Chris спросил 15 лет назад
C 964

12 ответов

146

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

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

Ваше замечание о резервных копиях жестоко и на 100% точно.

Benjamin Bannier · 15 лет назад · 191

OS X устанавливает план работы резервных копий should (особенно с Time Capsule). Смотрите http://maketecheasier.com/time-machine-for-ubuntu-try-timevault-and-flyback/2008/03/07, чтобы узнать, как получить то же самое с Ubuntu.

Thorbjørn Ravn Andersen · 15 лет назад · 3

@ Thorbjørn Ravn Andersen - Да, кроме случаев, когда у Time Machine случился нервный срыв. У меня была машина времени, которая меня волновала дважды за шесть месяцев.

Fake Name · 15 лет назад · 4

Автономное резервное копирование отлично и может быть довольно доступным. Я использую Backblaze (Mac / Windows) за 5 долларов США / компьютер / месяц. Многим людям нравится Crashplan (Mac / Windows / Linux).

Henrik N · 15 лет назад · 0

@ Фальшивое имя, правда? Хорошо сработало для меня.

Thorbjørn Ravn Andersen · 15 лет назад · 0

ежедневно что ????

Luc M · 15 лет назад · 22

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

Morgan Wilde · 12 лет назад · 0

Поставьте +1, если у вас * нет * ежедневного резервного копирования.

Martin Vseticka · 11 лет назад · 0
RedGrittyBrick ответил 15 лет назад
R 66 369
66

Others (such as @RiMMER, @Adam, and @James T) have mentioned that, for most filesystems, it's possible to recover most or all of your data (perhaps without filenames), because the data is not actually zeroed out, only removed from the file-table. This is not just true of Linux - the same is true of Windows and Mac.

However, no one has mentioned the most important thing - TURN OFF YOUR COMPUTER. NOW..

Many programs - including the internet browser you're using right now - will cache data to the hard-drive, and pretty much anything you do can cause your computer to resize/write to the swap file. Both of these things will write to free sectors on the hard drive, potentially overwriting your precious data.

Thus, turn off your computer, take out the hard-drive, and put it in another computer. Mount the hard-drive as read-only, and recover the files onto a separate hard-drive. When you've recovered everything you can of interest - and only then - write the files back to the original drive.

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

BlueRaja - Danny Pflughoeft · 15 лет назад · 11

В зависимости от диска / ОС / точки монтирования может быть возможно сразу отключить и / или повторно подключить только для чтения без отключения ПК, затем выключить и т. Д.

Matthew Scharley · 15 лет назад · 1

killall rm вместо выключения.

Fred Nurk · 15 лет назад · 1

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

Mike Speed · 15 лет назад · 1

Вы можете восстановить текстовые файлы, используя этот метод, без особых трудностей (если у вас есть приблизительное представление о том, что в них содержится), но двоичные файлы настолько сложны, что в принципе невозможны.

Satanicpuppy · 15 лет назад · 0

@Satanicpuppy: Это зависит от обстоятельств (особенно от используемой FS). Однажды я случайно удалил 800-мегабайтный видеофайл и смог восстановить его без потери данных - однако это было в отдельном разделе без каких-либо регулярных операций записи. Так что это действительно зависит (и для записи, раздел использовал Ext3).

sleske · 14 лет назад · 0
BlueRaja - Danny Pflughoeft ответил 15 лет назад
B 6 127
13

I believe that every linux user at one point in time must learn this painful lesson firsthand before actually learning the importance of backups, as well as paying attention to detail and being careful.

For instance, if you're deleting wierd looking files, you could first run commands on that wierd file that have no side effects and that don't make changes to your data. For instance, had you run

cd ~ 

before trying to delete the folder, you would have seen that it would instead change directory to your home folder, not the ~ folder. Once you go through enough troubleshooting steps to learn the true command you would need to correctly cd into the ~ folder, then you could press your up arrow key to pull the last command from history and then change cd to rm and then and only then try to delete the folder.

I suggest taking steps like this before performing any action that is permanent. It's not permanent or foolproof, but you have a much better chance of preventing those oops moments if you take this degree of care when performing actions that have side effects.

Посмотрите, прежде чем прыгнуть, и ls, прежде чем rm.

LawrenceC · 14 лет назад · 4
jmort253 ответил 15 лет назад
J 1 331
7

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

Adam Prax ответил 15 лет назад
A 899
5

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

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

James T ответил 15 лет назад
J 7 887
4

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

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

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

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

+1 за упоминание о том, что на большинстве журнализированных FS даже монтирование только для чтения может записывать данные как часть деятельности журнала.

sleske · 14 лет назад · 1
barrymac ответил 15 лет назад
B 405
2

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

Xenoactive ответил 15 лет назад
X 950
2

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

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

Assuming you are using the Bash shell (put this in your .bashrc file so it persists to new shells you open).

This should result in rm asking you to confirm what you want to delete, which is nice especially when you are doing -rf, but it also will expand '~' to the full path to your home directory in the prompt, which should give you a clue you are not deleting a file '~' but actually your homedir.

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

This is not technically an answer to your question, but might help you avoid such problem in future.

EDIT: Some people may discourage you from using this technique as it makes you less careful with the "rm" command. In my experience this is far from the truth. In reality, the effect of the alias is to discourage you from using "rm -rf" - as you know it will result in many prompts you don't want to answer - and in order to get a no-prompt "rm -rf" you need to deliberately refer to the rm command as /bin/rm (or whatever). This leads to much more conscious and deliberate use of the "rm" command in general - as you always need to precede usage of rm with a mental choice of "rm or /bin/rm" - on both your server and any other you happen to be logged in to. And a world where everyone thought before using rm would be a safer one indeed!

Зависит от системы, в которой вы находитесь. В RHEL5 и OS X 10.6 по крайней мере -f переопределяет параметр -i.

Daniel Beck · 15 лет назад · 2

Я не знал этого. Я добавляю свой совет в YMMV и «не пытайтесь делать это дома или, что еще важнее на работе»!

aaa90210 · 15 лет назад · 0

Если вы сделаете это, однажды у вас не будет этого псевдонима - возможно, вы сидите за другим компьютером или у вас есть ssh'd где-то - и вы будете использовать rm, используемый в сети безопасности. Вы будете делать то, о чем сожалеете.

Fred Nurk · 15 лет назад · 9

@FredNurk Точно. Лучше всего просто добавить -i самостоятельно или просто не использовать опцию -f.

Arda Xi · 15 лет назад · 1

Когда у меня есть много файлов для удаления, я начинаю с rm -i my_list_of_files. Затем я использую CTRL-C и вызываю команду, чтобы изменить ее на rm -rvf my_list_of_files

Luc M · 15 лет назад · 0
aaa90210 ответил 15 лет назад
A 143
1

I just cd .snapshot and restore the files. But, I do this at work and I have no idea whare the .snapshot directory comes from. I though maybe it was a Linux feature.

Я верю, что это благодаря коробке NAS.

mlk · 15 лет назад · 1
meBigGuy ответил 15 лет назад
M 11
Загрузка ответов…