Czy cofnąć polecenie „rm -rf ~”?

115

Miałem folder, którego nie chciałem, o nazwie „~”, więc z wiersza poleceń wpisałem

rm -rf ~

i przypadkowo usunąłem mój folder domowy (ponieważ ~ rozwiązano w / home / nazwa użytkownika). Czy istnieje jakikolwiek sposób powrotu, czy zasadniczo muszę ponownie utworzyć konto od zera?

Chris
źródło
18
Jaki system plików
Tarnay Kálmán
6
Najwyraźniej wy ludzie nie macie poczucia humoru.
Blomkvist
21
Chociaż to nie odpowiada bezpośrednio na twoje pytanie, rm -rf "~"w cudzysłowie będą szukać tej dosłownej nazwy zamiast ją rozszerzać. Ale i tak bałem się tego użyć - użyłbym czegoś takiego lslub cdnajpierw, aby sprawdzić, czy otrzymałem odpowiedni katalog, lub usunąłem folder z menedżera plików GUI. Być może najpierw zmień nazwę dir ( mv "~" tilde), sprawdź, a następnie usuń.
Henrik N
2
W przyszłości nie używaj rm interaktywnie w wierszu poleceń. Użyj narzędzia takiego jak kosz, a ty 1) nie możesz ponownie popełnić tego samego błędu i 2) nie możesz przyzwyczaić się do złego aliasu powłoki rm, który spowoduje problemy.
Fred Nurk
9
@HenrikN: ./~ zamiast „~” robi to samo, ale działa również z innymi typowymi problematycznymi nazwami plików, takimi jak te, które zaczynają się od myślników i wyglądają jak opcje.
Fred Nurk

Odpowiedzi:

148

Zasadniczo nie ma łatwej drogi powrotnej.

Możesz przywrócić z codziennej kopii zapasowej.

RedGrittyBrick
źródło
194
Twoja uwaga na temat kopii zapasowych jest okrutna i w 100% do rzeczy.
Benjamin Bannier
3
OS X ustawia poprzeczkę dla kopii zapasowych, jak powinien działać (zwłaszcza z Time Capsule). Zobacz maketecheasier.com/ ..., aby uzyskać sugestie, jak osiągnąć to samo z Ubuntu.
Thorbjørn Ravn Andersen
4
@ Thorbjørn Ravn Andersen - Tak, z wyjątkiem sytuacji, gdy Wehikuł Czasu ma załamanie nerwowe. Miałem wehikuł czasu dwa razy w ciągu sześciu miesięcy.
Fałszywe imię
Zewnętrzne tworzenie kopii zapasowych jest świetne i może być dość niedrogie. Używam Backblaze (Mac / Windows) za 5 USD / komputer / miesiąc. Wiele osób lubi Crashplan (Mac / Windows / Linux).
Henrik N
23
codziennie co ????
Luc M,
66

Inni (np. @RiMMER , @Adam i @James T ) wspomnieli, że w większości systemów plików możliwe jest odzyskanie większości lub wszystkich danych (być może bez nazw plików), ponieważ dane nie są zerowane, a jedynie usuwane z tabeli plików. Dotyczy to nie tylko Linuksa - to samo dotyczy Windows i Mac.

Jednak nikt nie wspomniał o najważniejszej rzeczy - WYŁĄCZ KOMPUTER. TERAZ. .

Wiele programów - w tym przeglądarka internetowa, z której obecnie korzystasz - będzie buforować dane na dysku twardym, a praktycznie wszystko, co robisz, może spowodować zmianę rozmiaru / zapisu komputera w pliku wymiany. Obie te rzeczy będą zapisywać w wolnych sektorach na dysku twardym, potencjalnie nadpisując cenne dane.

Dlatego wyłącz komputer, wyjmij dysk twardy i włóż go do innego komputera. Zamontuj dysk twardy jako tylko do odczytu i odzyskaj pliki na oddzielnym dysku twardym. Po odzyskaniu wszystkiego, co może Cię zainteresować - i tylko wtedy - zapisz pliki z powrotem na oryginalny dysk.

BlueRaja - Danny Pflughoeft
źródło
11
Nawet proces zamykania może zapisywać na dysku twardym. Jestem niezdecydowany polecić odłączenie komputera od razu, bo to na pewno może zrobić rzeczy o wiele gorsze, ale ... cóż, w zależności jak ważne jest dane, warto go rozważyć.
BlueRaja - Danny Pflughoeft
1
W zależności od napędu / systemu operacyjnego / punktu montażu może być możliwe natychmiastowe odmontowanie i / lub ponowne zamontowanie readonly na żywo bez wyłączania komputera, a następnie wyłączania itp.
Matthew Scharley,
1
killall rmzamiast się wyłączać.
Fred Nurk
1
W zależności od tego, jak duży był twój katalog domowy i jak duży jest twój dysk twardy, szanse na nadpisanie wolnych sektorów zawierających twoje dane są niewielkie.
Mike Speed
Możesz odzyskać pliki tekstowe przy użyciu tej metody bez większych trudności (o ile masz ogólne pojęcie o tym, co w nich jest), ale pliki binarne są tak trudne, że są w zasadzie niemożliwe.
Satanicpuppy
13

