Themenersteller #1
find ile boyuta göre dosya taraması

Merhaba arkadaşlar, dosya sistemi üzerinde belirli boyutlardan büyük veya küçük olan dosyaları hızlıca bulmanın güvenilir ve yaygın yolu nedir? Özellikle yüzlerce binlerce dosya içeren dizinlerde, hangi seçeneklerle sıralama yapmak hem güvenilir hem de performanslı olur? Bu konuyu farklı senaryolarda kurcalayalım: günlük arşivler, medya kütüphaneleri, log dizinleri ve yedeklemeler.


[list]
  • Temel yaklaşım: find komutunun -size parametresi ile boyut filtrelemek. Örneğin:
    CODE
    123
    find /path/to/search -type f -size +100M
    find /path/to/search -type f -size -10k
    

    İşaretler:
    • -size +N fakirlikte N bayt mı, yoksa blok cinsinden mi? Genelde 1 blok = 512 bayttır, ancak platforma göre değişebilir. GNU find, -size ile blok bazlı çalışır; -size +100M gibi taşkınlıklar için -size +100M ifadesi MB cinsinden çalışır.
    • -type f yalnızca dosyaları içerir; dizinleri yok saymak için kullanılır.
    • -print gibi çıktı kontrolü için varsayılan davranış çoğu durumda yeterli olur, ancak yönlendirme ile çıktı dosyaya da yazılabilir.


  • Boyut birimini netleştirmek için -size ile birlikte şu ifadeler kullanılır:
    • -size n : tam boyut (bloklar ölçütüyle)
    • -size +n : n bloktan büyük
    • -size -n : n bloktan küçük

    Not: KB/MB/GB gibi okunabilir birimlerle kullanım için -size +100k, -size +1M gibi biçimler desteklenir. Ancak kullandığınız find sürümünün birim yorumlayıcısını kontrol etmek akıllıca olacaktır.

  • Birlikte kullanımlar:
    • Yalnızca belirli boyut aralığında dosyalar:

    CODE
    12
    find /path/to/search -type f -size +1M -size -10M
    

    • Belirli boyuttan büyük tüm dosyaları listelemek ve çıktı paylaşmak:

    CODE
    12
    find /var/log -type f -size +5M -exec ls -lh {} \;
    


  • İzleme ve performans ipuçları:
    • Çok büyük ağaçlarda -prune ile alt ağaçları hariç tutmak hızlı sonuçlar verir:

    CODE
    123
    find /usr -path /usr/share -prune -o -type f -size +100M -print
    [/* bu örnekte /usr/share alt ağaçlarını taramadan hariç tutar */]
    

    • İstisnalar için -path ile belirli dizinleri hariç tutabilir veya -not -path ile filtreleyebilirsiniz.

    -İşlem yaparken -exec ile güvenli bir şekilde işlem uygulanabilir, ancak çok sayıda dosya için -print0 ve xargs -0 kombinasyonu performansı artırır:
    CODE
    12
    find /data -type f -size +50M -print0 | xargs -0 -I{} cp {} /backup/large/
    


  • Güvenlik ve izinler:
    • Kökten çalışıyorsanız veya farklı kullanıcılar altında tarama yapıyorsanız, izin sorunları olabilir. Gerekirse sudo ile çalışmak gerekir;
    • Özellikle arama kökünde geniş taramalarda bellek kullanımı ve I/O yoğunluğu nedeniyle sistem etkilenebilir.


    Özetle, find ile -size ile dosyaları boyuta göre filtrelemek basittir ve -size birimleri çoğu durumda MB/GB olarak kullanılabilir. İleri seviye kullanım için -prune, -path ve -exec/xargs kombinasyonları ile etkili ve güvenli bir iş akışı kurabilirsiniz.


    Bu konu üzerinde kendi ortamınızda hangi komutları nasıl yorumladığınızı ve karşılaştığınız performans farklarını paylaşabilir misiniz? Özellikle büyük depolarda tarama yapanlar hangi hiberasyonları, hangi dizinleri hariç tutmayı tercih ediyor?
  • Sie müssen angemeldet sein, um zu antworten.

    Benutzer, die dieses Thema gerade ansehen (Gesamt: 5, Mitglieder: 5, Gäste: 0)
    Gesamt: 5 (mitglieder: 5, gäste: 0)
    0 Zitate ausgewählt