วิธีการกู้คืนไฟล์ที่ถูกลบบน Linux ด้วย testdisk

เผยแพร่แล้ว: 2022-01-29
ภาพประกอบของหน้าต่างเทอร์มินัลบนคอมพิวเตอร์ Linux
Fatmawati Achmad Zaenuri/Shutterstock

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

rm: ย่อมาจาก Remorse?

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

ระบบไฟล์ Linux เริ่มต้น ext4 ใช้ inodes เพื่อเก็บข้อมูลเกี่ยวกับแต่ละไฟล์และตาราง inode เพื่อติดตาม inodes ไอโหนดประกอบด้วยข้อมูลเมตาเกี่ยวกับไฟล์ เช่น ชื่อไฟล์ ใครเป็นเจ้าของ สิทธิ์อนุญาตคืออะไร และอื่นๆ

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

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

โฆษณา

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

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

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

นี่คือที่มาของ testdisk ใช้งานง่ายและไม่ต้องการความรู้ระดับต่ำเกี่ยวกับระบบไฟล์โดยละเอียด ใช้งานอย่างไร ไปดูกันเลย!

ที่เกี่ยวข้อง: ทุกสิ่งที่คุณอยากรู้เกี่ยวกับ inodes บน Linux

กำลังติดตั้ง testdisk

ในการติดตั้ง testdisk บน Ubuntu ให้ใช้คำสั่งนี้:

 sudo apt-get ติดตั้ง testdisk 

ใน Fedora คุณต้องพิมพ์:

 sudo dnf ติดตั้ง testdisk 

บน Manjaro คุณต้องใช้ pacman :

 sudo pacman -Sy testdisk 

ใช้ testdisk

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

เราพิมพ์ข้อความต่อไปนี้เพื่อสร้างไดเร็กทอรีที่เรียกว่า "กู้คืน" สำหรับไฟล์ที่กู้คืนของเรา:

 mkdir คืนค่า 

โฆษณา

เราพิมพ์ข้อมูลต่อไปนี้เพื่อสลับไปยังไดเร็กทอรีใหม่และเริ่ม testdisk จากที่นั่น:

 กู้คืนซีดี / 

เราต้องใช้ sudo กับ testdisk ดังนั้นเราจึงพิมพ์ดังต่อไปนี้:

 sudo testdisk 

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

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

มันแสดงรายการฮาร์ดไดรฟ์ที่สามารถค้นหาได้ เช่นเดียวกับไฟล์ squashfs “/dev/loop” จะมีหนึ่งในสิ่งเหล่านี้สำหรับแต่ละแอปพลิเคชันที่คุณติดตั้งได้ snap ไฟล์เหล่านี้เป็นแบบอ่านอย่างเดียว ดังนั้นคุณไม่ควรลบสิ่งใดออกจากระบบไฟล์เหล่านี้

คอมพิวเตอร์ทดสอบนี้มีฮาร์ดไดรฟ์เพียงตัวเดียว ดังนั้นเราจึงใช้ลูกศรชี้ลงเพื่อเน้นตัวเลือก “/dev/sda” จากนั้นเราใช้ลูกศรขวาเพื่อเลือก "ดำเนินการต่อ" จากนั้นกด Enter

โฆษณา

testdisk ยังต้องรู้ประเภทพาร์ติชั่นด้วย มันแสดงเมนูตัวเลือกพร้อมกับประเภทของพาร์ติชั่นที่ตรวจพบอัตโนมัติที่ด้านล่าง

เว้นแต่คุณจะมีเหตุผลที่ดีที่จะไม่ทำ ให้เน้นประเภทของพาร์ติชันที่ตรวจพบโดยอัตโนมัติ แล้วกด Enter

ในเมนูฟังก์ชันที่ปรากฏขึ้น ให้เลือก "ขั้นสูง" แล้วกด Enter

เมนูการเลือกพาร์ติชั่นจะปรากฏขึ้น

ไฟล์ที่เรากำลังค้นหาอยู่ในพาร์ติชันระบบไฟล์ Linux เรามีพาร์ติชั่น Linux เพียงพาร์ติชั่นเดียวบนฮาร์ดไดร์ฟของเรา แต่คุณอาจมีมากกว่านั้น

เลือกพาร์ติชั่นที่ไฟล์ของคุณเปิด ใช้ปุ่มลูกศรซ้ายและขวาเพื่อเลือก "List" จากนั้นกด Enter เมนูการเลือกไฟล์จะปรากฏขึ้น

