- มันไม่ได้เขียนทับข้อมูลที่กู้คืน แต่เติมเต็มช่องว่างในกรณีของการกู้คืนซ้ำ อย่างไรก็ตาม สามารถตัดทอนได้หากเครื่องมือได้รับคำสั่งให้ทำอย่างชัดเจน
- กู้คืนข้อมูลเป็นไฟล์เดียวจากหลายไฟล์หรือบล็อก
- รองรับอินเทอร์เฟซอุปกรณ์หลายประเภท เช่น ไดรฟ์ SATA, ATA, SCSI, MFM, ฟล็อปปี้ดิสก์ และการ์ด SD
ในคู่มือนี้ ฉันจะมาสำรวจเครื่องมือการกู้คืนข้อมูลที่มีประโยชน์อย่างเหลือเชื่อนี้ นอกจากนี้ ฉันจะหารือเกี่ยวกับขั้นตอนการติดตั้ง และวิธีการใช้เพื่อกู้คืนอุปกรณ์บล็อกหรือพาร์ติชัน
- กำลังติดตั้ง ddrescue
- การทำความเข้าใจพื้นฐาน
- ข้อควรพิจารณาที่สำคัญ
- การใช้ ddrescue
- การกู้คืนบล็อกที่เสียหาย
- การกู้คืนไฟล์รูปภาพเป็นบล็อกใหม่
- การกู้คืนบล็อกไปยังบล็อกอื่น
- การกู้คืนข้อมูลเฉพาะจากไฟล์ภาพที่กู้คืน
- คุณสมบัติขั้นสูง
- วิธีการทำงานของ drescue
- บทสรุป
บันทึก: ฉันใช้การกระจาย Linux (Ubuntu 22.04) สำหรับคำแนะนำในคู่มือนี้ กระบวนการติดตั้งยูทิลิตี้ ddrescue อาจแตกต่างกัน แต่คำแนะนำจะเหมือนกันใน Linux ทุกรุ่น
กำลังติดตั้ง ddrescue
หากต้องการติดตั้ง ddrescue บน Linux โดยเฉพาะ อูบุนตู และรสชาติของมันหรือ อิงจากเดเบียน distros ใช้:
ซูโดะ ฉลาด ติดตั้ง gddrescue
หากต้องการติดตั้งบน เรห์ล , หมวกฟาง , และ CentOS ก่อนอื่นให้เปิดใช้งาน อบอุ่น (แพ็คเกจพิเศษสำหรับ Enterprise Linux)
ซูโดะ ติดตั้งยำ ปล่อยความอบอุ่น
คำสั่งข้างต้นใช้สำหรับเวอร์ชันที่ใหม่กว่าของการแจกจ่ายที่เกี่ยวข้อง
จากนั้นรันคำสั่งต่อไปนี้เพื่อติดตั้ง ddrescue:
ซูโดะ ติดตั้งยำ ตกลงสำหรับการแจกแจง Linux ที่ใช้ Arch เช่น อาร์ค-ลินุกซ์ และ มันจาโร ให้ใช้คำสั่งด้านล่างเพื่อติดตั้งยูทิลิตี้การกู้คืน ddrescue
ซูโดะ แพ็กแมน -ส ตกลง
เนื่องจากฉันใช้ Ubuntu 22.04 ฉันจะใช้ตัวจัดการแพ็คเกจ APT เพื่อติดตั้ง
การทำความเข้าใจพื้นฐาน
ก่อนที่จะใช้เครื่องมือ ddrescue เพื่อกู้คืนข้อมูล ฉันขอแนะนำให้ผู้ใช้ที่เพิ่งเริ่มกระบวนการกู้คืนเข้าใจหลักเกณฑ์การตั้งชื่อบางประการของ Linux
Linux รู้จักบล็อก (อุปกรณ์) เป็นไฟล์และวางไว้ใน /dev ไดเรกทอรี หากต้องการแสดงรายการไฟล์ในไดเร็กทอรี /dev ให้ใช้นามสกุล ls /dev สั่งการ.
ที่ ฮาร์ดไดรฟ์ (หน่วยเก็บข้อมูล) จะแสดงด้วย SD ตามด้วยตัวอักษร ในกรณีที่มีอุปกรณ์เก็บข้อมูลหลายตัว ไฟล์จะแสดงเป็น /dev/sd ก, /dev/sd ข และอื่น ๆ
หากอุปกรณ์จัดเก็บข้อมูลมี พาร์ติชัน จากนั้นจะแสดงด้วยตัวเลขพร้อมชื่อไฟล์ของไดรฟ์ที่เกี่ยวข้อง เช่น /dev/sda 1 , /dev/sda 2 และอื่นๆ
หากต้องการแสดงรายการบล็อกทั้งหมดและอุปกรณ์ที่เชื่อมต่อกับระบบ ให้ใช้บล็อกรายการ lsblk สั่งการ:
lsblk
คำสั่ง ddrescue สามารถกู้คืนทั้งบล็อก (ที่มี MBR และพาร์ติชัน) หรือพาร์ติชันได้เช่นกัน ในทางกลับกัน หากคุณต้องการกู้คืนเฉพาะไฟล์จากพาร์ติชันใดพาร์ติชันหนึ่ง จะเป็นการดีกว่าถ้ากู้คืนพาร์ติชันแทนที่จะกู้คืนทั้งบล็อก
ข้อควรพิจารณาที่สำคัญ
ก่อนที่จะใช้ยูทิลิตี้ ddrescue ควรพิจารณาประเด็นสำคัญบางประการก่อน:
- อย่าพยายามกู้คืนบล็อกที่เมาท์ บล็อกไม่ควรอยู่ในโหมดอ่านอย่างเดียว
- อย่าพยายามซ่อมแซมบล็อกที่มีข้อผิดพลาด I/O
- ระบบสามารถเปลี่ยนชื่ออุปกรณ์อินพุตและเอาต์พุตได้เมื่อรีบูต ตรวจสอบให้แน่ใจว่าชื่ออุปกรณ์ถูกต้องก่อนเริ่มกระบวนการคัดลอก
- หากคุณใช้บล็อกแยกต่างหากเป็นอุปกรณ์เอาท์พุต ข้อมูลใดๆ บนอุปกรณ์จะถูกเขียนทับ
การใช้ ddrescue
หลังจากติดตั้งยูทิลิตี ddrescue และทำความเข้าใจหลักการตั้งชื่อแล้ว ขั้นตอนต่อไปคือการระบุดิสก์ที่ล้มเหลวและกู้คืนดิสก์โดยใช้เครื่องมือ ddrescue
การกู้คืนบล็อกที่เสียหาย
ตัวอย่างแรกจะครอบคลุมกระบวนการกู้คืนบล็อกทั้งหมด ขั้นแรก แสดงรายการบล็อกโดยใช้ lsblk สั่งการ:
lsblk -โอ ชื่อ,ขนาด,FSTYPEที่ -โอ flag ใช้เพื่อระบุประเภทของข้อมูล (ฟิลด์) ที่คำสั่งควรส่งออก ฉันได้กล่าวถึง ชื่อ , ขนาด , และ FSTYPE หรือประเภทระบบไฟล์
ตอนนี้คุณสามารถระบุบล็อกเป้าหมาย พาร์ติชั่น และตำแหน่งที่จะบันทึกไฟล์อิมเมจที่ได้รับการช่วยเหลือแล้ว
สิ่งสำคัญอีกประการหนึ่งที่ควรทราบก็คือ บน Linux ชื่อบล็อกถูกกำหนดแบบไดนามิกเมื่อบูต และหลังจากรีบูต ชื่อของบล็อกอาจมีการเปลี่ยนแปลง ดังนั้นควรระมัดระวังในขณะที่จดชื่อบล็อกไว้
ตอนนี้ ให้ใช้ไวยากรณ์ต่อไปนี้เพื่อช่วยเหลือบล็อกเป็นไฟล์รูปภาพที่มีไฟล์บันทึกในไดเร็กทอรีราก
ซูโดะ ตกลง -d -rX / ผู้พัฒนา / [ ปิดกั้น ] [ เส้นทาง / ชื่อ ] .img [ logfile_name ] .บันทึกบันทึก: แทนที่ [ปิดกั้น] , [เส้นทาง/ชื่อ] ของไฟล์ภาพ และ [logfile_name] โดยมีชื่อที่ต้องการตามลำดับ
ในตัวอย่างนี้ ฉันกำลังกู้คืนไฟล์ /dev/sda ในไดเร็กทอรีรากด้วยชื่อไฟล์รูปภาพ การกู้คืน.img . ไฟล์บันทึกหรือที่เรียกว่าไฟล์แผนที่ถือเป็นสิ่งสำคัญหากคุณต้องการดำเนินการกู้คืนต่อเมื่อใดก็ได้
ซูโดะ ตกลง -d -r2 / ผู้พัฒนา / sda2 recovery.img recovery.logมีการใช้แฟล็กสำคัญสองรายการในคำสั่งด้านบน
ง | -ทางอ้อม | ใช้เพื่อบอกเครื่องมือให้เข้าถึงดิสก์โดยตรงโดยไม่สนใจแคชเคอร์เนล |
rX | –ลองอีกครั้งผ่าน | ใช้ในการบอกเครื่องมือให้ลองเซกเตอร์เสียอีกครั้ง X จำนวนครั้ง |
เมื่อดำเนินการคำสั่งข้างต้น คุณจะสังเกตเห็นไฟล์สองไฟล์ที่ปรากฏในเบราว์เซอร์ไฟล์พร้อมชื่อ การกู้คืน.img และ การกู้คืน.log .
ระยะเวลาในการฟื้นตัวขึ้นอยู่กับขนาดของบล็อกอินพุตและความเสียหาย หากคุณกำลังกู้คืนบล็อกขนาดใหญ่ ฉันขอแนะนำให้มีไฟล์บันทึก เนื่องจากอาจใช้เวลาหลายชั่วโมงหรือหลายวันในการดำเนินการให้เสร็จสิ้น
ผลลัพธ์ของคำสั่งดังกล่าวได้รับด้านล่าง:
ในภาพที่ส่งออกไป ไอพอส คือตำแหน่งอินพุตของไฟล์อินพุตจากตำแหน่งที่เริ่มการคัดลอกและ แผลพุพอง คือตำแหน่งเอาต์พุตของไฟล์เอาต์พุตที่กำลังเขียนข้อมูล
ที่ ไม่ได้พยายาม คือขนาดของบล็อกไม่ได้อยู่ระหว่างการพิจารณา ที่ ได้รับการช่วยเหลือ ระบุขนาดของบล็อกที่กู้คืนได้สำเร็จ ที่ ได้รับการช่วยเหลือแล้ว บ่งชี้ว่าการกู้คืนข้อมูลสำเร็จเป็นเปอร์เซ็นต์ เงื่อนไข, ไม่ตัดแต่ง , ไม่ใช่ของเสีย , เซกเตอร์เสีย , และ พื้นที่ที่ไม่ดี อธิบายตนเองได้ อย่างไรก็ตาม อ่านข้อผิดพลาด คำนี้บ่งชี้ถึงความพยายามในการอ่านที่ล้มเหลวเป็นตัวเลข
ที่ เวลาทำงาน แสดงเวลาที่เครื่องมือใช้เพื่อดำเนินการให้เสร็จสิ้น ในขณะที่ เวลาที่เหลือ คือเวลาที่เหลือในการดำเนินกระบวนการกู้คืนให้เสร็จสิ้น เอาต์พุตด้านบนแสดงเวลาที่เหลือเป็น 0 เนื่องจากกระบวนการเสร็จสิ้นแล้ว อ่านเอาต์พุตในภาพต่อไปนี้ของกระบวนการที่ยังไม่เสร็จ
มาดูกันว่าเราได้อะไรในไฟล์บันทึก หากต้องการเปิดไฟล์บันทึกที่สร้างขึ้น ให้ใช้ไฟล์ เป็นกลุ่ม recovery.log สั่งการ.
ที่ สถานะปัจจุบัน คือ + ซึ่งหมายความว่ากระบวนการเสร็จสิ้น ในขณะที่ current_pos คือตำแหน่งบนบล็อก
รายการสถานะปัจจุบันมีระบุไว้ในตารางต่อไปนี้:
? | กำลังคัดลอก |
* | ตัดแต่ง |
/ | เศษซาก |
– | กำลังลองอีกครั้ง |
เอฟ | กรอกบล็อกที่ระบุ |
ช | กำลังสร้างไฟล์บันทึก |
+ | กระบวนการนี้เสร็จสิ้นแล้ว |
ภายใต้สิ่งนี้ ไฟล์บันทึกจะมีตัวบ่งชี้สถานะของบล็อกที่ได้รับการช่วยเหลือก่อนหน้านี้ในรูปแบบของอักขระที่แสดงด้านล่าง:
? | บล็อกไม่ได้พยายาม |
* | บล็อกล้มเหลวที่ไม่ได้ตัดแต่ง |
/ | บล็อกล้มเหลวที่ไม่ถูกทิ้ง |
– | บล็อกเซกเตอร์เสียล้มเหลว |
+ | บล็อคเสร็จแล้ว |
การกู้คืนไฟล์รูปภาพเป็นบล็อกใหม่
เมื่อคุณเสร็จสิ้นกระบวนการกู้คืนและมีไฟล์รูปภาพแล้ว ตอนนี้คุณอาจต้องการให้ย้ายไปยังไดรฟ์ใหม่จากไดรฟ์ที่เสียหาย หากต้องการย้ายไฟล์รูปภาพไปยังบล็อกใหม่ ขั้นแรกให้เชื่อมต่อบล็อกนั้นกับระบบ จากนั้นระบุชื่อบล็อกโดยใช้ lsblk สั่งการ.
สมมติว่ามันเป็น /dev/sdb ให้ใช้คำสั่งต่อไปนี้เพื่อคัดลอกรูปภาพไปยังบล็อกใหม่
ซูโดะ ตกลง -ฉ การกู้คืน.img / ผู้พัฒนา / sdb logfile.logที่ -ฉ แฟล็กใช้เพื่อเขียนทับบล็อกใหม่หากมีข้อมูลใด ๆ โปรดทราบว่าชื่อของไฟล์บันทึกจะต้องแตกต่างเพื่อแยกออกจากไฟล์บันทึกที่เก็บไว้ก่อนหน้านี้
การดำเนินการข้างต้นสามารถทำได้โดยใช้ วว อีกหนึ่งคำสั่งอันทรงพลังที่ใช้ในการคัดลอกไฟล์
ซูโดะ วว ถ้า =recovery.img ของ = / ผู้พัฒนา / เอสดีบีก่อนที่จะทำการกู้คืน โปรดทราบว่าบล็อกใหม่จะต้องมีขนาดใหญ่พอที่จะเก็บบล็อกที่กู้คืนทั้งหมดไว้ได้ ตัวอย่างเช่น หากบล็อกการกู้คืนคือ 5GB บล็อกใหม่ควรมากกว่า 5GB
หากไฟล์อิมเมจที่กู้คืนแสดงข้อผิดพลาดจำนวนมาก ก็สามารถซ่อมแซมได้โดยใช้ fsck คำสั่งบน Linux ได้ในระดับหนึ่ง ในขณะที่ใช้ Windows คุณสามารถใช้ประโยชน์จาก ซีเอชเคดีสค์ หรือ เอสเอฟซี คำสั่งให้ทำสิ่งนี้ อย่างไรก็ตาม การกู้คืนจะขึ้นอยู่กับจำนวนข้อผิดพลาดที่ไฟล์เสียหายสร้างขึ้น
ขณะนี้กระบวนการกู้คืนและการฟื้นฟูเสร็จสิ้นแล้ว สิ่งสำคัญอีกประการหนึ่งที่ควรทราบก็คือ คุณสามารถกู้คืนบล็อกที่เสียหายได้โดยตรงบนบล็อกอื่น แทนที่จะสร้างไฟล์รูปภาพแล้วคัดลอกไปยังบล็อกใหม่ ในส่วนต่อจากนี้ ฉันกำลังพูดถึงกระบวนการนี้โดยละเอียด
การกู้คืนบล็อกไปยังบล็อกอื่น
หากต้องการกู้คืนบล็อกไปยังบล็อกใหม่โดยตรง ขั้นแรกให้เชื่อมต่อบล็อกกับระบบแล้วใช้อีกครั้ง lsblk คำสั่งระบุชื่อบล็อก ชื่อบล็อกที่ไม่ถูกต้องอาจทำให้กระบวนการทั้งหมดเลอะเทอะและคุณอาจสูญเสียข้อมูล
หลังจากระบุบล็อกต้นทางและบล็อกปลายทางแล้ว ให้ใช้คำสั่งต่อไปนี้เพื่อกู้คืนบล็อก:
ซูโดะ ตกลง -d -ฉ -r2 / ผู้พัฒนา / [ แหล่งที่มา ] / ผู้พัฒนา / [ ปลายทาง ] การสำรองข้อมูล.logสมมติว่า /dev/sdb เป็นบล็อกปลายทางจึงจะคัดลอก /dev/sda ไดเร็กทอรีไปยังการใช้บล็อกใหม่:
ซูโดะ ตกลง -d -ฉ -r2 / ผู้พัฒนา / สดา / ผู้พัฒนา / การสำรองข้อมูล SDB.logโปรดดูข้อควรพิจารณาที่สำคัญที่กล่าวถึงในส่วนก่อนหน้าอีกครั้งก่อนที่จะพยายามดำเนินการนี้
การกู้คืนข้อมูลเฉพาะจากไฟล์ภาพที่กู้คืน
ในหลายกรณี วัตถุประสงค์ของการกู้คืนข้อมูลคือการค้นหาไฟล์เฉพาะจากไดรฟ์ที่เสียหาย ในการเข้าถึงไฟล์เฉพาะ คุณต้องเมานต์ไฟล์รูปภาพ บน Linux ไฟล์ภาพที่กู้คืนสามารถสำรวจได้โดยใช้ไฟล์ เมานต์ สั่งการ.
ก่อนที่จะติดตั้งไฟล์รูปภาพ ให้สร้างโฟลเดอร์หรือไดเร็กทอรีที่คุณต้องการแยกเนื้อหาของไฟล์รูปภาพ
mkdir RecoveryMountจากนั้นเมานต์ไฟล์รูปภาพโดยใช้:
ซูโดะ เมานต์ -โอ วนลูป recovery.img ~ / RecoveryMountแฟล็ก -o ระบุตัวเลือก ในขณะที่ใช้ตัวเลือกลูปเพื่อถือว่าไฟล์รูปภาพเป็นอุปกรณ์บล็อก
ขณะนี้คุณสามารถเข้าถึงเนื้อหาของไฟล์รูปภาพได้ ดังที่แสดงในภาพหน้าจอต่อไปนี้
หากต้องการยกเลิกการต่อเชื่อมบล็อก ให้ใช้ จำนวน สั่งการ.
ซูโดะ จำนวน ~ / RecoveryMountคุณสมบัติขั้นสูง
หากต้องการเริ่มการกู้คืนจากจุดเฉพาะ ให้ใช้ -ฉัน ธงหรือ –ตำแหน่งอินพุต . โดยค่าเริ่มต้นควรเป็นไบต์ 0 ไบต์ นี่เป็นสิ่งสำคัญในการคัดลอกต่อจากจุดเฉพาะ เช่น หากคุณต้องการเริ่มกระบวนการคัดลอกจากจุด 10 GB ให้ใช้คำสั่งต่อไปนี้
ซูโดะ ตกลง -i10GiB / ผู้พัฒนา / sda imagefile.img logfile.logในการกำหนดขนาดสูงสุดของอุปกรณ์อินพุต ให้ทำดังนี้ -ส จะใช้ธง ที่ -ส หมายถึงขนาดและยังสามารถใช้เป็น -ขนาด เป็นไบต์ หากเครื่องมือไม่รู้จักขนาดของไฟล์อินพุต ให้ใช้ตัวเลือกนี้เพื่อระบุ
ซูโดะ ตกลง -s10GiB / ผู้พัฒนา / sda imagefile.img logfile.logที่ -ถาม ตัวเลือกนี้มีประโยชน์มาก เนื่องจากระบบจะแจ้งให้ยืนยันบล็อกอินพุตและเอาต์พุตก่อนเริ่มกระบวนการคัดลอก ตามที่กล่าวไว้ข้างต้น ระบบจะกำหนดชื่อให้กับบล็อกแบบไดนามิก และจะเปลี่ยนแปลงเมื่อรีบูต ดังนั้นในกรณีนี้ ตัวเลือกนี้จะมีประโยชน์
ซูโดะ ตกลง --ถาม / ผู้พัฒนา / sda imagefile.img logfile.logนอกจากนี้ ยังมีรายการตัวเลือกอื่นๆ ดังต่อไปนี้:
-ร | -ย้อนกลับ | เพื่อกลับทิศทางการคัดลอก |
-คิว | -ค่อนข้าง | เพื่อระงับข้อความเอาท์พุตทั้งหมด |
-ใน | –รายละเอียด | เพื่ออธิบายรายละเอียดข้อความที่ส่งออกทั้งหมด |
-พี | –จัดสรรล่วงหน้า | เพื่อจัดสรรพื้นที่เก็บข้อมูลล่วงหน้าสำหรับไฟล์เอาต์พุต |
-ป | –ข้อมูล-ตัวอย่าง | บรรทัดการแสดงผลของค่าเริ่มต้นการอ่านข้อมูลล่าสุดคือ 3 บรรทัด |
วิธีการทำงานของ drescue
ddrescue ใช้อัลกอริธึมการกู้คืนที่มีประสิทธิภาพซึ่งแบ่งออกเป็นสี่ขั้นตอน:
1. การทำสำเนา
2. การตัดแต่ง
3. การขูด
4. กำลังลองอีกครั้ง
การดำเนินการอัลกอริทึม ddrescue จะแสดงในภาพต่อไปนี้
บทสรุป
ที่ ตกลง เป็นเครื่องมือการกู้คืนที่มีประสิทธิภาพที่ใช้ในการกู้คืนข้อมูลจากไดรฟ์ที่เสียหายหรือล้มเหลวไปยังไดรฟ์อื่นโดยการคัดลอกข้อมูล สามารถติดตั้งได้อย่างง่ายดายบนการกระจาย Linux ใด ๆ ด้วยความช่วยเหลือของตัวจัดการแพ็คเกจเริ่มต้น โปรดสังเกตข้อควรพิจารณาที่สำคัญก่อนใช้เครื่องมือนี้ตามที่กล่าวถึงในคู่มือนี้ ขั้นตอนการคัดลอกข้อมูลนั้นง่ายดาย ถอนการเชื่อมต่อไดรฟ์และใช้คำสั่ง ddrescue พร้อมชื่อไดรฟ์ต้นทางและชื่อไดรฟ์ปลายทาง อย่าลืมใช้ไฟล์บันทึกเนื่องจากจะมีประโยชน์มากในการดำเนินกระบวนการกู้คืนต่อ