กู้คืนข้อมูลบน Linux โดยใช้ ddrescue

Ku Khun Khxmul Bn Linux Doy Chi Ddrescue



ddrescue เป็นเครื่องมือที่ใช้ในการกู้คืนข้อมูลจากไฟล์หรืออุปกรณ์บล็อก เช่น ฮาร์ดไดรฟ์, SSD, ดิสก์ RAM, ซีดี, ดีวีดี และอุปกรณ์จัดเก็บข้อมูล USB มันจะคัดลอกข้อมูลจากบล็อกอุปกรณ์หนึ่งไปยังอีกอุปกรณ์หนึ่ง ทิ้งบล็อกข้อมูลที่เสียหายและย้ายเฉพาะบล็อกที่ดีเท่านั้น ddrescue เป็นเครื่องมือการกู้คืนที่ทรงพลังที่ทำงานอัตโนมัติโดยสมบูรณ์เนื่องจากไม่ต้องการการแทรกแซงใด ๆ ในระหว่างการดำเนินการกู้คืน นอกจากนี้ยังสามารถหยุดและดำเนินการต่อได้ตลอดเวลาด้วย ไฟล์แผนที่ ddrescue . คุณสมบัติที่สำคัญอื่น ๆ ของ ddrescue มีดังต่อไปนี้:
  • มันไม่ได้เขียนทับข้อมูลที่กู้คืน แต่เติมเต็มช่องว่างในกรณีของการกู้คืนซ้ำ อย่างไรก็ตาม สามารถตัดทอนได้หากเครื่องมือได้รับคำสั่งให้ทำอย่างชัดเจน
  • กู้คืนข้อมูลเป็นไฟล์เดียวจากหลายไฟล์หรือบล็อก
  • รองรับอินเทอร์เฟซอุปกรณ์หลายประเภท เช่น ไดรฟ์ SATA, ATA, SCSI, MFM, ฟล็อปปี้ดิสก์ และการ์ด SD

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

บันทึก: ฉันใช้การกระจาย 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 พร้อมชื่อไดรฟ์ต้นทางและชื่อไดรฟ์ปลายทาง อย่าลืมใช้ไฟล์บันทึกเนื่องจากจะมีประโยชน์มากในการดำเนินกระบวนการกู้คืนต่อ