Tautan yang diberikan seseorang di komentar kemungkinan merupakan peluang terbaik Anda.
Peretasan debugf Linux:Membatalkan Penghapusan File
Tulisan itu meskipun terlihat sedikit mengintimidasi sebenarnya cukup mudah untuk diikuti. Secara umum langkah-langkahnya adalah sebagai berikut:
-
Gunakan debugfs untuk melihat log sistem file
$ debugfs -w /dev/mapper/wks01-root
-
Di prompt debugfs
debugfs: lsdel
-
Keluaran sampel
Inode Owner Mode Size Blocks Time deleted 23601299 0 120777 3 1/ 1 Tue Mar 13 16:17:30 2012 7536655 0 120777 3 1/ 1 Tue May 1 06:21:22 2012 2 deleted inodes found.
-
Jalankan perintah di debugfs
debugfs: logdump -i <7536655>
-
Tentukan file inode
... ... .... output truncated Fast_link_dest: bin Blocks: (0+1): 7235938 FS block 7536642 logged at sequence 38402086, journal block 26711 (inode block for inode 7536655): Inode: 7536655 Type: symlink Mode: 0777 Flags: 0x0 Generation: 3532221116 User: 0 Group: 0 Size: 3 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 0 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x4f9fc732 -- Tue May 1 06:21:22 2012 atime: 0x4f9fc730 -- Tue May 1 06:21:20 2012 mtime: 0x4f9fc72f -- Tue May 1 06:21:19 2012 dtime: 0x4f9fc732 -- Tue May 1 06:21:22 2012 Fast_link_dest: bin Blocks: (0+1): 7235938 No magic number at block 28053: end of journal.
-
Dengan info inode di atas, jalankan perintah berikut
# dd if=/dev/mapper/wks01-root of=recovered.file.001 bs=4096 count=1 skip=7235938 # file recovered.file.001 file: ASCII text, with very long lines
File telah dipulihkan ke recovered.file.001
.
Opsi lain
Jika hal di atas bukan untuk Anda, saya telah menggunakan alat seperti photorec
untuk memulihkan file di masa lalu, tetapi ini ditujukan hanya untuk file gambar. Saya telah menulis tentang metode ini secara ekstensif di blog saya dalam artikel berjudul:
Cara Memulihkan File jpeg dan mov yang Rusak dari Kartu SDD Kamera Digital di Fedora/CentOS/RHEL.
Dengan sedikit peluang, terkadang saya dapat memulihkan file yang terhapus dengan skrip ini atau solusi berikutnya dalam jawaban :
#!/bin/bash
if [[ ! $1 ]]; then
echo -e "Usage:\n\n\t$0 'file name'"
exit 1
fi
f=$(ls 2>/dev/null -l /proc/*/fd/* | fgrep "$1 (deleted" | awk '{print $9}')
if [[ $f ]]; then
echo "fd $f found..."
cp -v "$f" "$1"
else
echo >&2 "No fd found..."
exit 2
fi
Ada trik berguna lainnya:jika Anda mengetahui pola pada file yang dihapus, ketikkan alt +sys +resuo untuk reboot+remount dalam read-only, lalu dengan live-cd, gunakan grep
untuk mencari di hard-drive :
grep -a -C 500 'known pattern' /dev/sda | tee /tmp/recover
lalu edit /tmp/recover
untuk hanya menyimpan file Anda sebelumnya.
Hei, jika dengan filosofi unix semuanya adalah file, saatnya memanfaatkan ini, bukan?
Apa yang berhasil bagi saya diberikan oleh arch (hanya berlaku untuk file teks):
grep -a -C 200 -F 'Unique string in text file' /dev/sdXN
di mana /dev/sdXN
adalah partisi yang berisi file yang hilang (periksa dengan mount
jika tidak yakin).
Butuh beberapa saat, tetapi berhasil ketika saya tidak sengaja menghapus beberapa kode sumber yang belum saya lakukan!