Uważam, że każdy użytkownik linuksa w danym momencie musi nauczyć się tej bolesnej lekcji z pierwszej ręki, zanim faktycznie pozna znaczenie kopii zapasowych, a także zwróci uwagę na szczegóły i ostrożność.

Na przykład, jeśli usuwasz dziwnie wyglądające pliki, możesz najpierw uruchomić polecenia na tym dziwnym pliku, które nie mają żadnych skutków ubocznych i nie wprowadzają zmian w danych. Na przykład, gdybyś biegł

cd ~

zanim spróbujesz usunąć folder, zobaczysz, że zamiast tego zmieni katalog na katalog domowy, a nie ~folder. Po przejściu wystarczającej liczby kroków rozwiązywania problemów, aby nauczyć się prawdziwego polecenia, które trzeba poprawnie cdwprowadzić do ~folderu, możesz nacisnąć klawisz strzałki w górę, aby pobrać ostatnie polecenie z historii, a następnie przejść cddo, rma następnie i tylko wtedy spróbować usunąć folder .

Sugeruję podjęcie takich kroków przed wykonaniem jakiejkolwiek czynności, która jest trwała. Nie jest to trwałe ani niezawodne, ale masz znacznie większą szansę na zapobieganie chwilom upadku, jeśli zachowujesz ostrożność podczas wykonywania działań, które mają skutki uboczne.

jmort253
źródło
4
Spójrz, zanim skoczysz i lsprzed sobą rm.
LawrenceC
7

Jeśli używasz systemu plików ext3, to ext3grep jest twoim nowym najlepszym przyjacielem. Dobry samouczek (między innymi) na temat korzystania z ext3grep można znaleźć tutaj .

Adam Prax
źródło
6

Możesz spróbować użyć testdisk, aby cofnąć usunięcie poszczególnych plików . To działa tylko na ext2 i NTFS (ale nadal warto spróbować).

Jeśli masz ext3 lub ext4, możesz odzyskać znane pliki za pomocą photorec , co prawdopodobnie zakończy się odzyskiwaniem więcej, niż chcesz. Photorec odzyskuje pliki bez informacji o nazwie pliku, więc przeglądanie plików może być uciążliwe.

James T.
źródło
4

Jeśli masz wystarczająco duży dysk zewnętrzny, masz inną możliwie najbezpieczniejszą opcję. Będziesz potrzebował wystarczającej ilości miejsca do przechowywania całej partycji domowej, w tym wolnego miejsca.

Uruchom komputer z dysku CD i w ogóle nie montuj napędu domowego. Zamontuj dysk zewnętrzny. dd partycję dysku domowego do pliku na dysku zewnętrznym. zamontuj plik jako urządzenie z pętlą zwrotną, wykonując prace związane z usuwaniem tego obrazu, wiedząc, że nie możesz uszkodzić oryginalnego systemu plików. W zależności od systemu plików może być wiele rzeczy do wypróbowania, niektóre z nich potencjalnie destrukcyjne.

To raz mnie uratowało dzięki wersji beta Reiser4, kiedy nie wiedziałem, co by to zrobiło, nawet jeśli zamontowałem go tylko do odczytu. Czytałem gdzieś w tym czasie, że pisanie czasopism było nadal możliwe.

To także dobra technika zapisywania danych z umierającego napędu.

barrymac
źródło
1
+1 za wspomnienie, że w większości kronikowanych FS nawet montowanie tylko do odczytu może zapisywać dane w ramach aktywności kroniki.
śleske,
2

Istnieją techniki odzyskiwania plików poprzez sprawdzenie i-węzłów, które nie zostały ponownie przetworzone. Im więcej danych zapisujesz w systemie plików po usunięciu, tym mniejsze prawdopodobieństwo odzyskania danych. Najlepszą strategią odzyskiwania po przypadkowym usunięciu danych jest przywrócenie z kopii zapasowej.

Xenoactive
źródło
2
alias rm="rm -i"

Zakładając, że używasz powłoki Bash (włóż to do pliku .bashrc, aby utrzymywał się w otwartych nowych powłokach).

Powinno to spowodować, że rm poprosi cię o potwierdzenie tego, co chcesz usunąć, co jest miłe szczególnie, gdy robisz -rf, ale spowoduje również rozwinięcie „~” do pełnej ścieżki do katalogu domowego w wierszu poleceń, co powinno dać ci wskazówka, że ​​nie usuwasz pliku „~”, ale w rzeczywistości twój homedir.

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

Nie jest to technicznie odpowiedź na twoje pytanie, ale może pomóc uniknąć takiego problemu w przyszłości.

