Jak stworzyć nieco identyczny obraz pendrive'a?

21

Mam pamięć USB, która z jakiegoś powodu jest nieczytelna. Chcę zrobić jego zdjęcie do celów przechowywania, aby później móc spróbować pobrać dane z obrazu.

Jak mógłbym zacząć tworzyć taki nieco identyczny obraz pamięci USB?


To jest błąd, który pojawia się podczas używania dd:

oshirowanen@desktop:~$ sudo dd if=/dev/sdd of=/USB_image
[sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 
oshirowanen
źródło
Z którego edytora szesnastkowego korzystasz?
AJMansfield,
Gdy nie możesz odczytać z urządzenia /dev/sdxwskazującego na pamięć USB, istnieje poważny problem i myślę, że nie ma dostępnych narzędzi dla zwykłych użytkowników, które działałyby. Zobacz ten link, aby uzyskać więcej informacji, askubuntu.com/questions/144852/... ; Nie poddawaj się od razu. Spróbuj zgodnie z listą rzeczy, które mogą sprawić, że czytanie zacznie działać. Może uda ci się rozdzielić pendrive USB i znaleźć kartę micro SD, która nadal działa zgodnie z komentarzem @ ubfan1 (na powiązaną odpowiedź).
sudodus,
masz 2 opcje rozwiązania problemu: 1. łatwy: uruchom sudo su, a następnie jako root uruchom polecenie dd 2. bardziej zaawansowaną wersję uruchom dd ze statusem i '' sudo bash -c 'dd status = progress if = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

Odpowiedzi:

39

dd to!

Użycie byłoby podobne do tego, sudo dd if=/dev/sdb of=~/USB_imagegdzie / dev / sdb to dysk USB wymieniony przez sudo fdisk -la ~ / USB_image to plik obrazu, w którym zostanie wykonana kopia (ścieżka, w której zostanie utworzony plik obrazu).

Aby przywrócić obraz na inny dysk USB, po prostu odwróć proces: sudo dd if=~/USB_image of=/dev/sdbprzywróci ~ / USB_image do urządzenia sdb . Upewnij się tylko, że nowy dysk USB jest tak duży lub większy niż oryginalny.

Możesz także zamontować utworzony plik obrazu na ścieżce bez konieczności przywracania go najpierw na innym dysku USB mount ~/USB_image /mnt/USB_image -o loop.

Bruno Pereira
źródło
Co jeśli fdisk -lnie widać dysku USB? Widzę go jednak z programu Disk Utility jako / dev / sdd, ale kiedy próbuję użyć polecenia, wydaje się, że zawodzi.
oshirowanen
Z jaką usterką nie powiodło się?
Bruno Pereira,
Dodano błąd do pierwotnego pytania, ponieważ było to zbyt wiele do komentarza.
oshirowanen
1
Jeśli fdisk nie wyświetla urządzenia, użyj dmesg, aby zobaczyć, co się dzieje, gdy urządzenie jest podłączone. Dmesg to lista interakcji jądra, więc w zasadzie jeśli sprzęt robi coś na twoim komputerze, w dmesg pojawia się komunikat.
j0h
2
@Alex użyj status='progress'z dd Ubuntu lub znajdź PID swojego ddpolecenia i wyślij mu SIGUSR1sygnał. Nie jestem jednak pewien co do innych implementacji.
Sergiy Kolodyazhnyy
7

Zastosowanie ddrescue. Będzie kontynuowany po błędach, gdzie ddpo prostu zawiedzie.

Dodatkowo ddrescueznajduje się w repozytoriach. W dniu 13.04 napisałem, sudo apt-get install gddrescue aby zainstalować.

Użyj sudo fdisk -llub, dmesgaby ustalić lokalizację urządzenia, np .: /dev/sdb, a następnie uruchom polecenie, takie jak

ddrescue /dev/sdb /home/user/desktop/bkp.img

istnieje wiele opcji ddrescuei możesz przeczytać manstrony. Nie jestem też pewien, dlaczego twój sprzęt zawiesza się i zrzuca dd. Jeden zły blok może ddzakończyć, ale może również powodować sporadyczne awarie zasilania. dmesgmoże powiedzieć ci więcej o awariach sprzętu, których możesz doświadczać.

UPEWNIJ SIĘ, że urządzenie nie jest zamontowane! podczas próby odzyskania danych, obrazowania itp. Może to powodować problemy.

Istnieje wiele rzeczy, które mogą pójść nie tak w odzyskiwaniu danych. Napisz z powrotem, jeśli masz problemy. testdiskto dobre narzędzie do odzyskiwania danych po utworzeniu obrazu.

Czy dla jasności jest to dysk twardy USB czy urządzenie USB (pamięć półprzewodnikowa)?

Błędy we / wy zazwyczaj wskazują na awarie sprzętowe, a nie na uszkodzenie systemu plików.

Spróbuj także uzyskać analizę danych SMART urządzenia, jeśli jest dostępna. Może ci to powiedzieć, że jeśli urządzenie jest przegrzane, włączone przez długi czas, ma uszkodzone sektory, narażone na więcej niż X nie. Gs itp.

j0h
źródło
USB, nie ma danych SMART do analizy ... Myślę też, że trzeba użyć sudodla ddrescue, * gdzie dd po prostu nie * jest jakby nie do końca prawda, ponieważ można skonfigurować dd, aby zignorować błędy odczytu. testdiskjest niesamowity, gdy możesz odczytać utracone sektory danych, a nie kiedy dysk jest zepsuty.
Bruno Pereira,
# jest symbolem roota, więc nie, sudo nie jest wymagane. jeśli to $, to tak.
j0h
Chcę również zauważyć, że jeśli ddrescue, a nawet dd zawiedzie, ale jesteś w stanie wygenerować obraz, nadal możesz spróbować odzyskać dane na tym obrazie.
j0h
Sugerowałbym użycie gddrescueprzeciw, ddrescueponieważ gddrescuejest nowszy i bardziej zdolny do wykonania pracy, która ddrescuedziała.
Bruno Pereira,
1
Nawet nie znam człowieka, przeczytaj mój post. gddrescue to pakiet, a ddrescue to polecenie.
j0h
2

Za pomocą można utworzyć obraz pamięci USB (lub innego urządzenia) dd.

Na przykład

dd if=<usb device> of=usb.img

Możesz dodać więcej parametrów, ddaby zoptymalizować polecenie (np bs.).

Uwe Plonus
źródło
2

dd, jak wspomniano w poprzednim plakacie, jest rodzimą drogą. Będziesz jednak chciał, aby nadal występowały błędy, więc zacznij od:

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

Ważna część jest ostatnia: conv=syncmówi dd, aby wstawił wszystkie te bloki, które mógłby odczytać tylko częściowo zerami, więc wynikowy obraz może mieć kilka zer za dużo, ale będzie strukturalnie równy płatkowemu dyskowi, pomniejszając jego błędy odczytu. conv=noerror zajął się tymi błędami odczytu, mówiąc dd, aby kontynuował z następnym blokiem. W tym momencie rozmiar bloku ma znaczenie, ponieważ jeśli jest większy niż to konieczne, aby pominąć błąd, czytelne dane zostaną tutaj utracone. Blocksize powinien zawsze być dwa razy większy - w razie wątpliwości, 512kpowinien załatwić sprawę .

Następnie sugeruję:

  • przechowuj niezmodyfikowaną kopię tego obrazu w bezpiecznym miejscu
  • fsck kopię obrazu dysku
  • zamontuj obraz dysku
  • sprawdź swoje pliki - można je teraz odczytać bez problemu, ale niektóre mogą brakować lub zostać obcięte
  • Jeśli samo urządzenie w ogóle nie może być odczytane, możesz mieć pecha. Ponadto, jeśli urządzenie zawiera pewne zastrzeżone oprogramowanie, może zostać skonfigurowane, aby zwracało błędy odczytu po uzyskaniu dostępu w pierwszych blokach.

(Częściowo zacytowałem się z artykułu napisanego w 2010 roku)

Jeśli nie musisz pozostać natywny, zawsze możesz wypróbować narzędzia, które próbują nieco ułatwić proces, takie jak ddrescue (pakiet gddrescue) i jego towarzysz ddrescueview( sourceforge ) w celu wizualizacji błędów.

Tatjana Heuser
źródło
2

W odniesieniu do drugiej połowy twojego pytania „To jest błąd, który otrzymuję podczas używania dd”: Widzę kilka możliwości.

  1. Zwróć uwagę na różnicę w wpisanym poleceniu na zaakceptowaną odpowiedź; brakuje ci ~przed /USB_image. Innymi słowy, próbujesz wypisać katalog główny systemu plików zamiast do katalogu domowego.
  2. /dev/sddmoże nie być prawidłowy dysk. Uruchom sudo fdisk -li porównaj rozmiar napędu ze znanym rozmiarem pamięci USB. Na przykład, wiem, że to moja pamięć USB, ponieważ jest blisko do 16GB: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
MDMower
źródło