Przypadkowo zrobił to dd / dev / sda

35

Zapisałem obraz ISO na dysku twardym za pomocą sudo dd if=image.iso of=/dev/sda. Miałem na myśli /dev/sdc, a teraz uruchomiony sudo fdisk -lzwraca tylko jedną partycję na / dev / sda, podczas gdy powinno być 6. Czy można odzyskać moje dane?

Nie zamknąłem (zrestartowałem) jeszcze komputera.

Baaing Cow
źródło
24
ddponownie pokazał swoją brzydką twarz „Data Destroyer” :-( Nadpisał on główną część dysku (odpowiadającą rozmiarowi pliku ISO). Dane, które tam były, zostały utracone. Czy masz dość nową kopię zapasową pliki, na których utratę nie możesz sobie pozwolić? W przeciwnym razie musisz przygotować się do ciężkiej pracy w celu naprawy tablicy partycji i systemów plików, najlepiej na sklonowanej kopii za pomocą Testdisk , a jeśli to się nie powiedzie, jeszcze trudniejszej pracy w celu odzyskania danych pliku, które można znaleźć „za” część dysku, która jest nadpisana. Możesz w tym celu użyć PhotoRec . Zobacz ten link, cgsecurity.org
sudodus
6
Dysk gpt jest podzielony na partycje, ma tę zaletę, że tworzy kopię zapasową tabeli partycji na końcu dysku. Tylko początek jazdy do rozmiaru ISO został całkowicie nadpisany i został utracony. W zależności od rozmiarów partycji możesz odzyskać niektóre lub większość innych partycji.
oldfred
10
@sudodus ddponownie pokazał swoją brzydką twarz„ Data Destroyer ” - z tym dd, że nie ma to nic wspólnego z bezpośrednim dostępem do urządzenia dyskowego jako root. Każde inne narzędzie mogłoby mieć ten sam efekt. cat image.iso > /dev/sdamiałby dokładnie taki sam efekt. Lub pv .... A nawet do pewnego stopnia vi /dev/sda. W rzeczywistości przypomina mi to historię, w której Linus Torvalds próbował połączyć się z siecią za pomocą swojego dysku twardego zamiast modemu, zastępując początek swojego dysku uzgadnianiem połączenia telefonicznego . Nie ma z tym nic wspólnego dd.
marcelm
4
Jak duży jest dokładnie twój .isoplik? Czy przerwałeś dd, czy też dobiegł końca?
marcelm
4
@marcelm, masz rację. Ale w prawdziwym życiu ludzie używają w ddten sposób (w tym celu), więc myślę, że ostrzeżenie „Data Destroyer” jest istotne, chociaż całkowicie prawidłowe ostrzeżenie powinno być dłuższe: „Nie używaj wiersza poleceń, takiego jak sudo dd if=image.iso of=/dev/sdxklonowanie do masy urządzenie pamięci masowej. Użyj narzędzia, które pomaga zidentyfikować i wybrać właściwe urządzenie docelowe i które ma końcowy punkt kontrolny, dzięki czemu możesz dwukrotnie sprawdzić, czy sklonujesz plik ISO na właściwym urządzeniu docelowym, np. StartupDiskCreator, Dyski, mkusb , Win32DiskImager. ”
sudodus

Odpowiedzi:

65

Ponieważ komputer jest nadal włączony, masz duże szanse na zapisanie rzeczy.

Po pierwsze, sysfswyświetla jądro w widoku pamięci tablic partycji. W tej chwili twoje jądro nie odczytało ponownie tabeli dysku i pamięta twoje partycjonowanie. Wewnątrz /sys/block/sda/powinien znajdować się jeden katalog dla każdej partycji. Każdy taki podkatalog zawiera plik starti plik size, które reprezentują lokalizację i rozmiar partycji, w sektorach. Uruchom, fdiska następnie ponownie utwórz każdą partycję (w kolejności!) Z informacjami w jej sysfskatalogu. Pamiętaj, że musisz także utworzyć nową tablicę partycji. Upewnij się, że twoja nowa tablica partycji jest taka sama jak poprzednia. Możesz to sprawdzić /sys/block/sda. Jeśli widzisz sda1dosda7chociaż masz tylko 6 partycji, prawdopodobnie masz MBR, a poza tym prawdopodobnie GPT. Musisz także ustawić flagi i typy dla tych partycji. Spójrz /etc/fstabi spróbuj zebrać informacje o typach partycji, które masz, a następnie sprawdź Wikipedię, aby przekonwertować je na kody dla swojego schematu partycjonowania.

Ponieważ wydaje się, że jesteś w stanie korzystać z systemu plików, prawdopodobnie ddnie udało się go zastąpić, ponieważ większość ważnych bitów systemu plików znajduje się z przodu. Sprawdź, /etc/fstabktóre partycje odpowiadają danej części twojego systemu, a następnie wykorzystaj ilość ddskopiowanych danych, aby oszacować, ile nuknąłeś. Jeśli nadpisałeś tylko część systemu plików, dobry produkt fsck może być w stanie go trochę naprawić (ale straciłeś sporą część danych).

Najprawdopodobniej nadpisałeś /boot. Będziesz musiał ponownie zainstalować jądro (z aptitude) i ponownie zainstalować GRUB2 (z grub-install) (który zniszczył zarówno pierwszy, jak i drugi etap). GRUB2 jest skonfigurowany z plikami w /etc, więc nie będziesz musiał ręcznie niczego tworzyć .

HTNW
źródło
15
„Sprawdź /sys/block/sda/*/{start,end}i odtwórz swoje partycje z tymi informacjami”: czy mógłbyś trochę się rozwinąć? Nie jest to trywialna operacja i wydaje się być głównym punktem twojej skądinąd doskonałej odpowiedzi.
terdon
Wyjście to jest łatwiejsze do rozszyfrowania, wpisać je w powłoce monit o powrót po każdym ...............: sudo parted, unit s, print all,quit
Hannu
3
Skopiuj wszelkie cenne informacje na inny dysk (np. Pamięć USB) podczas ich odkrywania. Jeśli którykolwiek z kroków odtwarzania partycji nie pójdzie idealnie, chcesz mieć zapis tego, co było w pamięci wciąż działającego komputera. Ponadto, skopiuj swoje najcenniejsze i / lub małe pliki (w tym takie jak .bashrci inne pliki kropkowe z katalogu domowego i wszystkie /etc, oprócz prawdziwych danych) na inny dysk, gdy uruchomiony jest komputer . tar.gz to dobry format do kopiowania całych katalogów (ponieważ zachowuje uprawnienia i inne rzeczy).
Peter Cordes,
Prawdopodobnie będzie musiał również sformatować to, co było / boot, co jest dość niebezpieczne, gdy nie ma pewności, co jądro myśli o twoim układzie partycji ...
rackandboneman
1
@rackandboneman Jądro odmawia ponownego odczytania tabel partycji na dysku z zamontowanymi partycjami. /bootTakie ponowne formatowanie jest całkowicie „bezpieczne” (modulo dosłownie wszystko inne o tej sytuacji ), ponieważ jądro niczego nie jest niepewne.
HTNW,
21

Przepraszam, że poczytałem o twoim pechu

Wydaje mi się, że nie masz bieżącej kopii zapasowej i przepraszam, że przeczytałem o twoim pechu

sudo dd if=image.iso of=/dev/sdx

gdzie użyłeś litery dysku x=, awięc nadpisałeś początek dysku twardego, na którym zapisałeś wiele cennych danych.

Nie jesteś pierwszą osobą i obawiam się, że nie ostatnia osoba dotknięta tym problemem. ddjest zalecane na wielu stronach internetowych do takiego wykorzystania. Jest to potężna, ale niebezpieczna metoda, ponieważ robi to, co każesz, bez pytania. Z tego powodu jest często nazywany „niszczycielem danych”.

@marcelm komentuje, że ten pseudonim jest niesprawiedliwy. Ma rację, że zapisywanie bezpośrednio do pliku urządzenia jako root powoduje ryzyko . Pamiętaj więc, że możesz łatwo zastąpić dysk i zniszczyć cenne dane, pisząc do odpowiedniego pliku urządzenia /dev/sdx. (Bezpieczniejsze narzędzia są wymienione na końcu tej odpowiedzi).

Odzyskaj tablicę partycji, systemy plików i / lub zawartość pliku

  • Rób tak mało, jak to możliwe z dyskiem, a przede wszystkim nie zapisuj na nim niczego, ponieważ może to pogorszyć sytuację, zastępując dane, które nadal można odzyskać.

  • Jeśli twoje dane są cenne, powinieneś pracować na sklonowanej kopii , a nie na oryginalnym (częściowo nadpisanym) dysku. Zobacz ten link, przewiń w dół do „Zaawansowana naprawa tablicy partycji, systemu plików i / lub odzyskiwania plików”

    Napraw tablicę partycji i system plików pendrive

  • Jeśli posiadasz tablicę partycji GUID, GPT, na końcu dysku znajduje się kopia zapasowa tablicy partycji /dev/sdai możesz przywrócić główną tablicę partycji z tej tabeli kopii zapasowej za pomocą narzędziagdisk . Szczegółowe informacje można znaleźć w instrukcji obsługi man gdisk.

  • Możesz zarządzać przywracaniem tablicy partycji i systemów plików za pomocą Testdisk z

    http://cgsecurity.org

    Przeczytaj instrukcje na stronie internetowej CGSecurity, a także łącze dostarczone przez @ElderGeek. Partycje zniknęły po utracie zasilania podczas instalacji

  • Możesz także przywrócić tablicę partycji i systemy plików za pomocą gpart / gparted zgodnie z linkiem dostarczonym przez @CSM,

    HOWTO: Przywróć utracone partycje do usuniętej lub uszkodzonej tabeli partycji

  • PhotoRec : Jeśli nie uda się odzyskać tabeli partycji i systemów plików, nadal można odzyskać niektóre dane plików. Pliki w nagłówku, może 1-1,5 GB, są nadpisywane i gubione, ale pliki za tą częścią napędu nadal tam są. PhotoRec z http://cgsecurity.org to narzędzie, które może odzyskać dane „z powierzchni dysku” bez systemu plików. Do identyfikacji wykorzystywane są typowe dane na początku popularnych typów plików.

    Poniższy link zawiera szczegółowe informacje o PhotoRec,

    https://www.cgsecurity.org/wiki/PhotoRec

    Pliki należy zapisać na partycji na oddzielnym dysku.

    Nie można odzyskać struktury katalogów i zwykle nie jest możliwe odzyskanie nazw plików (a nie uprawnień i praw własności), i występują problemy, gdy pliki są pofragmentowane, ale PhotoRec może odzyskać wiele plików (nie tylko zdjęcia, a także wiele innych popularnych typów plików). Ale i to jest duże, ale ciężko jest przebrnąć przez ogromną liczbę nieposortowanych plików, aby zidentyfikować naprawdę ważne pliki, których nazwy należy zmienić na znaczące.

Bezpieczniejsze narzędzia do tworzenia napędów rozruchowych USB za pomocą Ubuntu

W przyszłości skorzystaj z narzędzia, które pomoże Ci zidentyfikować i wybrać odpowiednie urządzenie docelowe i które ma końcowy punkt kontrolny, abyś mógł na przykład dwukrotnie sprawdzić, czy sklonujesz plik ISO na odpowiednie urządzenie docelowe, na przykład

  • W Ubuntu: Ubuntu Startup Disk Creator (w Ubuntu 16.04 LTS i nowszych wersjach),
  • W systemie Linux:

    • Alias dyskówgnome-disks ,
    • mkusb ,
  • W systemie Windows: Win32DiskImager .

Możesz także użyć narzędzi do wyodrębniania , które zapewniają na przykład końcowy punkt kontrolny

sudodus
źródło
1
mogę poręczyć za Testdisk cgsecurity, działa znacznie lepiej niż inne alternatywy, które wypróbowałem w przeszłości, gdzie Testdisk był jedynym, który zdołał uratować wszystko, co przydatne. ale uważaj, ten mały skurwiel domyślnie próbuje odzyskać partycję na samym dysku !! xx
hanshenrik
1
+1. Mogę też ręczyć za testdisk. Również skrypt otoki, aby uniemożliwić ddpisanie na twoim / sda / sdb / cokolwiek też jest dobrym pomysłem.
WinEunuuchs2Unix
19

Twoje ddpolecenie zastąpiło tablicę partycji / dev / sda i wszystkie dane aż do rozmiaru image.iso.

Więc najlepsze, co możesz osiągnąć, to przywrócić tablicę partycji (z dokładnymi rozmiarami), aby odzyskać przynajmniej partycje pod koniec / dev / sda.

śluz
źródło
1
Jeśli chcesz wiedzieć, jak uzyskać dokładne rozmiary, zobacz drugi akapit tej odpowiedzi .
wizzwizz4,
16

Bez przywracania z kopii zapasowej nie ma możliwości pełnego odzyskania. DD zastąpiło tablicę partycji i niektóre dane urządzenia.

potknięcie
źródło
19
Chyba powinienem wtedy wyrzucić wszystkie moje kopie zapasowe odzyskiwania po awarii.
stumblebee,
23
@Baaing Cow, oczywiście jest to odpowiedź i oczywiście nie ma możliwości odzyskania danych. To właśnie oznacza, gdy nadpisujesz dane: zniknęły.
psusi
22
@ ChaiT.Rex To wydaje się mitem, przynajmniej na każdym sprzęcie, który prawdopodobnie znajdziesz na komputerze wyprodukowanym w ciągu ostatniej dekady.
David Schwartz,
19
@ ChaiT.Rex Dotyczy to tylko nie do końca nadpisanych dysków, na których skasowana jest tylko część dysku. Jeśli jednak cały dysk został usunięty lub nadpisany, odzyskiwanie danych nie jest możliwe. Specjaliści czy nie.
Thomas Ward
8
@ BaaingCow Ponieważ wiesz, że musi istnieć sposób na przywrócenie danych, oświeć nas. Wiele osób będzie skłonnych zapłacić za twoją technikę!
Tim
9

Jeśli dysk jest podzielony na partycje /i /homepartycje, a /homepartycja znajdowała się za /partycją, możesz odzyskać dane. MBR, który zawiera listę większości partycji, został zastąpiony. Jednak gparted może odzyskać twoją /homepartycję.

Ten post na forach Ubuntu zawiera kilka pomysłów, jak to zrobić; Odkryłem to, wyszukując „partycję odzyskiwania partycji gparted”.

Po znalezieniu utraconej partycji (może znajdować się w partycji rozszerzonej), należy dodać ją jako jedyną partycję w tabeli partycji.

Gdy to zrobisz, będziesz musiał ponownie zainstalować Linuksa, mówiąc, aby zachować odzyskaną partycję jako /home.

CSM
źródło
2

Testdisk na ratunek

Mogę osobiście poręczyć za Testdisk, który zapisał moje dane po tym, jak wielokrotnie kopiowałem i wklejałem instrukcje /dev/sdboraz zmieniałem je na /dev/sddmoje USB. Tylko raz zapomniałem go zmienić i tam poszedłem /dev/sdbdo śmietnika.

Skonfiguruj system, aby nigdy nie pisać /dev/sda

Zdecydowanie polecam utworzenie skryptu opakowania: Zapobiegaj zniszczeniu dysku SSD lub HDD przez `dd` . Zapewnia to ddnie pisze się /dev/sdalub ewentualnie /dev/sdbczy jakichkolwiek innych urządzeń pamięci masowej.

WinEunuuchs2Unix
źródło