bagaimana cara melanjutkan proses ddrescue?

9

Saya harus memulihkan 1TB USB HD saya. Saya menggunakan ddrescueuntuk mencapai ini. Apakah ada cara saya dapat melanjutkan ddrescuesetelah saya memulainya?

Saya menggunakan perintah:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image
confiq
sumber

Jawaban:

14

ddrescue dapat dilanjutkan, tetapi membutuhkan file log untuk dapat melakukannya. File log akan mencatat kemajuan yang telah dibuat ddrescue sejauh ini, dan memulai ulang ddrescue akan membaca file log dan mulai dari mana ia tinggalkan.

File log akan menjadi parameter ketiga:

ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log

Jika Anda sudah memulai menjalankan ddrescue tanpa file log dan membatalkannya, saat berikutnya ddrescue berjalan, itu akan mulai dari awal karena tidak memiliki catatan apa yang telah dipulihkan.

Catatan : ddrescue dan dd_rescue adalah program yang berbeda.

shf301
sumber
1
Jadi jika saya mulai dengan file log pada awalnya dan akan menjalankan perintah yang sama lagi, itu akan secara otomatis melanjutkan dari posisi log terakhir? / edit: itu memang dimulai dari posisi terakhir.
Qwerty
6

Bahkan jika Anda lupa menentukan logfile, mungkin ada harapan:

Hasilkan-mode

Jadi Anda tidak membaca tutorial dan memulai ddrescue tanpa logfile. Sekarang, dua hari kemudian, komputer Anda mogok dan Anda tidak bisa tahu berapa banyak data yang berhasil disimpan ddrescue. Dan yang lebih buruk, Anda tidak bisa melanjutkan penyelamatan; Anda harus memulainya dari awal.

Atau mungkin Anda mulai menyalin drive dd conv=noerror,syncdan sekarang berada dalam situasi yang sama seperti dijelaskan di atas. Dalam hal ini, perhatikan bahwa Anda tidak dapat menggunakan salinan yang dibuat oleh dd kecuali jika itu dipanggil dengan syncargumen konversi.

Jangan putus asa (belum). Dalam beberapa kasus, Ddrescue dapat menghasilkan perkiraan file log, dari file input dan salinan (sebagian), yang hampir sama baiknya dengan file log yang sebenarnya. Itu membuat ini hanya dengan mengasumsikan bahwa sektor yang mengandung semua nol tidak diselamatkan.

Namun, jika tujuan salinan adalah drive atau partisi, (atau file reguler dan pemotongan tidak diminta), kemungkinan besar Anda harus memulai ulang ddrescue dari awal. (Kali ini dengan file log, tentu saja). Alasannya adalah bahwa data lama mungkin ada di drive yang belum ditimpa, dan mungkin tidak dicoba tetapi tidak nol.

Misalnya, jika Anda pertama kali mencoba salah satu dari perintah ini:

ddrescue infile outfile

atau

dd if=infile of=outfile conv=noerror,sync

Anda bisa membuat perkiraan file log dengan perintah ini:

ddrescue --generate-mode infile outfile logfile
Miles Wolbe
sumber
Apakah infile disk sedang diselamatkan, dan mengaburkan data penyelamatan?
Bastion
3

Seperti yang orang lain katakan, Anda harus selalu menentukan logfile sebagai parameter ketiga, yang akan memungkinkan dilanjutkan. Karena Anda tidak melakukan itu, itu tidak akan membantu Anda di sini. Jika Anda tahu kira-kira titik prosesnya, Anda dapat menggunakan --input-positiondan --output-positionparameter untuk memulai dari titik itu (pastikan untuk mengatur kedua parameter tersebut ke nilai yang sama, jika tidak, hasilnya akan rusak).

Mgorven
sumber
2

Karena Anda tidak menentukan file log sebagai parameter ketiga, melanjutkan kembali tidak dapat dilakukan secara otomatis. Anda bisa membuat file log dengan tangan jika Anda tahu sektor yang sudah diselamatkan, sintaksinya mudah. Cukup mulai penyelamatan boneka lain ke file lain sambil menentukan log dan biarkan ia membaca area yang berbeda. Kemudian edit log untuk mewakili area yang sudah diselamatkan di file pertama Anda. Sekarang jalankan kembali perintah Anda sebelumnya tetapi beri nama file log sebagai parameter ketiga. ddrescue kemudian akan dilanjutkan pada sektor yang belum dicoba pertama.

Gurken Papst
sumber
2

Per https://wiki.archlinux.org/index.php/Disk_cloning tampaknya dengan conv=noerror,syncsaklar, ddsebenarnya menambahkan angka nol di akhir blok, tidak persis di mana kesalahan baca terjadi. Ini bertentangan dengan informasi dalam jawaban Miles Wolbe dari 2013-08-29.

Misalnya, jika urutan yang benar adalah 198123283dan ada kesalahan baca di tengah itu akan menulis 198283000, bukan 198000283.

Jadi, jika benar-benar ada kesalahan pembacaan, metode yang diusulkan tidak akan akurat - akan ada area yang dapat dibaca yang akan berakhir diisi dengan nol, namun akan dianggap "diselamatkan".

Omong-omong, ini adalah praktik yang baik untuk memulai upaya pemulihan dengan mengisi drive tujuan dengan nol (atau setidaknya ruang kosong, yang dapat dilakukan dengan WinHex misalnya).

GabrielB
sumber
Halo GabrielB, selamat datang di Pengguna Super. Saya telah mengedit jawaban Anda, tetapi saya tidak yakin itu cukup untuk berdiri sendiri - mungkin Anda dapat mengeditnya lebih lanjut untuk memasukkan bagian kecil yang membahas pertanyaan awal juga?
bertieb
Jika saya ingat benar saya ingin mengomentari jawaban Miles Wolbe tetapi tidak bisa sebagai anggota baru, jadi saya harus mengirim jawaban baru. Jika memungkinkan, jangan ragu untuk memindahkan posting di atas di mana ia akan muncul dan hapus yang ini.
GabrielB