ฉันขอแนะนำอย่างยิ่งให้คุณใช้ddrescue
- อย่าหลีกเลี่ยงเครื่องมือที่เหมาะกับงานการรันมันไม่ยากและคุณจะช่วยให้คุณเครียด
การร้องขอนั้นง่าย:
วิ่งครั้งแรก:
-p
- จัดสรรพื้นที่ล่วงหน้า
-b 4M
- ใช้ขนาดเซกเตอร์ขนาดใหญ่เพื่อความเร็ว
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
การเรียกใช้ครั้งต่อไป: (ซึ่งแตกต่างจากdd
คุณสามารถเรียกใช้งานได้หลายครั้งและจะดำเนินต่อไปที่ที่ค้างไว้โดยอ้างอิงถึงไฟล์บันทึก)
-b 512
- ใช้ขนาดเซกเตอร์ที่เล็กลงเพื่อลองและเติมลงในช่องว่าง
-r 10
- ใช้การลองส่งซ้ำหลายครั้ง
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
ส่วนที่มีข้อผิดพลาดในการอ่าน (โดยค่าเริ่มต้น) จะมีเลขศูนย์และคุณจะจบลงด้วยไฟล์บันทึกที่คล้ายกับด้านล่าง:
# pos size status
0x00000000 0x00014E00 +
0x00014E00 0x00000200 -
0x00015000 0x00005800 +
0x0001A800 0x00000200 -
0x0001AA00 0x00028000 +
0x00042A00 0x00000200 -
0x00042C00 0x00125400 +
เส้นที่ทำเครื่องหมาย+
คือภูมิภาคที่ปราศจากข้อผิดพลาดบรรทัดที่ทำเครื่องหมาย-
เป็นพื้นที่ที่มีข้อผิดพลาด
คุณอาจต้องพิจารณาตัวเลือกต่อไปนี้บางอย่างขึ้นอยู่กับลักษณะของข้อผิดพลาดในการอ่านของคุณ:
-d, --direct
use direct disc access for input file
-K, --skip-size=<min>[,<max>]
initial size to skip on read error [64 KiB]
-M, --retrim
mark all failed blocks as non-trimmed
-O, --reopen-on-error
reopen input file after every read error
-r, --retry-passes=<n>
exit after <n> retry passes (-1=infinity) [0]
-R, --reverse
reverse the direction of all passes
ตอบคำถามของคุณโดยตรง:
- คุณอาจกำลังประสบปัญหาบัฟเฟอร์ ... คุณอาจเห็นว่ามีหลายบรรทัดปรากฏขึ้นพร้อมกันและไม่มีอะไรอีกแล้ว - ดู
unbuffer
sudo
อาจขอรหัสผ่าน แต่คุณเปลี่ยนเส้นทางพรอมต์ไป ... ดังนั้นจึงไม่มีอะไรเกิดขึ้น
dd
kill -15