ใช้ลูกศรขึ้นและลงหรือปุ่ม PgUp และ PgDn เพื่อไปยังรายการไฟล์และไดเร็กทอรี กดลูกศรขวาหรือ Enter เพื่อเข้าสู่ไดเร็กทอรี และกดลูกศรซ้ายหรือ Esc เพื่อออกจากไดเร็กทอรี

โฆษณา

เรากำลังมองหาไฟล์ที่ dave เป็นเจ้าของ ไฟล์สำหรับบัญชีผู้ใช้ทั้งหมดอยู่ในไดเร็กทอรี "Home" ดังนั้นเราจึงไฮไลต์ไดเร็กทอรี "Home" จากนั้นเราสามารถกดลูกศรขวาหรือ Enter เพื่อเข้าสู่ไดเร็กทอรีนั้น

บัญชีผู้ใช้ทั้งหมดนั้นอยู่ในรายการสำหรับเรา เราไฮไลต์ dave จากนั้นกดลูกศรขวาหรือ Enter เพื่อเข้าสู่ไดเร็กทอรีนั้น

ตอนนี้เราสามารถดูไฟล์ที่เป็นของบัญชี dave ฟได้แล้ว รายการที่เป็นสีแดงถูกลบไปแล้ว เรานำทางผ่านไฟล์และไดเร็กทอรีต่างๆ จนกว่าเราจะพบไฟล์ที่เราต้องการกู้คืน

ในการกู้คืนไฟล์ เพียงแค่ไฮไลต์แล้วกด c (ตัวพิมพ์เล็ก)

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

หลังจากที่คุณทำเช่นนี้ คุณจะกลับไปที่หน้าจอการเลือกไฟล์ หากคุณต้องการกู้คืนไฟล์เพิ่มเติม ให้ทำขั้นตอนนี้ซ้ำ ไฮไลท์ไฟล์ที่ถูกลบ กด c (ตัวพิมพ์เล็ก) เพื่อคัดลอก จากนั้นกด C (ตัวพิมพ์ใหญ่) เพื่อกู้คืน

การทำงานกับไฟล์ที่กู้คืน

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

โฆษณา

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

คุณสามารถพิมพ์ข้อมูลต่อไปนี้เพื่อดูเนื้อหาของไดเร็กทอรี "กู้คืน":

 ลส

หากคุณขอให้ testdisk สร้างไฟล์บันทึก ไฟล์นั้นจะอยู่ในไดเรกทอรี "กู้คืน" เนื่องจากไฟล์ที่กู้คืนของเราอยู่ที่ "/home/dave" ไฟล์เหล่านั้นจึงถูกคัดลอกไปยังไดเร็กทอรี "กู้คืน" ของเรา ซึ่งซ้อนอยู่ในไดเร็กทอรีที่มีชื่อเดียวกัน

เราสามารถเปลี่ยนเป็นไดเร็กทอรี "dave" ที่คัดลอกโดยใช้ cd ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใส่เครื่องหมายทับ ( / ) นำหน้าบนเส้นทาง คุณต้องการเปลี่ยนเป็น "home" ไม่ใช่ระบบ "/home"

เราพิมพ์ดังต่อไปนี้:

 cd home/dave

ไฟล์ที่กู้คืนอยู่ในไดเร็กทอรีนั้น ดังนั้นเราจึงพิมพ์:

 ลส 

โฆษณา

มาดูไฟล์ที่กู้คืนกันอีกครั้งโดยใช้ตัวเลือก -l (รายการแบบยาว):

ลส -ล

เนื่องจากเราใช้ sudo เพื่อเปิด testdisk ไฟล์ที่กู้คืนจึงถูกกู้คืนด้วย “root” ในฐานะเจ้าของ เราสามารถเปลี่ยนเจ้าของกลับเป็น “dave” โดยใช้ chown :

 sudo chown dave.dave * 

เราพิมพ์ข้อความต่อไปนี้เพื่อให้แน่ใจว่ามีการกู้คืนความเป็นเจ้าของที่ถูกต้อง:

 ลส -ล 

testdisk: รหัสสำหรับบรรเทา

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

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

ที่เกี่ยวข้อง: แล็ปท็อป Linux ที่ดีที่สุดสำหรับนักพัฒนาและผู้ที่ชื่นชอบ