กู้คืนไฟล์ Linux ที่เผลอลบ: ก่อนมันจะหายไปตลอดกาล

กู้คืนไฟล์ Linux ที่เผลอลบ: ก่อนมันจะหายไปตลอดกาล

ใครที่ใช้งาน Linux คงเคยเจอประสบการณ์ “เผลอลบไฟล์” ด้วยคำสั่ง rm กันมาบ้าง และความรู้สึกนั้นมันแย่สุด ๆ ไปเลย เพราะโดยปกติแล้ว Linux ไม่ได้มีถังขยะ (Recycle Bin) เหมือนระบบปฏิบัติการอื่น ๆ ที่จะให้เรากู้คืนได้ง่าย ๆ ทว่ายังมีความหวัง หากรู้หลักการและลงมือทำอย่างถูกวิธี ความสำเร็จอยู่ไม่ไกลเกินเอื้อม แต่สิ่งสำคัญคือต้องลงมือทำอย่างรวดเร็วและระมัดระวังที่สุด เพราะทุกวินาทีที่ผ่านไปคือความเสี่ยงที่ข้อมูลจะหายไปตลอดกาล

ทำไมไฟล์ที่ลบไปแล้วถึงยังกู้ได้?

ไฟล์ในระบบปฏิบัติการ Linux ไม่ได้หายไปทันทีที่ถูกลบด้วยคำสั่ง rm ความจริงคือระบบแค่ “ยกเลิกการเชื่อมโยง” ระหว่างชื่อไฟล์และโครงสร้างไฟล์ที่เรียกว่า inode ออกไปเท่านั้น เปรียบเสมือนการดึงป้ายชื่อออกจากกล่อง แต่ตัวกล่องและสิ่งของภายในยังคงอยู่กับที่

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

ห้ามทำอะไรเด็ดขาด หลังจากเผลอลบไฟล์!

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

ประการแรก ห้ามรีบูตเครื่องเด็ดขาด การรีบูตอาจทำให้ระบบปฏิบัติการเขียนข้อมูลชั่วคราว (temporary files) หรือล็อกไฟล์ (log files) ลงบนพื้นที่ที่ไฟล์ของเราเคยอยู่

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

ประการที่สาม ห้ามติดตั้งเครื่องมือกู้คืนไฟล์ลงบนดิสก์เดียวกับไฟล์ที่ถูกลบ หากจำเป็นต้องติดตั้ง ควรติดตั้งลงบนดิสก์อื่น หรือใช้ระบบปฏิบัติการแบบ Live CD/USB เพื่อบูตขึ้นมาแล้วค่อยทำการกู้คืนจากภายนอก

สิ่งแรกที่ต้องทำทันที คืออะไร?

เมื่อเผลอลบไฟล์ไปแล้ว สิ่งแรกที่ต้องทำคือการ “ปลดการเชื่อมต่อ” (unmount) ไฟล์ซิสเต็มหรือพาร์ติชันที่ไฟล์นั้นอยู่ เพื่อป้องกันไม่ให้ระบบเขียนข้อมูลใหม่ลงไปบนพื้นที่นั้นอีก

ตัวอย่างเช่น หากไฟล์ของคุณอยู่ใน /dev/sdb1 คำสั่งที่ใช้คือ sudo umount /dev/sdb1 แต่ถ้าไฟล์ถูกลบใน พาร์ติชันรูท (root partition) ซึ่งเป็นพาร์ติชันหลักที่ระบบปฏิบัติการกำลังทำงานอยู่ การ unmount โดยตรงจะทำไม่ได้ ในกรณีนี้ ทางที่ดีที่สุดคือปิดเครื่องทันที แล้วบูตจาก Live CD/USB เพื่อทำการกู้คืนจากภายนอกแทน

เครื่องมือช่วยกู้ไฟล์ยอดนิยม

มีเครื่องมือหลายอย่างที่ช่วยในการกู้คืนไฟล์บน Linux เครื่องมือที่ได้รับความนิยมและมีประสิทธิภาพ ได้แก่

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

TestDisk และ PhotoRec: สองเครื่องมือนี้มักมาคู่กัน TestDisk ช่วยในการกู้คืนพาร์ติชันที่หายไปหรือเสียหาย ส่วน PhotoRec มีความสามารถในการกู้คืนไฟล์หลากหลายประเภท โดยเฉพาะไฟล์มัลติมีเดีย ไม่ว่าจะเป็นรูปภาพ วิดีโอ หรือเอกสาร จากพาร์ติชันที่เสียหาย หรือหลังจากถูกลบ

foremost และ scalpel: เป็นเครื่องมือที่ใช้เทคนิค file carving คือการค้นหาข้อมูลดิบของไฟล์บนดิสก์โดยดูจากโครงสร้างไฟล์ (header และ footer) โดยไม่สนใจว่าไฟล์นั้นเคยมีชื่อหรือ inode ผูกติดอยู่หรือไม่

ลองใช้ extundelete กู้ไฟล์กัน

มาดูวิธีใช้ extundelete แบบง่าย ๆ กัน ขั้นตอนแรกคือต้องติดตั้งโปรแกรมก่อน และอย่างที่บอกไป ห้ามติดตั้งบนพาร์ติชันที่ไฟล์ถูกลบ

  1. ติดตั้ง extundelete:
    สำหรับ Debian/Ubuntu: sudo apt install extundelete
    สำหรับ RHEL/CentOS: sudo yum install extundelete

  2. ปลดการเชื่อมต่อพาร์ติชัน: สมมติว่าไฟล์ถูกลบใน /dev/sdb1 คำสั่งคือ sudo umount /dev/sdb1

  3. เริ่มการกู้คืน:

    • ถ้าจำชื่อไฟล์และพาธได้เป๊ะ ๆ: sudo extundelete --restore-file /path/to/deleted/file /dev/sdb1
    • ถ้าจำได้แค่โฟลเดอร์: sudo extundelete --restore-directory /path/to/deleted/dir /dev/sdb1
    • ถ้าต้องการกู้คืนทุกอย่างเท่าที่ทำได้: sudo extundelete --restore-all /dev/sdb1

หลังจากกู้คืน ไฟล์ที่ได้จะถูกบันทึกไว้ในโฟลเดอร์ชื่อ RECOVERED_FILES/ ในไดเรกทอรีที่คุณรันคำสั่ง

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