Linuxde Silinen Dosyaları Geri Getirme
Sevgili Tahribat.Com müritleri veya mürit adayları bu dökümanımda size Linuxta silinen verilerinizi geri getirme yöntemini anlatacağım.
Bilgisayarımıza yani Hard Diskimize(HDD) çoğu zaman çok önemli dosyalarımızı teslim ediyoruz. Günlerce gece gündüz demeden hatta aylarca uğraşıp hazırladığımız çalışmalar sabit sürücümüzde önemsiz bytelar olarak saklanıp korunmaktadır.
Bilgileri kaybetmek ise kullanıcılarının korkulu rüyası oluyor..
Ama öncelikle bilgilerin nasıl olup da kurtulduğu hakkında bilgi vermekte yarar var: Bir dosyayı sildiğinizde üzeri sıfırla kaplanır. Bu başka bir dosya yazılırken bu alanın boşmuş gibi görülmesinin sağlar. O zaman buraya bir dosya yazılmadığı sürece siz veriyi kurtarabilirsiniz.
Bunu daha detaylı bir şekilde anlatmak gerekirse;
111 gibiyse
rapidhack.dosyam
gibi bir şekilde olan dosyanız silindiğinde aşağıdaki şekle dönüşür;
000 olur
rapidhack.dosyam
ve böylece bu dosya\adı başka bir bilginin yazılabilmesi için serbest bırakılmış olur.
Bu bilgilere dayanarak, size söyleyeceğim bir iki önerim var; sonra görmedim bilmiyordum demeyin müritler :)
Normal bir sistemde kayıt yapan servisler sürekli açık bulunurlar ve buda kısa aralıklarla Hard Diskinize(HDD) birşeyler yazıldığı anlamına gelir.
1) Yanlış bir işlem yaptığınızda olabildiğince hızlı bir şekilde init 1 seviyesine geçin.Seviye dediğim yani init 1 komutunu verin o ona yeter. :)
2) Veya diskinizin Read-Only olarak mount edilmesini sağlayın.
(mount -o remount,ro /dev/hdXX)
3) Eğer silinen dosya o an çalışan Harddiskinizden başka bir yerde ise, o sürücüye ya da Hard Diske kesinlik ile birşey yazmayın/yazdırmayın.Yani anlamadıysanız siz silinen dosyayı geri getirmek istiyorsanız o bu işe odaklanın yani başka bir işlem yapmayın!
Evet, gerekli uyarıları da yaptıktan sonra silinen dosyamızı ya da verimizi geri getirmek için yola koyulalım.
------------
Debugfs yöntemi
------------
Bu yöntemi mount EDİLMEMİŞ disklerde kullanın veya kullanacağınız diski öncelikle umount edin. Verdiğim örnek mount edilmiş ek bir sürücünün yani HDB nin örneğidir
# Hangi dizinde olduğumuza bir bakalım
$ pwd /mnt/hdb/
# Yanlışlıkla gerekli bir dosyamızı silelim
$ rm -f tbtrapor_2009_06_29.txt
# Aman Tanrım biz ne yaptık böyle allah belamızı vermesin
# Hemen diskimizi umount edelim
$ umount /mnt/hdb
# Eger yetkili değilseniz root olalım ilk önce ve sonra işleme devam edelim
$ su -
# debugfs ile diskimizi açalım
$ debugfs /dev/hdb
# Artık komut satırımızda debugfs: yazacaktır
# Neyse biz önce silinen dosyalarımızı bir listeyelim
$ debugfs: lsdel
# Burada birçok satır karşınıza çıkabilir.
# Önemli olan, sizin sildiğiniz dosya ile bilgileri uyuşanı bulmaktır
# Karşılaştırma için Boyut, Mod, Tarih gibi bilgileri kullanabilirsiniz
# İşte aradığım dosya
$ debugfs: lsdel
1 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 25794 515 100644 1050 2/ 2 Mon Jun 13 23:06:43 2009
# Bizim için gerekli olan INODE numarası olacak
# Aşağıdaki komuttaki <> işaretlerini aynen sizde yazın!
$ pwd /mnt/hdb/
# Yanlışlıkla gerekli bir dosyamızı silelim
$ rm -f tbtrapor_2009_06_29.txt
# Aman Tanrım biz ne yaptık böyle allah belamızı vermesin
# Hemen diskimizi umount edelim
$ umount /mnt/hdb
# Eger yetkili değilseniz root olalım ilk önce ve sonra işleme devam edelim
$ su -
# debugfs ile diskimizi açalım
$ debugfs /dev/hdb
# Artık komut satırımızda debugfs: yazacaktır
# Neyse biz önce silinen dosyalarımızı bir listeyelim
$ debugfs: lsdel
# Burada birçok satır karşınıza çıkabilir.
# Önemli olan, sizin sildiğiniz dosya ile bilgileri uyuşanı bulmaktır
# Karşılaştırma için Boyut, Mod, Tarih gibi bilgileri kullanabilirsiniz
# İşte aradığım dosya
$ debugfs: lsdel
1 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 25794 515 100644 1050 2/ 2 Mon Jun 13 23:06:43 2009
# Bizim için gerekli olan INODE numarası olacak
# Aşağıdaki komuttaki <> işaretlerini aynen sizde yazın!
$ debugfs: dump -p <25794> /tmp/tbt (burada yeni yerine siz tmp klasöründe hangi dosya olacaksa siz onu yazın)
# İşimiz bitti.Artık çıkalım.
$ debugfs: quit
# İşimiz bitti.Artık çıkalım.
$ debugfs: quit
Şimdi bir ohh çekelim :)
Dosyamız aynı kullanıcı hakları ile birlikte silme işleminin gerçekleştiği sabit sürücünün /tmp dizini altında tbt adıyla saklandı. Emin olmak için
Dosyamız aynı kullanıcı hakları ile birlikte silme işleminin gerçekleştiği sabit sürücünün /tmp dizini altında tbt adıyla saklandı. Emin olmak için
$ mount -t ext2 /dev/hdb /mnt/hdb
$ ls /mnt/hdb/tmp/tbt
ve göreceksiniz ki dosya orada bize bakıyor ::))
Her Hakkı Saklıdır!
Saygılarımla!
Tahribat.Com
Hit: 3326
Yazar: rapidhacker550