GNU Unix/Linux OS Veri Kurtarma

Linux ve Unix tabanli isletim sistemlerini hep beraber tanıyıp öğreneceğiz.
Cevapla
Kullanıcı avatarı
trwe
Petabyte1
Petabyte1
Mesajlar: 5914
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Konum: Düzce/Akçakoca

GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen trwe » 31 Ara 2018, 21:33

Linuxda Silinmiş/Silinen Dosyaları Kurtarma

---------------------------------------------------------------------------------

Bilgisayarımıza çoğu zaman çok önemli dosyalarımızı teslim ediyoruz. Günler hatta aylarca uğraşıp hazırladığımız çalışmalar sabit sürücümüzde baytlar halinde saklanmaktadır.

Bilgileri kaybetmek ise günümüz kullanıcılarının çoğu zaman başını ağrıtan bir terim olmaya başlıyor. Burada insan hatasıyla silinen dosyaların iki yöntem ile kurtarma methodlarını anlatacağız.

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 algılanmasını sağlar. O zaman buraya bir dosya yazılmadığı sürece siz veriyi kurtarabilirsiniz.

Bunu daha gorsel bir sekilde anlatmak gerekirse;

Kod: Tümünü seç

1111111111111
deneme.dosyam
gibi bir şekilde olan dosyanız silindiğinde aşağıdaki şekle dönüşür;

Kod: Tümünü seç

0000000000000
deneme.dosyam
ve böylece bu alan başka bir bilginin yazılabilmesi için serbest bırakılmış olur.

Bu bilgilere dayanarak, size verebileceğimiz bir iki öneri var;

Normal bir sistemde kayıt yapan servisler sürekli açık bulunurlar ve buda belirli (çoğunlukla kısa) aralıklarla diskinize 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. (init 1 komutunu vermeniz yeterli olacaktır)

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 Harddisk'inizden başka bir yerde ise, o sürücüye kesinlik ile birşey yazmayın/yazdırmayın.

Evet, gerekli uyarıları da yaptıktan sonra artık verilerimizi kurtarma yolundan bahsedebiliriz

----------------------
|Debugfs Yöntemi |
---------------------


Bu yöntemi mount EDİLMEMİŞ disklerde kullanın veya kullanacağınız diski öncelikle umount edin. Aşağıda verdiğim örnek mount edilmiş ek bir sabit sürücü (hdb) içinden dosya kurtarılması ile ilgilidir;

# Hangi dizinde olduğumuza bir bakalım

Kod: Tümünü seç

$ pwd /mnt/hda1/
# Yanlışlıkla gerekli bir dosyamızı silelim

Kod: Tümünü seç

$ rm -f rapor_2019_06_03.txt
# Hemen diskimizi umount edelim

Kod: Tümünü seç

$ umount /mnt/hda1
# Eger değilseniz root olalım ilk önce ve sonra işleme devam edelim

Kod: Tümünü seç

$ su -
# debugfs ile diskimizi açalım

Kod: Tümünü seç

$ debugfs /dev/hda1
# Artık komut satırımızda debugfs: yazacaktır
# Neyse biz önce silinen dosyalarımızı bir listeyelim

Kod: Tümünü seç

$ 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

Kod: Tümünü seç

$ debugfs: lsdel

Kod: Tümünü seç

1 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 25794 515 100644 1050 2/ 2 Mon Jan 13 20:06:43 2019
# Bizim için gerekli olan INODE numarası olacak
# Aşağıdaki komuttaki <> işaretlerini atlamamınızı öneririz

Kod: Tümünü seç

$ debugfs: dump -p <25794> /tmp/yeni
# İşimiz bitti. Artık çıkalım

Kod: Tümünü seç

$ debugfs: quit
Evet bitti. Derin bir soluk alabilirsiniz. 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 yeni adıyla saklandı. Emin olmak icin

Kod: Tümünü seç

$ mount -t ext2 /dev/hda1 /mnt/hda1

Kod: Tümünü seç

$ ls /mnt/hda1/tmp/yeni
ve göreceksinizki dosya orda....

-----------------
|Lsof Yöntemi |
-----------------


lsof biraz daha farklı bir mantıktır. Size yine örnekle anlatırsak daha kolay anlaşılır sanırım.

Diyelim özlediginiz bir arkadaşınız size xxxx.avi şeklinde bir dosya gönderdi. Özlemle vede mutlulukla bu filmi SEYREDIYORSUNUZ!. Bu ara komut satırına gectiniz ve yine olan oldu. Yanlışlıkla bu dosyayı sildiniz.

