it-swarm-tr.com

Rm komutu verildiğinde dosyalar nereye gider?

Son zamanlarda yanlışlıkla bir dizi dosya üzerinde rm yaptım ve tam olarak bu dosyaların nerede bittiğini düşündürdü?

Yani bir GUI ile çalışırken silinen dosyalar Çöp Kutusuna gider. rm için eşdeğerdir ve rm komutunu geri almanın bir yolu var mı?

108
boehj

Hiçbir yerde, kayboldu. Daha spesifik olarak, dosyanın bağlantısı kaldırılır. Veriler hala diskte oturuyor, ancak bağlantısı kaldırıldı. Eskiden verileri almak mümkün, ancak bugünlerde meta veriler temizleniyor ve hiçbir şey kurtarılamıyor.

rm için Çöp Kutusu yoktur ve olmamalıdır. Bir Çöp Kutusuna ihtiyacınız varsa, daha üst düzey bir arayüz kullanmalısınız. Ubuntu'da trash-cli İçinde bir komut satırı yardımcı programı vardır, ancak çoğu zaman Nautilus veya Dolphin gibi GUI dosya yöneticileri standart bir Çöp kutusu sağlamak için kullanılır. Çöp kutusu standarttır. Dolphin'de çöpe atılan dosyalar Nautilus Çöp Kutusunda görülebilir.

Dosyalar çöp kutusu içine alındığında genellikle ~/.local/share/Trash/files/ Gibi bir yere taşınır. UNIX/Linux üzerindeki rm komutu, DOS/Windows üzerindeki del ile karşılaştırılabilir, bu da dosyaları siler ve not Geri Dönüşüm Kutusu'na taşır. Fark edilmesi gereken başka bir şey, bir dosyayı sabit disk sürücünüzden USB diskinize benzer dosya sistemleri arasında taşımanın gerçekten 1) dosya verilerinin bir kopyası ve ardından 2) orijinal dosyanın bağlantısını kaldırmasıdır. Çöp Kutunuzun bu ekstra kopyalarla doldurulmasını istemezsiniz.

126
penguin359

Ext3/ext4 için extundelete veya ext3grep gibi araçları kullanarak dosyaları kurtarmayı deneyebilir, hatta düşük seviyeli yapılarla karışıklık gidin - manuel olarak (kalp zayıflığı için değil); birçok dosya sistemi için, henüz üzerine yazılmayan blokları belirli kalıplara göre aramayı deneyebilirsiniz (örn. magicrescue diğer şeylerin yanı sıra JPEG başlıklarını da arayabilir). Bunların dosyaları geride bırakılan meta verilerden kurtarmak için sezgisel tarama kullandığını unutmayın, bu nedenle tam kurtarma garanti edilmez - daha çok son şans bahsi daha fazladır (bunlar, bazı dosya izlerinin günlükte kalmasını gerektirir ve bloklar henüz üzerine yazılmadı).

Bu nedenle, tüm niyet ve amaçlar için, rm ile kaldırılan dosyalar gitti - bu araçların sunduğu gibi büyücülük deneyebilirsiniz , ancak don buna bağlı değil: bunlar her şey başarısız olduğunda denenecek araçlardır. En son yedeklerinizi daha iyi kazın (yedeklemeler yapıyorsunuz, değil mi? Peki, yaşa ve öğren ...).

rm 'ın etkilerini geri alma ile ilgili:

Çoğu dosya sisteminin yalnızca verilere olan referansı kaldırdığı ve blokların ücretsiz olduğunu belirttiği göz önüne alındığında, veri okumalarınızı doğrudan cihazdan bulmaya çalışabilirsiniz. Biraz şansla dosyalarınızı içeren bloklar başka bir şey için talep edilmedi.

Bu, aramak için oldukça benzersiz bir şeye sahip olduğunuzu varsayar, sistemde root var ve birden fazla dosya sistemi bloğunu (muhtemelen 4k) kapsayan her şeyi bir araya getirmeyi tahmin ediyorum. dosya sistemi, dosyaları bitişik bloklara koymayı başaramadı.

Dosya sisteminin açık olduğu aygıtta dizeleri çalıştırarak ve grep kullanarak büyük bir içeriğe sahip dosyalardan bir şeyler arayan düz metin dosyalarının içeriğini başarıyla kurtardım (-C). (Ve bu olaydan kısa bir süre sonra şirket, yedeklemeleri uygulamak için bazı kaynaklar harcamaya karar verdi)

8

rm komutunu kullanarak bir dosyayı sildiğinizde, dosyanın verileri hiçbir zaman silinmez. Başka bir deyişle, dosya sistemindeki veri içeren bloklar hala oradadır.

rm komutunu çalıştırdığınızda, sistem o dosyaya ait inode'u kullanılmamış olarak ve o dosyanın veri bloklarını da kullanılmamış olarak işaretler (silinmez). Ancak ext3 bir dosya silindiğinde inode içindeki alanların çoğunu sıfırlar.

Kullanılmayan bu normal işaretleme hız için yapılır ... Aksi takdirde silmek için biraz daha zaman alır. Bu nedenle, büyük dosyaların bile daha hızlı silinmesinin dikkatini çekmiş olabilirsiniz (bu veri bloklarının üzerine yazılmazsa verileri kurtarabilirsiniz).

Daha Fazla Bilgi: İnode Yapısı , Dosya silme nasıl çalışır

6
sarath

Unix tarzı dosya sistemlerinde (Linux dahil), dosyalar gerçekten herhangi bir yerde "yerinde" değildir. Bunun yerine, sistem büyük bir veri bloğuna karşılık gelen parçalara işaret etmek için hardlink kullanır. Böylece bir dosya oluşturduğunuzda, ilk sabit bağlantısını da oluşturursunuz: aslında dosyayı "kaydettiğiniz" yerde bulunur. Daha fazla hardlink yaparsanız, sistemin bildiği kadarıyla, dosya aslında birkaç yerde aynı anda bulunur.

Bir dosyayı "sildiğinizde", normalde yalnızca belirttiğiniz yerde bulunan sabit bağlantıyı silmiş olursunuz. Bu nedenle dosyaları silmek için yapılan sistem çağrısına unlink() denir. Sistem, sabit bağlantı kalmayıncaya kadar dosyayı gerçekten silmez. Fakat bu son bağlantı koptuktan sonra veriler de yok olur.

Peki, sildiğiniz dosyalar nereye gidiyor? Hala sabit bağlantılar varsa, dosyalar silmediğiniz sabit bağlantıların olduğu yerdir. Hiçbir sabit bağlantı kalmazsa dosyalar kaybolur.

3
The Spooniest

Dosya yakın zamanda kaldırıldıysa ~/.snapshot'a da bakın.

0
Andy