EDYCJA: Niektóre osoby mogą zniechęcać cię do korzystania z tej techniki, ponieważ czyni to mniej ostrożnym z poleceniem „rm”. Z mojego doświadczenia jest to dalekie od prawdy. W rzeczywistości efektem aliasu jest zniechęcenie do korzystania z „rm -rf” - jak wiadomo, spowoduje to pojawienie się wielu podpowiedzi, na które nie chcesz odpowiadać - oraz w celu uzyskania bez pytania „rm -rf "musisz celowo odwoływać się do polecenia rm jako / bin / rm (lub cokolwiek innego). Prowadzi to do znacznie bardziej świadomego i celowego używania komendy „rm” w ogóle - ponieważ zawsze trzeba poprzedzić użycie rm mentalnym wyborem „rm lub / bin / rm” - zarówno na serwerze, jak i każdym innym zdarzeniu do zalogowania się do. A świat, w którym wszyscy myśleli przed użyciem rm, byłby rzeczywiście bezpieczniejszy!

aaa90210
źródło
2
Zależy od systemu, w którym się znajdujesz. Przy wersji RHEL5 i OS X 10.6 -fprzesłania tę -iopcję.
Daniel Beck
Nie wiedziałem tego. Dołączam moją radę do YMMV i „nie próbuj tego w domu, a może przede wszystkim w pracy”!
aaa90210
9
Jeśli to zrobisz, pewnego dnia nie będziesz mieć tego aliasu - być może siedzisz przy innym komputerze lub masz gdzieś ssh - i użyjesz rm przyzwyczajonego do siatki bezpieczeństwa. Zrobisz coś, czego żałujesz.
Fred Nurk
1
@FredNurk Dokładnie. Najlepiej jest po prostu dodać -i samodzielnie lub po prostu nie używać opcji -f.
Arda Xi
Kiedy mam dużo plików do usunięcia, zaczynam od rm -i my_list_of_files. Następnie używam CTRL-C i przywołuję moje polecenie, aby zmodyfikować torm -rvf my_list_of_files
Luc M
2

Przepraszam za twoje dane. Wszyscy inni zgłosili się, jak poradzić sobie z problemem związanym z danymi, ale oto kilka informacji na temat tego, jak sobie poradzić, gdy następnym razem zobaczysz, że folder jest caled ~.

  1. Znajdź, kto go stworzył, i upewnij się, że nigdy więcej tego nie zrobi.
  2. Nie używaj -rfani żadnych szalonych potężnych argumentów, aby rm wykonał usunięcie. Zamiast tego weź to powoli i powoli i upewnij się, że widzisz, co się dzieje. Można wprowadzić tyldę bez rozwijania jej do katalogu domowego przez ucieczkę jej w powłoce. Teoretycznie pan mógł rm -rI \~ jednak można pójść o krok dalej.
    1. Po pierwsze, cd \~aby dostać się do tego folderu, może nawet użyć, pwdaby sprawdzić, czy tam dotarłeś. Dziesięć usuwa zawartość, gdy tam jesteś. Ponownie bądź ostrożny, ale wyczyść folder za pomocą rf -rI *i, jeśli chcesz .*też.
    2. Teraz wróć do poprzedniej pozycji cd ..i usuń katalog za pomocą rmdir \~.
Caleb
źródło
1

Po prostu cd .snapshot i przywrócić pliki. Ale robię to w pracy i nie mam pojęcia, skąd pochodzi katalog .snapshot. Myślałem, że może to była funkcja Linuksa.

meBigGuy
źródło
1

Narzędzia do odzyskiwania - wiersz poleceń:

Narzędzia do odzyskiwania - Gui:

Informacje:

Z mojego osobistego doświadczenia odzyskuję dane za pomocą „UFS Explorer” i photorec

(1) = Not open source, not free

(2) = Nie open source, za darmo

(3) = Open source i za darmo

(4) = Mają wsparcie NTFS

(5) = Posiada funkcję struktury katalogów

intika
źródło
-3

RM jest na zawsze.

Chociaż to ci teraz nie pomaga, możesz w przyszłości nie używać rm lub naprawdę zmusić się, dodaj skrypt znaleziony wcześniej na ścieżce o nazwie rm, który przenosi pliki do folderu kosza, który czyścisz innym razem (co pozwala popełniać błędy i nie być SOL).

Corey
źródło
7
Jedynym problemem jest to, że możesz stać się trochę szybki i luźny dzięki komendzie rm i zapomnieć, że nie masz przydatnej funkcji
cofania usuwania na
2
-1 Ma to ten sam problem, co przesadnie odrzucone odpowiedzi (więc ukradnę komuś komentarz): pewnego dnia nie mam tego skryptu - może siedzisz na innym komputerze lub gdzieś ssh gdzieś - i użyjesz rm przyzwyczajonego do siatki bezpieczeństwa i zrobisz coś, czego żałujesz.
DMA57361
@Corey Chociaż zgadzam się, że może to powodować zły nawyk, +1, ponieważ ta odpowiedź została zbyt mocno doceniona
John Militer