Przez przypadek użyłem rm
pliku, którego nie chciałem usunąć. Czy istnieje sposób, aby go odzyskać pod Linuksem?
Przez przypadek użyłem rm
pliku, którego nie chciałem usunąć. Czy istnieje sposób, aby go odzyskać pod Linuksem?
Odpowiedzi:
Poniżej przedstawiono ogólne kroki odzyskiwania plików tekstowych.
Najpierw użyj polecenia ściany, aby poinformować użytkownika, że system działa w trybie pojedynczego użytkownika:
# wall
System is going down to .... please save your work.
Naciśnij CTRL + D, aby wysłać wiadomość.
Następnie użyj polecenia init 1, aby przełączyć system w tryb jednego użytkownika:
# init 1
Używanie grep (tradycyjny sposób UNIX) do odzyskiwania plików
Użyj następującej składni grep:
grep -b 'search-text' /dev/partition > file.txt
LUB
grep -a -B[size before] -A[size after] 'text' /dev/[your_partition] > file.txt
Gdzie,
-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.
Aby odzyskać plik tekstowy zaczynający się od słowa „nixCraft” na / dev / sda1, możesz spróbować wykonać następujące polecenie:
# grep -i -a -B10 -A100 'nixCraft' /dev/sda1 > file.txt
Następnie użyj vi, aby zobaczyć plik.txt.
Ta metoda jest przydatna TYLKO, jeśli usunięty plik jest plikiem tekstowym. Jeśli używasz systemu plików ext2, wypróbuj polecenie odtwarzania.
Znalezione na http://www.cyberciti.biz/tips/linuxunix-recover-deleted-files.html
init 1
ręcznie zabijaj wszystkie demony systemowe oprócz sshd
. Myślę też, że w tym momencie powinieneś ponownie zamontować wszystkie systemy plików RO i zapisać na tmpfs (zakładając, że twoje pliki tymczasowe zmieszczą się w pamięci RAM), aby uniknąć zastąpienia plików danymi tymczasowymi. Będziesz oczywiście musiał skopiować go gdzie indziej później, albo na zdalny serwer, albo z powrotem do lokalnych systemów plików po ponownym zamontowaniu RW.
dd
i spróbuj znaleźć plik w nim (za pomocą grep
lub edytora).Edycja: czasami ddrescue
działa lepiej niż dd
.
Testdisk ma opcję przywracania, która powinna działać z Linuksem.
Istnieje przewodnik dotyczący systemu Linux . Zauważ, że działa dla ext2 , ext3 i ext4 .
Jedyną prawidłową odpowiedzią jest: przywróć plik z kopii zapasowej. Każdy musi mieć kopię zapasową. W przypadku naprawdę ważnych plików powinieneś mieć dwie kopie zapasowe. Ty nie Cóż, szkoda, oto wyciągnięta lekcja (Przepraszam, że brzmię ostro, ale jestem w pamięci masowej, a ludzie nie tworzą kopii zapasowych, dopóki nie stracą ważnych danych, to fakt. Więc tak, wyglądasz głupio, ale podobnie jak prawie wszyscy inni).
OK, nie masz kopii zapasowej. musisz przestać używać systemu plików, który zawierał plik RIGHT NOW . Każda czynność zapisu może zdecydowanie zatkać dane pliku, które mogą (tylko mogą ) pozostać na dysku.
jeśli popełniłeś tragiczny błąd, używając tylko jednej partycji jako głównego systemu plików i / home, oznacza to, że musisz uruchomić system z innego urządzenia. TERAZ .
Jeśli plik ma jakiś popularny format (plik Word, JPG itp.), Użyj Photorec . Photorec może pobierać najpopularniejsze formaty plików.
Możesz wypróbować poprzednio zaproponowaną metodę „ext3 undelete”, ale musisz się dobrze posługiwać wierszem poleceń, rozumieć podstawowe wewnętrzne działania linuksa itp.
Jeśli twój plik ma jakiś specjalny format, to pecha. Kiedyś napisałem program Perla do skanowania dysku w poszukiwaniu specjalnych plików i działał całkiem nieźle; ale musisz znać programowanie, aby to zrobić, i być całkiem spokojnym z Linuksem.
Zrobiłem to kilka lat temu. Moje podejście polegało na bezpośrednim, bez czasu do stracenia, odmontowaniu partycji, a potem
dd if=/dev/hda1 of=backup_image.ext3
mieć plik kopii zapasowej dokładnego stanu partycji. Następnie możesz ponownie zamontować partycję i kontynuować normalną pracę podczas wyszukiwania usuniętego pliku w utworzonym obrazie. Obraz będzie prawdopodobnie BARDZO duży, ponieważ potrzebujesz całej „pustej” przestrzeni, więc przechowywanie go może być praktycznym problemem.
Potem było po prostu nudne wyszukiwanie po fragmentach tekstu, których spodziewałem się gdzieś w zupie zawartości partycji. Np. By znaleźć pliki .tex, uruchomiłem
grep --binary-files=text -1000 "subsection" < backup_image.ext3 > latexfiles
który wydrukował duży kontekst wokół frazy „podsekcja” i zapisał dane wyjściowe w pliku, który można ręcznie przeszukać. Wydrukowałem tak duży kontekst, ponieważ przeszukanie obrazu zajęło tak dużo czasu, że wolałbym nie robić tego więcej razy niż musiałem.
Również polecenie strings
było pomocne w usuwaniu śmieci binarnych z danych wyjściowych, ale jeśli dobrze pamiętam, usunęło również wszystkie znaki nowej linii, co może być problemem.
Aby znaleźć pliki binarne w ten sam sposób, można odnieść sukces w znalezieniu charakterystycznego nagłówka lub jakiegoś określonego pliku, ale wyobrażam sobie, że to dość duża przygoda.
Krótkie uwagi techniczne: występują problemy techniczne z odzyskiwaniem dysku i Ext3 / 4. Jest to długa rzecz do wyjaśnienia, ale krótko (i nieodpowiednio): Ext3 / 4 usuwa „znaczniki”, które informują system operacyjny, gdzie znajdują się pliki na dysku podczas ich usuwania. Pliki nie są szorowane, ale nikt nie wie, gdzie na dysku zaczynają i kończą, a czasem są nawet fragmentowane w kilku miejscach. Niektóre inne systemy plików po prostu ustawiają statusy plików na „usunięte”, ale zachowują dane lokalizacji. W takim przypadku cofnięcie usunięcia nie jest trudniejsze niż spojrzenie na wskaźniki plików z tą flagą (powinny one być nadal dostępne, jeśli nie wystąpiło zbyt wiele działań), a następnie mieć nadzieję, że ich zawartość nie zostanie nadpisana.
Co jest najlepsze Moim zdaniem retoryczne. Częste tworzenie kopii zapasowych jest odpowiedzią na wszystkie te problemy. Ważne dane bez automatycznego systemu tworzenia kopii zapasowych to wypadek, na który czeka, IMHO.
Obowiązkowy osobisty anegdota: miałem zamiar usunąć foo\ foo*
z ~
. napisałem
rm -r foo<Tab>*
, który, niestety, ponieważ foo
najwyraźniej był dowiązaniem symbolicznym i jedynym plikiem do niego pasującym, wykonana została powłoka
rm -r foo\ foo *
Nacisnąłem Enter i usiadłem, patrząc na polecenie, które powinno zająć najwyżej sekundę. Po nieco dłuższym czasie rm
zapytał mnie, czy chcę „usunąć plik„ chroniony przed zapisem ”„ coś ”. Dość szybko poczułem dreszcze i delikatnie i bardzo kontrolowany nacisnąłem Ctrl+c
. ~ Połowa mojego ~
została usunięta, ale udało mi się odzyskać wszystko, co jest wartościowe, dzięki wyżej opisanemu greppingowi i niektórym mniej lub bardziej bieżącym kopiom zapasowym. Miałem bardzo cenne osobiście (czytane: czasochłonne) i bardzo aktualne dane pomiarowe na utraconym dysku, ale wykonałem czterokrotne kopie zapasowe. Jeden zniknął tutaj, inny z powodu awarii systemu w szkole, inny był uszkodzony i na początku nie mogłem znaleźć czwartego, ponieważ przez pomyłkę umieściłem go w niewłaściwym folderze :-D. Nie miałrm -r
utknął na pliku chronionym przed zapisem, czwarty zostałby zjedzony, ponieważ ten folder został zamontowany przez sshfs w moim ~
. Od tego czasu jestem bardziej ostrożny w tego typu sprawach.
Jeśli jest to standardowy rm , mam nadzieję, że masz kopię zapasową. Procedura odzyskiwania usuniętego pliku byłaby inna dla każdego systemu plików, jeśli można to w ogóle zrobić. Linux nie ma wbudowanego „kosza”; po usunięciu pliku prawie go nie ma.
Niezależnie od tego, jak to zrobisz, będziesz chciał odłączyć komputer - tak szybko, jak to możliwe, ponieważ dalsze uruchamianie komputera (nawet w celu jego wyłączenia) powoduje zapis na dysku i zwiększa szansę, że niektóre bloki wcześniej zajmowane przez plik zostanie nadpisany. Gdy to zrobisz, włóż go do innego komputera, uruchom ponownie dysk CD na żywo (pamiętaj, aby nie montować dysku, chyba że zostanie on zamontowany tylko do odczytu) lub wyjmij dysk twardy i zanieś go do specjalisty ds. Odzyskiwania danych.
Ustaw niskie oczekiwania. Jeśli cokolwiek zostało zapisane na „usuniętych” danych, stracisz je.
Zrobiłem niewielką ilość odzyskiwania, a najlepsze narzędzia, które znalazłem, były często projektowane z myślą o określonych formatach. Na przykład „photorec” był świetny, gdy chciałem odzyskać dziesiątki tysięcy plików JPEG.
Recuva również pomogła mi wcześniej i może być twoim najlepszym wyborem. (Jest bezpłatny, nie daj się zwieść płaceniu za reklamy)
Na koniec dnia, jeśli to, co straciłeś, jest ważne, wyłącz dysk i przestań do niego pisać. Korzystaj z każdego dostępnego oprogramowania do odzyskiwania, dopóki nie odzyskasz danych lub przestanie to być warte. Jeśli jest to naprawdę ważne, wyślij go do profesjonalistów po wysokiej cenie.
Jeśli miałeś wcześniej szczęście z narzędziem, spróbuj ponownie, gdy znasz je. Na koniec dnia nie powinny zapisywać na dysku, więc możesz używać oprogramowania, dopóki nie znajdziesz takiego, który działa.
Oto świetny dokument dla Ciebie. Znajdziesz tam mnóstwo praktycznych wskazówek.
BTW, istnieją dwie grupy osób:
Gratulacje, właśnie awansowałeś do grupy 2. ;-)
Jeśli masz otwartą aplikację, która obecnie czyta plik, taką jak VLC lub LibreOffice, ta wspaniała odpowiedź L & U.SO pomogła mi wyjść z tego bałaganu. Oto alternatywna metoda robienia tego samego.
Ogólnym pomysłem jest znalezienie linku /proc/PID/fd/DESCRIPTOR_NUMBER
i skopiowanie go z powrotem do pierwotnej lokalizacji. Użyj, ps aux | grep APP_NAME
aby znaleźć PID, a następnie, ls -la /proc/PID/fd/
aby znaleźć odpowiedni DESCRIPTOR_NUMBER.
„Prawidłowa” odpowiedź to założenie, że nie ma metody niezawodnego odzyskiwania, i zamiast tego przywrócić z kopii zapasowych lub sklonowanego systemu lub zainstalować ponownie.
TestDisk to świetne narzędzie, a istnieją inne sposoby na odzyskanie niektórych danych z dysku fizycznego, w zależności od systemu plików i częstotliwości usuwania, ale czas i ból mogą być zbyt duże, więc ZACHOWAJ BACKUPS (a także testuj że są ważne i można je przywrócić)!
Jeśli nie zostanie nadpisany przez innych użytkowników, masz szczęście. Przypadkowo usunąłem plik źródłowy cpp i użyłem narzędzia o nazwie przede wszystkim , które pomogło mi przywrócić z dysku resztki 60 g cpp. W końcu odzyskałem mój plik, gromadząc te kawałki po kawałku. Myślę, że skanuje pewien wzorzec dla określonego typu pliku i przegląda wszystkie i-węzły na dysku, aby odzyskać pliki! Po prostu spróbuj!
Jeśli przypadkowo usunąłeś plik z Linuksa, możesz użyć tego polecenia:
find /root -name "search text" -type f -exec mv {} "/home" \;
zamiast search text
możesz umieścić nazwę pliku i określić katalog, w którym chcesz przywrócić zamiast /home
.
Możesz wypróbować ten skrypt. Działa ładnie i powinien być używany zamiast RM i używam go teraz intensywnie.
https://github.com/nateshmbhat/safe-rm
rm
W zeszłym tygodniu miałem ten sam problem i wypróbowałem wiele programów, takich jak debugfs, photorec, ext3grep i extundelete. ext3grep był najlepszym programem do odzyskiwania plików. Sintax jest bardzo łatwy:
ext3grep image.img --restore-all
lub:
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’
Ten film pokazuje mini poradnik, który może ci pomóc.
rm
to „niebezpieczne” polecenie UNIX / Linux (czytaj$ man rm
). Używaj go z najwyższą ostrożnością . Powiedziawszy to, jest to szybki sposób na usunięcie plików, których jesteś pewien. Nowoczesne środowiska pulpitu Linux i Unix zapewniają rozwiązanie „Kosza” , dzięki czemu użytkownik może łatwo odzyskać przypadkowo usunięte pliki.