Biasanya ketika editor menyimpan file, mereka menghapus atau memotong ke 0, sehingga membebaskan ruang yang dialokasikan, dan kemudian menulis, yang mengalokasikan ruang baru. Ini menghasilkan filesystem yang meletakkan data di lokasi fisik yang sama sekali berbeda. Jadi ide Anda mungkin tidak berhasil.
Anda bisa mendapatkan lokasi fisik file menggunakan filefrag
atau hdparm --fibmap
, dan kemudian gunakan dd
untuk membaca lokasi fisik secara langsung. Saya telah menggambarkan proses ini dalam konteks yang berbeda di sini: /unix//a/85880/30851
Dalam kasus Anda, kemungkinan besar Anda membutuhkan pendekatan umum untuk menemukan data tekstual ... sesuatu seperti:
strings -n 12 -t d /dev/partition | grep -F 'text snippet'
strings
akan mencari data ASCII berturut-turut (juga mendukung beberapa pengkodean lainnya, tidak yakin tentang UTF-8. Jika itu kode atau bahasa Inggris Anda tidak akan membutuhkannya) dan juga akan mencetak offset di tempat ditemukannya.
text snippet
harus berupa sampel teks unik, persis yang Anda ingat berada di bagian file yang Anda cari [dalam satu baris]. (Jika Anda tidak mengetahuinya dengan tepat, Anda bisa mengatasinya dengan ekspresi reguler.)
-n 12
adalah panjang minimum yang strings
akan dicari. 12
harus menjadi panjang Anda text snippet
. Parameter ini bersifat opsional, jika disediakan mungkin akan membantu strings | grep
sedikit lebih cepat.
Akan memakan waktu lama untuk membaca seluruh partisi tetapi jika berhasil, Anda akan memiliki offset yang dapat Anda beri makan dd
untuk meraih area umum dan kemudian menghapus barang-barang yang bukan milik.
Saya tidak melakukan apa pun di direktori itu sejak itu
Jika direktori Anda tidak menjadi titik mount ... kebanyakan filesystem tidak benar-benar menyediakan ruang "per direktori" jadi ... setiap dan semua penulisan di seluruh filesystem mungkin menimpa bit yang Anda cari. Dalam situasi pemulihan data, Anda biasanya mengubah semuanya menjadi mode hanya baca.
strings
hanya akan menemukan beberapa bagian file kecuali Anda sangat beruntung.