Bagaimana cara membuat gambar yang sedikit identik dari stik usb?

21

Saya memiliki stik usb yang tidak dapat dibaca karena beberapa alasan. Saya ingin membuat gambarnya untuk tujuan penyimpanan sehingga saya bisa mencoba mengambil data dari gambar di kemudian hari.

Bagaimana saya bisa membuat image yang serupa dengan usb stick?


Ini adalah kesalahan yang saya dapatkan ketika menggunakan 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
sumber
Hex editor mana yang Anda gunakan?
AJMansfield
Ketika Anda tidak dapat membaca dari perangkat yang /dev/sdxmenunjuk ke stik USB, ada masalah serius, dan saya pikir tidak ada alat yang tersedia untuk pengguna normal, itu akan berfungsi. Lihat tautan ini untuk lebih jelasnya, askubuntu.com/questions/144852/… ; Jangan menyerah sekaligus. Coba sesuai dengan daftar hal-hal yang mungkin dapat membacanya untuk bekerja. Mungkin Anda dapat menarik flashdisk USB terpisah dan menemukan kartu micro SD, yang masih berfungsi sesuai dengan komentar oleh @ ubfan1 (pada jawaban yang ditautkan).
sudodus
Anda memiliki 2 opsi untuk menangani masalah Anda: 1 mudah: jalankan sudo su dan kemudian sebagai root jalankan perintah dd Anda 2 versi yang lebih terampil jalankan dd dengan status dan '' sudo bash -c 'dd status = kemajuan jika = / dev / sd * | gzip> ~ / Backup-USB.img.gz '
WiKrIe

Jawaban:

39

dd saya t!

Penggunaan akan menjadi seperti di sudo dd if=/dev/sdb of=~/USB_imagemana / dev / sdb adalah drive usb Anda sebagaimana tercantum oleh sudo fdisk -ldan ~ / USB_image adalah file gambar di mana salinan akan dibuat (jalur di mana file gambar akan dibuat).

Untuk mengembalikan gambar ke drive USB lain cukup membalikkan proses: sudo dd if=~/USB_image of=/dev/sdbakan mengembalikan ~ / USB_image ke perangkat sdb . Pastikan saja drive USB yang baru sama besar atau lebih besar dari yang asli.

Anda juga dapat memasang file gambar yang baru saja Anda buat ke jalur tanpa harus mengembalikannya terlebih dahulu ke drive USB lain mount ~/USB_image /mnt/USB_image -o loop.

Bruno Pereira
sumber
Bagaimana jika fdisk -ltidak dapat melihat drive usb? Namun, saya dapat melihatnya dari program Disk Utility sebagai / dev / sdd, tetapi ketika saya mencoba menggunakan perintah Anda, sepertinya gagal.
oshirowanen
Gagal dengan kesalahan apa?
Bruno Pereira
Menambahkan kesalahan pada pertanyaan awal karena terlalu banyak untuk komentar.
oshirowanen
1
Jika fdisk tidak menampilkan perangkat, gunakan dmesg untuk melihat apa yang terjadi ketika perangkat dicolokkan. Dmesg adalah daftar interaksi kernel, jadi pada dasarnya jika perangkat keras melakukan sesuatu pada komputer Anda, ada pesan tentang hal itu di dmesg.
j0h
2
@Alex digunakan status='progress'dengan dd di Ubuntu, atau mencari tahu PID dari ddperintah Anda dan mengirimkannya SIGUSR1sinyal. Namun, tidak yakin tentang implementasi lain.
Sergiy Kolodyazhnyy
7

Gunakan ddrescue. Ini akan berlanjut setelah kesalahan, di mana ddakan gagal.

Selain itu, ddrescueada dalam repo. Pada 13,04, saya mengetik sudo apt-get install gddrescue untuk menginstal.

Gunakan sudo fdisk -latau dmesguntuk mengetahui lokasi perangkat mis:: /dev/sdb, lalu jalankan perintah seperti

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

ada banyak opsi untuk ddrescue, dan Anda mungkin ingin membaca manhalaman. Juga saya tidak yakin mengapa perangkat keras Anda gagal, dan dumping dd. Satu blok buruk bisa ddberhenti, tetapi bisa juga kegagalan daya terputus-putus. dmesgmungkin memberi tahu Anda lebih banyak tentang kegagalan perangkat keras yang mungkin Anda alami.

PASTIKAN perangkat tidak terpasang! ketika Anda mencoba melakukan pemulihan data, pencitraan, dll. Ini dapat menyebabkan masalah.

Ada banyak hal yang bisa salah dalam pemulihan data. Poskan kembali jika Anda memiliki masalah. testdiskadalah utilitas yang bagus untuk melakukan pemulihan data setelah Anda memiliki gambar.

