Konuyu Açan
#1
find ile boş dosya ve dizin tespiti
Giriş ve neden önemli
Bir sunucu veya geliştirme makinesinde, disk alanını etkileyen veya gereksiz dosyaların birikmesini önlemek için boş dosya ve dizinleri tespit etmek sıkça kullanılan bir ihtiyaçtır. Boş dosyalar çoğu zaman log dosyalarının yanlışlıkla oluşturduğu, dolan oluşmuş kısa kayıtlar ya da eski proje dosyaları olabilir. Boş dizinler ise güvenlik ve bakım açısından gereksiz yer kaplar; çoğu durumda silinmeleri güvenli değildir ancak doğru şekilde belirlenebilirler. Bu yüzden find komutu ile hedeflenen koşulları net biçimde ifade etmek, hem hatayı önler hem de süreçleri otomatikleştirmek adına değerlidir.
Boş dosyaları bulmak
Boş dosyaları ararken iki tip durum olabilir: gerçekten 0 byte olanlar ve sadece içeriği boş olanlar (yedekler, gizli meta dosyaları vb.). Temel yaklaşım şu şekildedir:
İstersen belirli bir süreye ait olmayan dosyaları da daraltabilirsin; örneğin sadece son 30 gün içinde değiştirilmemiş dosyalar için:
Boş dizinleri bulmak
Boş dizinler için de benzer bir yaklaşım uygulanır:
Bu komut, içinde hiçbir dosya veya alt dizin bulunmayan dizinleri getirir. Büyük dosya ağaçlarında bazı dizinler ısrarla boş değildir ama kullanıcıların görmesi gerekenler için faydalıdır. İkisini bir arada görmek istersen şu şekilde kullanabilirsin:
Sonuçları işleştirme ve güvenlik
Çıktıyı doğrudan silmek riskli olabilir; çoğu durumda önce doğrulama veya bir rapor üretmek daha güvenli. Örneğin:
veya temizlemek yerine listeleyip onay için kaydet:
Dizinleri temizlerken de dikkatli olmak gerekir; yanlışlıkla önemli bir boş olmayan dizin silinirse altındaki yapıyı da kaybedebilirsin. Ayrıca kök dizininde çalışırken geniş kapsamlı -prune kullanımlarıyla gereksiz çıktıları filtrelemek performansı artırır:
[Kapanış]
Boş dosya ve dizin tespitinde find komutu esneklik ve güvenilirlik sağlar; özellikle otomasyon skriptlerinde raporlama ve gereksiz temizleme süreçlerinde temel araç haline gelir. Bu konudaki deneyimlerini ve karşılaştığın ilginç durumları paylaşabilirsin.
Giriş ve neden önemli
Bir sunucu veya geliştirme makinesinde, disk alanını etkileyen veya gereksiz dosyaların birikmesini önlemek için boş dosya ve dizinleri tespit etmek sıkça kullanılan bir ihtiyaçtır. Boş dosyalar çoğu zaman log dosyalarının yanlışlıkla oluşturduğu, dolan oluşmuş kısa kayıtlar ya da eski proje dosyaları olabilir. Boş dizinler ise güvenlik ve bakım açısından gereksiz yer kaplar; çoğu durumda silinmeleri güvenli değildir ancak doğru şekilde belirlenebilirler. Bu yüzden find komutu ile hedeflenen koşulları net biçimde ifade etmek, hem hatayı önler hem de süreçleri otomatikleştirmek adına değerlidir.
Boş dosyaları bulmak
Boş dosyaları ararken iki tip durum olabilir: gerçekten 0 byte olanlar ve sadece içeriği boş olanlar (yedekler, gizli meta dosyaları vb.). Temel yaklaşım şu şekildedir:
KOD
1find /hedef/kök -type f -empty- -type f: sadece dosyaları hedefler.
- -empty: boyutu 0 olan dosyaları seçer.
İstersen belirli bir süreye ait olmayan dosyaları da daraltabilirsin; örneğin sadece son 30 gün içinde değiştirilmemiş dosyalar için:
KOD
1find /hedef/kök -type f -empty -mtime +30Boş dizinleri bulmak
Boş dizinler için de benzer bir yaklaşım uygulanır:
KOD
1find /hedef/kök -type d -emptyBu komut, içinde hiçbir dosya veya alt dizin bulunmayan dizinleri getirir. Büyük dosya ağaçlarında bazı dizinler ısrarla boş değildir ama kullanıcıların görmesi gerekenler için faydalıdır. İkisini bir arada görmek istersen şu şekilde kullanabilirsin:
KOD
1find /hedef/kök \( -type f -empty \) -o \( -type d -empty \) -printSonuçları işleştirme ve güvenlik
Çıktıyı doğrudan silmek riskli olabilir; çoğu durumda önce doğrulama veya bir rapor üretmek daha güvenli. Örneğin:
KOD
1find /hedef/kök \( -type f -empty \) -print -exec ls -l {} \;veya temizlemek yerine listeleyip onay için kaydet:
KOD
1find /hedef/kök \( -type f -empty \) -print > /tmp/empty_files.txtDizinleri temizlerken de dikkatli olmak gerekir; yanlışlıkla önemli bir boş olmayan dizin silinirse altındaki yapıyı da kaybedebilirsin. Ayrıca kök dizininde çalışırken geniş kapsamlı -prune kullanımlarıyla gereksiz çıktıları filtrelemek performansı artırır:
KOD
1find / -path /proc -prune -o -type d -empty -print[Kapanış]
Boş dosya ve dizin tespitinde find komutu esneklik ve güvenilirlik sağlar; özellikle otomasyon skriptlerinde raporlama ve gereksiz temizleme süreçlerinde temel araç haline gelir. Bu konudaki deneyimlerini ve karşılaştığın ilginç durumları paylaşabilirsin.