Burada seyretmek kelimesini büyük harfler ile yazmamın sebebi, hala programın bu dosya ile bir işlem yapıyor olması. İşte böyle bir durumda bu dosyaları proc dizininden kurtarabiliriz.

Lsof' u kullanmamızın sebebi ise bu programın açık olan dosyaları, yani bir program tarafından işleme tabii tutulan dosyaları listemelesidir. Birçok son Linux dağıtımları, artık bu programı öntanımlı olarak barındırıyorlar.

Artık uygulamaya geçebiliriz sanırım:

# Önce filmi izlemeye başlayalım

Kod: Tümünü seç

$ mplayer arkadasim_ist.avi
# Yine dikkatinizi çekerim, hala film açıkken devam ediyoruz!
# Ve yine facia, yanlış bir komutla dosyayı silelim

Kod: Tümünü seç

$ rm -f eski_filmler *.avi
# aman tanrim ^ bu boşluk da neyin nesi?

# Panige kapılmayalım ve devam edelim
# Bir bakalım mplayer programının açtığ .avi dosyalarına

Kod: Tümünü seç

$ lsof -c mplayer | grep avi mplayer

Kod: Tümünü seç

10153 bri 10r REG 3,7 2545962 26708 /film/arkadasim_ist.avi (deleted)
# Here it's.(=Yani bulduk türkçesi )
# Hemen tutun kaçırmayın.. Kopyalayalım dosyamızı

Kod: Tümünü seç

$ cp /proc/10153/fd/10 /tmp/arkadasim_ist.avi
Evet artık dosyamıza /tmp/arkadasim_ist.avi adıyla erişebiliriz.
Yeniden merhaba diyebilirsiniz arkadasiniza

Hemen biraz bilgi verelim: /proc dizininin yapısı diğer dizinlere benzemez(/usr, /home gibi...) Buradaki bilgileri direk olarak Linux çekirdeği sayesinde görürsünüz.

Mesela;

Kod: Tümünü seç

$ ls -F /proc/10153/fd

Kod: Tümünü seç

0 1 10 12 2 3 4 5 6 7 8 9

Kod: Tümünü seç

$ ls -l /proc/10153/fd/10

Kod: Tümünü seç

lr-x------ 1 armish lapis Jan 01 10:39 10 -> /tmp/arkadasim_ist.avi(deleted)
Yani anlıyacağınız, buradaki dosyalar sizin asıl dosyanıza bağlı haldedir. Asıl unutmamanız gereken önemli ayrıntı, bu işlemler program hala açık ise geçerlidir. Program dosyayı kullandığı sürece, dosyayı kurtarabilirsiniz. Program kapatıldığı anda süreçde bitmiş olacağı için dosyaya ulaşmakta imkansız olacaktır.

TRWE_2012
Alaydan Yetişme PC Kullanıcısı
TRWE_2016
FEDAKARLIK OLMADAN ZAFER OLMAZ....!
-----------------------------
LINUXMASTER 2018
ZAFER'E GİDEN YOL,FEDAKARLIKTAN GEÇER...!
-----------------------------



shampuan
Megabyte1
Megabyte1
Mesajlar: 966
Kayıt: 13 Tem 2018, 17:11

Re: GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen shampuan » 01 Oca 2019, 12:38

@trwe,
Anlatımda ciddi yanlışlıklar var.

Örnek olarak 11111111'den oluşan verilerimiz silindiği zaman 00000000 olmuyor.
Bu durumu izah edebilmek ve tam anlayabilmek için "MFT - Master File Table" kavramını doğru anlamamız gerekir.

Şu videoyu izleyiniz ve verilerin HDD'ye nasıl yazılıp silindiğini anlayınız:
https://www.youtube.com/watch?v=



Kullanıcı avatarı
trwe
Petabyte1
Petabyte1
Mesajlar: 5914
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Konum: Düzce/Akçakoca

Re: GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen trwe » 01 Oca 2019, 14:31

Anlatımda bir yanlışlık yok Seron.MFT kavramı Windows tarafında önemlidir.Linux tarafında bu kavram sadece basit bir dosyayıdır.Linux da önemli olan ext dosya sisteminde verinin indio yöntemi baytlarının sıfırlanarak saklama/yedekleme yöntemidir.Bundan dolayı yukarıdaki temsili örneği verdim.
TRWE_2016
FEDAKARLIK OLMADAN ZAFER OLMAZ....!
-----------------------------
LINUXMASTER 2018
ZAFER'E GİDEN YOL,FEDAKARLIKTAN GEÇER...!
-----------------------------