Hanya untuk kejelasan, apakah ini perangkat hard drive usb atau usb (memori solid state)?

Kesalahan I / O biasanya menunjukkan kerusakan perangkat keras daripada kerusakan sistem file.

Coba juga dapatkan analisis data SMART perangkat, jika tersedia. Ini bisa memberi tahu Anda hal-hal seperti jika perangkatnya sudah terlalu panas, dinyalakan untuk waktu yang lama, memiliki bad sector, terkena lebih dari X no. dari Gs dll.

j0h
sumber
USB stick, tidak ada data SMART untuk menganalisa ... Saya juga berpikir bahwa Anda perlu menggunakan sudountuk ddrescue, * mana dd hanya akan gagal * adalah semacam tidak benar karena Anda dapat mengkonfigurasi dduntuk mengabaikan kesalahan membaca. testdiskluar biasa ketika Anda dapat membaca sektor data yang hilang , bukan ketika drive mati.
Bruno Pereira
# adalah simbol untuk root jadi tidak, sudo tidak diperlukan. jika $ maka ya.
j0h
Saya juga ingin mencatat, bahwa jika ddrescue, atau bahkan dd gagal, tetapi Anda dapat menghasilkan gambar, Anda mungkin masih mencoba melakukan pemulihan data pada gambar itu.
j0h
Saya akan menyarankan penggunaan gddrescuemenentang ddrescuekarena gddrescuelebih baru dan lebih mampu melakukan pekerjaan yang ddrescuetidak.
Bruno Pereira
1
Aku bahkan tidak kenal pria, baca posting saya. gddrescue adalah paket, dan ddrescue adalah perintahnya.
j0h
2

Anda dapat membuat gambar stik USB (atau perangkat lain) dengan menggunakan dd.

Misalnya

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

Anda dapat menambahkan lebih banyak parameter dduntuk mengoptimalkan perintah (misalnya bs).

Uwe Plonus
sumber
2

dd, seperti yang disebutkan oleh poster sebelumnya, adalah cara asli untuk pergi. Anda akan menginginkannya untuk melanjutkan kesalahan, jadi Anda akan memulainya dengan:

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

Bagian yang penting adalah yang terakhir: conv=syncmemberi tahu dd untuk mengisi semua blok itu ia hanya bisa membaca sebagian dengan nol, sehingga gambar yang dihasilkan mungkin memiliki beberapa nol terlalu banyak, tetapi secara struktural akan sama dengan disk yang terkelupas, dikurangi kesalahan pembacaannya. conv=noerror membereskan kesalahan baca tersebut, memberi tahu dd untuk melanjutkan dengan blok berikutnya. Pada titik ini, ukuran blok penting, karena jika lebih besar dari yang diperlukan untuk melewati kesalahan, data yang dapat dibaca akan hilang di sini. Blocksize harus selalu menjadi faktor dua - jika ragu, 512kharus melakukan trik.

Maka saya sarankan untuk:

  • menyimpan salinan gambar yang tidak dimodifikasi di tempat yang aman
  • fsck salinan gambar disk
  • pasang image disk
  • periksa file Anda - mereka dapat dibaca tanpa masalah sekarang, tetapi beberapa mungkin hilang atau terpotong
  • Jika perangkat itu sendiri tidak dapat dibaca sama sekali, Anda mungkin kurang beruntung. Selain itu, jika perangkat tersebut mengandung beberapa perangkat lunak berpemilik, mungkin pengaturan untuk mengembalikan kesalahan baca ketika diakses di blok pertama.

(Mengutip sebagian dari artikel yang ditulis pada 2010)

Jika Anda tidak perlu tetap asli, Anda selalu bisa mencoba alat yang mencoba meringankan proses, seperti ddrescue (paket gddrescue) dan pendampingnya ddrescueview( sourceforge ) untuk memvisualisasikan kesalahan.

Tatjana Heuser
sumber
2

Sehubungan dengan bagian kedua dari pertanyaan Anda "Ini adalah kesalahan yang saya dapatkan ketika menggunakan dd": Saya bisa melihat beberapa kemungkinan.

  1. Perhatikan perbedaan perintah yang Anda ketikkan dengan jawaban yang diterima; Anda kehilangan sebuah ~di depan /USB_image. Dengan kata lain, Anda mencoba untuk mengeluarkan root dari sistem file Anda, bukan ke direktori home Anda.
  2. /dev/sddmungkin bukan drive yang benar. Jalankan sudo fdisk -ldan bandingkan ukuran drive dengan ukuran stik USB yang diketahui. Misalnya, saya tahu ini adalah saya USB stick karena dekat dengan 16GB: Disk /dev/sdf: 15.8 GB, 15805186048 bytes.
MDMower
sumber