Undelete di Linux

Masalah

Anda tidak sengaja menghapus file atau direktori menggunakan perintah ‘rm’ atau menggunakan ‘mc’ di Linux? Jika menghapus dari GUI (misalnya dari file manager Konqueror di KDE atau dari Nautilus di GNOME) maka file yang dihapus masih ada di Trash (atau Recycle Bin, istilah di Windows). Namun jika menggunakan command line seperti rm/mc, file yang terhapus langsung ‘hilang’.

Solusi

File yang dihapus dengan rm atau mc tidak langsung hilang. OS hanya menandai bahwa blok filesystem yang semula dialokasikan untuk file tersebut jadi berstatus bebas. Tapi datanya tidak ditimpa atau di-nolkan. Jadi, selama blok yang berstatus bebas ini belum dipakai lagi untuk file lain (file baru), maka kemungkinan besar masih bisa direcover.

Langkah-langkah:

Kita contohkan partisi yang mengandung file yang didelete adalah /dev/sda1.

Pertama, hentikan aktivitas dan/atau kopi data. sebisa mungkin berhentilah melakukan aktivitas disk yang bersifat write. Berpindahlah ke mode single user (dengan perintah “init 1” sebagai root). Atau lebih baik lagi, unmountlah partisi yang bersangkutan (mis: “umount /dev/sda1”) atau setidaknya remountlah partisi dengan modus read-only (mis: “mount -o remount,ro /dev/sda1”). Atau jika tidak memungkinkan karena server harus terus berjalan, clonelah dulu data yang ada di partisi semula ke harddisk lain (bisa dilakukan sambil server berjalan, tapi sebaiknya di mode single user juga). Cara mengkloning dengan “dd” contohnya adalah:

# dd if=/dev/sda1 of=/dev/sdb1

di mana sda1 adalah partisi yang mengandung file yang ingin direcover, sdb1 adalah harddisk kosong untuk clone. Untuk melihat progress dd, kita dapat mengetikkan ini di konsole yang lain:

# kill -USR2 <PID>

di mana <PID> adalah PID dari proses dd tersebut.

Nanti selanjutnya setelah dd selesai, kita dapat mengambil harddisk sdb1 dan membiarkan server berjalan lagi, dan kita dapat merecover menggunakan sdb1.

Kedua, recovery. Lalu gunakan program “e2undel” atau “mc” lalu ketik “cd /#undel:sda1”. Catatan: saat ini mc di Debian tidak dikompile dengan support undelfs, jadi Anda bisa menggunakan “e2undel”. Atau jika mau, bisa juga mengkompile ulang program mc dengan opsi –with-ext2undel agar support (detailnya di luar cakupan artikel ini).

Jika program “e2undel” gagal menemukan file Anda, Anda bisa mencoba menggunakan program seperti “photorec” atau “foremost”. Program ini men-scan seluruh isi partisi lalu mencari header file-file dan jika Anda mensavenya.

Contoh cara menggunakan foremost untuk menemukan file-file JPEG. Kita save ke /mnt/sdb1 yang merupakan mountpoint dari /dev/sdb1 (kita harus mensave ke partisi yang berbeda, bukan partisi yang sama dengan partisi yang mengandung file yang ingin direcover):

# foremost -v -q -d -t jpeg -i /dev/sda1 -o /mnt/sdb1

Resita has written 702 articles