Çalıştırarak bir dosyayı yanlışlıkla sildim:
rm -rf ./Desktop/myScript.sh
rm
Komut geçici olarak kaldırıldığı için dosyayı kurtarmanın mümkün olduğunu düşünüyorum . Mac OSX'te silinen dosyayı nasıl kurtarabilirim?
Çalıştırarak bir dosyayı yanlışlıkla sildim:
rm -rf ./Desktop/myScript.sh
rm
Komut geçici olarak kaldırıldığı için dosyayı kurtarmanın mümkün olduğunu düşünüyorum . Mac OSX'te silinen dosyayı nasıl kurtarabilirim?
Yanıtlar:
MacOS bir Unix işletim sistemidir ve rm
"güle güle" anlamına gelir. GUI arayüzü bir dosyayı çöp kutusuna taşımanıza olanak tanır (daha sonra kurtarabilirsiniz) ancak yaptığınız şey bu değildir. Bir yedeğiniz varsa (örn. Time Machine çalışıyorsa), o zaman kaydedilir.
açıklama
Kesin konuşursak (@ire_and_curses'ın işaret ettiği gibi) rm
basitçe , kullanılan disk bloklarını dokunmadan bırakırken dosyanın dizin girişini siler . Dosyanın bulunduğu dosya sistemini sorgulayabiliyorsanız, bu blok içeriğini yeniden keşfetmeye çalışabileceğiniz gelişmiş yöntemler vardır. Kaybı gidermek için satın alınabilecek bazı kurtarma araçları da vardır. Asıl mesele, dosyanızın temsil ettiği disk bloklarının hiçbirini tekrar kullanmamasıdır.
MacOS ayrıca, bir srm
dosyayı unlink
kurtarılamaz duruma getirmeden önce üzerine yazan bir güvenli remove komutuna ( ) sahiptir . Bu unlink
terimi, bir kabuğun rm
komutuyla ilişkilendirilen temel sistem çağrısı olduğundan kullanıyorum . Bu, aşağıda tartışmanın bir sonraki kısmı için aşama hazırlar.
Kenar notu
[Bir defalarca bir diske fazla yazsanız bile, daha önce bir düzine veya daha fazla defa yazılmış olanları okumanın yolları olduğunu eklemek için acele etmem gerekir. Bir diski bertaraf etmek için uygun şekilde sterilize etmek gerçekten bir asit banyosu, büyük bir çekiç ve öğütücü gerektirir. ]
unlink
Bir dosyanın inşası, dosyanın inode link-sayımını azaltır. Bu değer sıfıra ulaşırsa, dosya dosya dizininden silinir ve disk blokları yeniden kullanım için serbest bırakılır. Bu, yalnızca hiçbir işlem dosyayı açmamışsa gerçekleşir. Bir disk sisteminin basit bir şekilde disk bloklarının toplanmasıyla (bunun gibi bir şeyle du
) hesaba katılamayan çok büyük miktarda alan kullandığını bulmak yöneticiler için kafa karıştırıcıdır . Çoğu zaman nedeni, açık bir dosyanın kaldırılmış olmasıdır, böylece artık dizinde gösterilmez. Bunun nedeni, disk bloklarının dosyayı kullanan son işlem sona erene kadar kullanılmadığıdır.
Bir dosyayı açmak ve hemen kullanmak unlink
, güvenli, geçici dosyalar oluşturmak için yaygın bir uygulamadır. Gibi araçlar lsof
, aksi halde görünmeyen dosyaları, bağlantı sayısı sıfır (NLINK) sıfır olan dosyaları ararsanız ortaya çıkarabilir.
Unix ve Linux'ta (MacOS markalı bir Unix'dir), rm
eğer mümkünse meraklı olmadan "yap-yap" un Unix felsefesini izler. Diğer bir deyişle, bir dosyayı kaldırma izniniz varsa (yani, dizininiz yazılmasına izin verir), o rm
zaman tam olarak istediğiniz şeyi yapar. rm='rm -i'
İşlemi gerçekleştirmeden önce sizden onay isteyen bir kabuk takma adı oluşturmak isteyebilirsiniz . -f
Anahtarın kullanılması, rm
gerekirse geçersiz kılar. Bir takma ad rm
, glob
kaldırırsanız en yararlı olur rm *.log
. Diğer bir deyişle, listedeki bir dosyayı atlama seçeneğiniz vardır.
İçeriğinize bağlı olarak, ancak bunu yapmak için farklı 3. taraf yazılımları kullanabilirsiniz, örneğin:
ve daha fazlası.
App Store'da 'data recovery' yazarak daha fazla uygulama bulabilirsiniz.
Daha gelişmiş bir yol, OSX'inizi kurtarma modunda önyüklemektir (veya yapabiliyorsanız bölümünüzü kaldırın) ve el ile arayın (betiğinizden belirli bir metni hatırlıyorsanız).
Bazı örnek:
diskutil list
sudo cat /dev/disk0s2 | strings | grep -C20 "my_stuff"