วิธีที่จะดำเนินการต่อกระบวนการ ddrescue?


10

ฉันต้องกู้คืน 1TB USB HD ของฉัน ฉันใช้ddrescueเพื่อทำสิ่งนี้ให้สำเร็จ มีวิธีที่ฉันสามารถดำเนินการต่อddrescueเมื่อฉันเริ่มมันได้หรือไม่

ฉันกำลังใช้คำสั่ง:

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

คำตอบ:


15

ddrescueสามารถดำเนินการต่อได้ แต่ต้องมีล็อกไฟล์เพื่อให้สามารถทำเช่นนั้นได้ ล็อกไฟล์จะบันทึกความคืบหน้าที่ ddrescue ได้ทำไปแล้วและการรีสตาร์ท ddrescue จะอ่านล็อกไฟล์และเริ่มต้นจากจุดที่ค้างไว้

ไฟล์บันทึกจะเป็นพารามิเตอร์ที่สาม:

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

หากคุณเริ่มการทำงาน ddrescue แล้วโดยไม่มีไฟล์บันทึกและยกเลิกการทำงานครั้งต่อไปที่ ddrescue จะเริ่มต้นที่จุดเริ่มต้นเนื่องจากไม่มีบันทึกสิ่งที่ถูกกู้คืนแล้ว

หมายเหตุ : ddrescueและdd_rescueเป็นโปรแกรมที่แตกต่างกัน


1
ดังนั้นถ้าฉันเริ่มต้นด้วยไฟล์บันทึกและจะเรียกใช้คำสั่งเดียวกันอีกครั้งมันจะกลับมาทำงานจากตำแหน่งบันทึกล่าสุดโดยอัตโนมัติ / edit:มันเริ่มจากตำแหน่งสุดท้าย
Qwerty

6

แม้ว่าคุณลืมระบุ logfile อาจมีความหวัง:

สร้างโหมด

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

หรือบางทีคุณเริ่มคัดลอกไดรฟ์ด้วยdd conv=noerror,syncและตอนนี้อยู่ในสถานการณ์เดียวกันที่อธิบายไว้ข้างต้น ในกรณีนี้โปรดทราบว่าคุณไม่สามารถใช้สำเนาที่ทำโดย dd เว้นแต่ว่าจะมีการเรียกใช้syncอาร์กิวเมนต์การแปลง

อย่าสิ้นหวัง (ยัง) ในบางกรณี Ddrescue สามารถสร้างล็อกไฟล์โดยประมาณจากไฟล์อินพุตและสำเนา (บางส่วน) ซึ่งเกือบจะดีเท่ากับล็อกไฟล์ที่แน่นอน มันทำให้สิ่งนี้โดยเพียงแค่สมมติว่าภาคส่วนที่บรรจุศูนย์ทั้งหมดไม่ได้รับการช่วยเหลือ

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

ตัวอย่างเช่นหากคุณลองคำสั่งใดคำสั่งหนึ่งต่อไปนี้

ddrescue infile outfile

หรือ

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

คุณสามารถสร้าง logfile โดยประมาณด้วยคำสั่งนี้:

ddrescue --generate-mode infile outfile logfile

infile ดิสก์จะได้รับการช่วยเหลือและ outfile ข้อมูลช่วยเหลือ?
Bastion

3

อย่างที่คนอื่น ๆ พูดคุณควรระบุ logfile เป็นพารามิเตอร์ตัวที่สามซึ่งจะช่วยให้กลับมาทำงานต่อได้ เนื่องจากคุณไม่ได้ทำเช่นนั้นนั่นจะไม่ช่วยคุณที่นี่ หากคุณทราบว่ากระบวนการไปถึงจุดใดโดยประมาณคุณสามารถใช้พารามิเตอร์--input-positionและ--output-positionเพื่อเริ่มต้นจากจุดนั้น (ตรวจสอบให้แน่ใจว่าตั้งค่าพารามิเตอร์ทั้งสองเป็นค่าเดียวกันมิฉะนั้นเอาต์พุตจะเสียหาย)


2

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


2

ต่อhttps://wiki.archlinux.org/index.php/Disk_cloningดูเหมือนว่าด้วยconv=noerror,syncสวิตช์ddในความเป็นจริงจะเพิ่มศูนย์ในตอนท้ายของบล็อกไม่ตรงที่เกิดข้อผิดพลาดในการอ่าน ตรงข้ามกับข้อมูลในคำตอบของ Miles Wolbe จาก 2013-08-29

ตัวอย่างเช่นถ้าลำดับที่ถูกต้องคือ198123283และมีข้อผิดพลาดในการอ่านที่อยู่ตรงกลางมันจะเขียนไม่ได้198283000198000283

ดังนั้นในกรณีที่มีข้อผิดพลาดในการอ่านจริงวิธีการที่เสนอจะไม่ถูกต้อง - จะมีส่วนที่สามารถอ่านได้ซึ่งจะเต็มไปด้วยศูนย์ แต่จะถูกพิจารณาว่า "ช่วย"

อย่างไรก็ตามเป็นวิธีปฏิบัติที่ดีในการเริ่มต้นความพยายามในการกู้คืนด้วยการเติมไดรฟ์ปลายทางด้วยศูนย์ (หรืออย่างน้อยพื้นที่ว่างซึ่งสามารถทำได้ด้วย WinHex เป็นต้น)


สวัสดี GabrielB ยินดีต้อนรับสู่ Super User ฉันได้แก้ไขคำตอบของคุณแล้ว แต่ฉันไม่แน่ใจว่ามันเพียงพอที่จะอยู่คนเดียว - บางทีคุณอาจแก้ไขเพิ่มเติมเพื่อรวมส่วนเล็ก ๆ ที่ตอบคำถามเดิมด้วยใช่ไหม
bertieb

ถ้าฉันจำได้อย่างถูกต้องฉันต้องการแสดงความคิดเห็นคำตอบของ Miles Wolbe แต่ไม่สามารถเป็นสมาชิกใหม่ดังนั้นฉันต้องโพสต์คำตอบใหม่ หากเป็นไปได้อย่าลังเลที่จะย้ายโพสต์ด้านบนที่ควรปรากฏและลบโพสต์นี้
GabrielB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.