Mac'te silinen dosyaları komut satırıyla kurtarıldı


24

Çalıştırarak bir dosyayı yanlışlıkla sildim:

rm -rf ./Desktop/myScript.sh

rmKomut 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?


1
HFS + kullandığınızı varsayarak, HFS + undelete araçları aramak isteyeceksiniz. Apple SE sitesi muhtemelen daha fazlasını bilir.
derobert

1
Anekdot, ancak kayınpederim yanlışlıkla Mac OS X'teki büyük bir fotoğraf dizinini siler ve indirdikleri bir aracı kullanarak çoğunu kurtarmada başarılı oldu (bence pahasına maliyet, ancak bir veya iki dosya için deneme yaptığını düşünüyorum. , böylece işe yarayıp yaramadığını ve sizin durumunuzda bunun yeterli olacağını test edebilirsiniz). tartışmalar.apple.com
thread/…

Yanıtlar:


28

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) rmbasitç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 srmdosyayı unlinkkurtarılamaz duruma getirmeden önce üzerine yazan bir güvenli remove komutuna ( ) sahiptir . Bu unlinkterimi, bir kabuğun rmkomutuyla 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. ]

unlinkBir 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), rmeğ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 rmzaman tam olarak istediğiniz şeyi yapar. rm='rm -i'İşlemi gerçekleştirmeden önce sizden onay isteyen bir kabuk takma adı oluşturmak isteyebilirsiniz . -fAnahtarın kullanılması, rmgerekirse geçersiz kılar. Bir takma ad rm, globkaldırırsanız en yararlı olur rm *.log. Diğer bir deyişle, listedeki bir dosyayı atlama seçeneğiniz vardır.


"Açıklama" bölümünde aferin.
Tim

Mac OS "güvenli silme çöp kutusu" işlevi, modern dönen disklerdeki kuantum kuyularını gerçekten silmek için araştırılmış bir desen kullanır. Katı hal depolamada, dosyayla ilişkili depolama bloklarını "silinecek" sırasının başında depolama denetleyicisindeki sırasına koymak için "trim" işlevini kullanır. İçeriği gerçekten diskinizden çıkarmak istiyorsanız, bunları kullanın; ancak dönen bir diski temizlemenin uzun zaman aldığını unutmayın.
Wexxor

4

İç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"

1
Wondershare'i kullandım ve bazı kodları geri aldım. "Git clean -f" 'd
fionbio

2
2019 itibariyle blok cihaz tarama hilesi APFS şifrelemesi nedeniyle OSX'te ya yapmak imkansız ya da daha zor. Başarılı bir şekilde linux üzerinde bu şekilde veri var: P
primehunter326
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.