shampuan
Megabyte1
Megabyte1
Mesajlar: 966
Kayıt: 13 Tem 2018, 17:11

Re: GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen shampuan » 01 Oca 2019, 14:36

Ben emin olamadım.

Linux tarafında harddiske 4GB boyutunda herhangi bir dosya kopyala. Kopyalama boyunca geçen süreyi not al.
Aynı dosyayı ister çöpe atarak, ister şift del yaparak sil. Silme boyunca geçen süreyi not al.
Süreler birbirine eşit mi, değil mi?
Eşitse neden eşit, değilse neden değil?
Cevaba göre tartışalım.

Kullanıcı avatarı
trwe
Petabyte1
Petabyte1
Mesajlar: 5914
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Konum: Düzce/Akçakoca

Re: GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen trwe » 01 Oca 2019, 16:18

Bir diskin Windows ve Linux sistemlerinde okuma/yazma hızları az da olsa küçük farklılıklar gösterebilir.4GB'lık bir verinin kopyalanması(okuma+yazma ) , silinmesi( yazma+okuma) tabii süreleri farklıdır.Çünkü yazma+ okuma > okuma+yazma olayından büyüktür.(süre) birde bunun içine sistemin 1,2,4,8,16 çekirdekli işlemci desteğini sokarsan işin içinden çıkamazsın.Yani motoru(beynini) yakarsın Seron...Ha benim için normal bir durum.Çünkü ben motoru 10 sene önce yaktım.(düşüne düşüne karşı tarafa atlıyorsun,metafizik aleme,halk arasında buna tırlatma yada kafayı yemd deniyor)
TRWE_2016
FEDAKARLIK OLMADAN ZAFER OLMAZ....!
-----------------------------
LINUXMASTER 2018
ZAFER'E GİDEN YOL,FEDAKARLIKTAN GEÇER...!
-----------------------------

shampuan
Megabyte1
Megabyte1
Mesajlar: 966
Kayıt: 13 Tem 2018, 17:11

Re: GNU Unix/Linux OS Veri Kurtarma

Mesaj gönderen shampuan » 01 Oca 2019, 19:21

Şimdi bak. Ben bir konuya dikkat çekmek istiyorum.

Linux için ve aynı makine için konuşuyoruz.

Bir veriyi bilgisayara alıyoruz: 4GB veri > 30 saniyede koplayandı bitti.
Bu veriyi SİL dersen, verinin silinmesi 1 ya da ben yanıldım 2 saniyede biter.

Halbuki senin bahsetmiş olduğun, "silinirken tim bitlerin üzerine sıfır yazdırma" olayı gerçek olsaydı, Silme işleminin de 30 saniye sürmesi gerekirdi. Zira bahsetmiş olduğun sıfır yazdırma olayı da bir nevi "veri yazdırma" işidir. Oysa öyle olmuyor; silme işlemi, dosyayı oluşturma işleminden çoook kısa sürüyor. Demek ki o verinin üzerine veri (sıfır ya da başka birşey) yazılmıyor. Sadece MFT verisine "diskin burası boştur" ibaresi konuyor.

İşte bu nedenle, anlatımın ilk başlarında yanlışlık var.

Bahsetmiş olduğun sıfır geçerek silme işlemi, güvenli silme tekniğinde "british HMG method - İngiliz HMG IS5" olarak bilinir. Verinin üzerine bir kez sıfır geçme yöntemidir ve bu yöntem, sen bir dosyayı bilgisayarından NORMAL SİLME yaparken uygulanmaz.

bakınız: güvenli silme metotları:
https://eraser.heidi.ie/appendix-a-erasure-methods/

Gerek windowsta, gerek MACda ve gerekse Linux dağıtımlarında aynı kural geçerli. Değilse 50GBlik veriyi silmek için sabaha kadar beklerdik.

Bir veriyi yanlışlıkla sildiğimizde programlarla kolayca kurtarılmasının nedeni, üzerine veri yazdırılmamış olmasındandır. Şayet üzerine sıfır dahi yazdırmış olsaydık, o verinin kurtarılması imkansız denecek kadar zorlaşacak, programlarla mümkün olmayacak, büyük veri kurtarma firmaları tarafından yıllarca uğraşmak zorunda kalınacaktı.

İşte bunu demek istiyorum.

Cevapla