ฉันจะแก้ไขข้อผิดพลาดอินพุต / เอาต์พุตโดยใช้ dd ได้อย่างไร


14

สวัสดีฉันกำลังพยายามแก้ไขระบบ Windows 7 ของฉันด้วยฮาร์ดไดรฟ์ที่ชำรุด แต่ยังคงทำงานอยู่

ฉันพยายามคัดลอกข้อมูลทั้งหมดไปยังไดรฟ์ใหม่เพื่อติดตั้ง Windows 7 ใหม่อีกครั้งเรียกว่า SQSERVICE

ฉันไม่สามารถคัดลอกได้เลย - ดูด้านล่าง:

$ sudo dd if=/dev/sdc1 of=/dev/sda1
dd: reading `/dev/sdc1': Input/output error
11233976+0 records in
11233976+0 records out
5751795712 bytes (5.8 GB) copied, 187.731 s, 30.6 MB/s

วิธีแก้ไข "ข้อผิดพลาดของอินพุต / เอาต์พุต"?


1
@ Gertvddijk ขอบคุณที่แก้ไขปัญหาการสะกดของฉันฉันจากเนเธอร์แลนด์ยังคงเรียนภาษาอังกฤษได้ดี
Erazer

คำตอบ:


16

คุณพูดด้วยตนเอง: ดิสก์ของคุณเสีย คุณสามารถลองใช้ddrescueมันอาจสามารถหลีกเลี่ยงเส้นทางที่เสียหายได้ แต่ระวังว่าคุณจะสูญเสียข้อมูล

การกู้คืนจากข้อมูลสำรองจะง่ายขึ้น :)

การใช้งานที่ถูกต้องddrescueเป็นดังนี้:

sudo apt-get install gddrescue
sudo ddrescue /dev/sdc1 /dev/sda1

หรือถ้าคุณต้องการstdoutไพพ์ไปยังเครื่องมือการตรวจสอบความก้าวหน้า:

sudo ddrescue /dev/sdc1 /dev/sda1 | pv

ใช่ฉันบอกว่า แต่การกู้คืนจากการสำรองข้อมูลมันอยู่บนไดรฟ์นั้น .. และฉันไดรฟ์นี้มีปัญหาในภาคเท่านั้นฉันจะใช้คำสั่งนั้นได้อย่างไร ฉันแค่แค่ผู้ใช้ linux มือใหม่ ..
Erazer

2
ดังนั้นการสำรองข้อมูลของคุณอยู่ในไดรฟ์เดียวกับไดรฟ์ที่คุณกำลังทำอยู่! boggles
Dennis Kaarsemaker

1
ไดรฟ์เดียวกันดีใช่ แต่ไม่ใช่ในพาร์ติชันเดียวกัน ดีฉันโง่เล็กน้อย: '(สำรองไม่สำคัญเลย
Erazer

6

ฉันไม่ทราบว่าสิ่งนี้มีประโยชน์กับใครหรือไม่ แต่ถ้าฉันพบหน้านี้ในการค้นหาของฉันบางทีมันอาจช่วยคนอื่นได้ (นอกเหนือจาก OP ที่หวังว่าจะสามารถแก้ไขปัญหาของเขาได้เมื่อหลายเดือนก่อน)

ddrescue อาจเป็นตัวเลือกที่ดีที่สุดในกรณีนี้สำหรับการกู้คืนข้อมูล (แตกต่างจาก "แก้ไข" ข้อผิดพลาด / ดิสก์ตามคำถามเดิมถูกใช้คำ) ตามที่เดนนิสแนะนำ

หรือคุณสามารถติดดิสก์และคัดลอกไฟล์ได้ นี่คือเร็วกว่ามากถ้ามีพื้นที่ว่างมากมายหรือถ้าคุณต้องการเฉพาะไฟล์บางไฟล์ คำเตือน: ทำจากเครื่องลีนุกซ์ซึ่งจะสูญเสียแอตทริบิวต์เพิ่มเติมทั้งหมดเช่นการอนุญาตไฟล์ดังนั้นจึงเป็นตัวเลือกที่แย่มากสำหรับไฟล์ระบบปฏิบัติการ แต่ทนได้สำหรับไฟล์ผู้ใช้ การทำจาก windows ควรเก็บรักษาสิ่งเหล่านั้นไว้ แต่อาจไม่สามารถจัดการข้อผิดพลาดได้อย่างราบรื่นอาจทำให้มันช้ามาก

ตัวเลือกอื่นที่จริง "แก้ไข" เซกเตอร์ไม่เพียงข้ามพวกเขาคือการปันเซกเตอร์เสีย หากคุณทราบหมายเลขเซกเตอร์ (ในกรณีของคุณ 11233976 สมมติว่าขนาดบล็อกของคุณเป็น dd และขนาดเซกเตอร์เท่ากับ 512) ให้เรียกใช้สิ่งนี้และเรียกใช้อีกครั้งสำหรับเซกเตอร์เสียใหม่แต่ละรายการที่คุณพบ:

hdparm –write-sector 11233976 –yes-i-know-what-i-am-doing /dev/sdb

คำเตือน: สิ่งนี้จะทำลายข้อมูลในส่วนนั้น ดังนั้นให้แน่ใจว่าคุณรู้จริง ๆ ว่าคุณกำลังทำอะไรอยู่ หากไม่สามารถอ่านเซกเตอร์นี้ได้การเขียนทับมันจะหยุดข้อผิดพลาด แต่หมายความว่าเซกเตอร์นั้นจะมีขยะซึ่งอาจทำให้ไฟล์สำคัญเสียหาย

ดูสิ่งนี้สำหรับข้อมูลเพิ่มเติม: http://www.sjvs.nl/forcing-a-hard-disk-to-reallocate-bad-sectors/

และหากดิสก์ของคุณมีเซกเตอร์เสียจำนวนมาก (อาจเป็นพัน) (เห็นว่าเป็น Current_Pending_Sector, Offline_Uncorrectable หรือ Reallocated_Sector_Ct) หรือถ้าเป็นของใหม่และยังอยู่ในการรับประกันหรือหากจำนวนขึ้นอย่างต่อเนื่องในช่วงเวลาคุณควรแทนที่ ดิสก์ต่อไป อย่าให้พวกเขาบอกคุณว่าการจัดสรรใหม่แก้ไขดิสก์ แก้ไขเฉพาะเซกเตอร์เสียที่รู้จักและใช้เซกเตอร์ที่สำรองไว้สำหรับการจัดสรรใหม่ หากดิสก์มีแนวโน้มที่จะพัฒนาเซกเตอร์เสียมากขึ้นปัญหาก็จะกลับมาเรื่อย ๆ ทุกครั้งที่ทำลายข้อมูล


1

ในขณะที่บางส่วนของดิสก์เสียหายคุณยังสามารถคัดลอกส่วนที่ดีของดิสก์ได้

$ dd --help
...
 noerror   continue after read errors
...
sudo dd if=/dev/sdc1 of=/dev/sda1 conv=noerror
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.