# Bash ile Dizileri Boyuta Göre Sıralama: Adım Adım Rehber
Disk alanınız sınırlıysa ve hangi dizinlerin en çok yer kapladığını bilmeniz gerekiyorsa, Bash komut satırı aracılığıyla dizinleri boyuta göre sıralamak hayat kurtarıcı olabilir. Bu makalede, Bash kullanarak dizinleri boyuta göre sıralamayı adım adım öğrenecek, gerçek dünya örnekleri ve performans optimizasyon teknikleri ile ileri seviye beceriler kazanacaksınız.
Disk alanınızın nasıl kullanıldığını anlamak ve gereksiz dosyaları temizlemek için bu rehber, size zaman ve kaynak tasarrufu sağlayacaktır. Sistem yöneticilerinden yazılım geliştiricilere kadar birçok kişi için faydalı bir beceri sunuyoruz.
Temel Kavramlar: Disk Alanı ve Bash Komutları
Öncelikle, Linux/Unix tabanlı sistemlerde dosya ve dizinlerin disk alanını nasıl işleyebildiğinizi anlamak önemlidir. du (disk usage) komutu, dizinlerin ve dosyaların disk kullanımını gösterir. sort komutu ise verileri çeşitli kriterlere göre sıralar. Bu iki komutu birleştirerek dizinleri boyuta göre sıralayabiliriz. Ayrıca, awk komutu ile çıktı formatını düzenleyebilir ve daha okunabilir hale getirebiliriz. Bu makalede, bu komutların nasıl kullanılacağını detaylı bir şekilde ele alacağız.
Yeni Başlayanlar İçin: Adım Adım Dizileri Boyuta Göre Sıralama
İlk olarak, basit bir örnek ile başlayalım. /home dizininin alt dizinlerini boyuta göre sıralamak istediğimizi varsayalım. Aşağıdaki komutu kullanabilirsiniz:
du -sh /home/* | sort -h
* du -sh /home/*: Bu kısım, /home dizininin altındaki tüm dizinlerin boyutlarını insan tarafından okunabilir formatta (örneğin, 1K, 234M, 2G) gösterir. -s seçeneği özet bilgi verirken, -h seçeneği insan-okunabilir birim dönüştürme sağlar. * ise tüm alt dizinleri temsil eder.
* | sort -h: Bu kısım, du komutunun çıktısını sort komutuna iletir. -h seçeneği, insan-okunabilir birim formatını dikkate alarak sıralama yapar.
Bu komut, /home dizininin alt dizinlerini en küçükten en büyüğe doğru sıralayarak listeler.
Orta Seviye: Gerçek Hayat Örneği ve Optimizasyon İpuçları
Şimdi, daha gerçekçi bir senaryo ele alalım. /var/log dizini genellikle çok sayıda log dosyası içerir ve zamanla oldukça büyük olabilir. Bu dizinin alt dizinlerini boyuta göre sıralayıp en büyük 5 tanesini görmek istediğimizi varsayalım:
du -sh /var/log/* | sort -rh | head -n 5
* du -sh /var/log/*: /var/log dizininin alt dizinlerinin boyutlarını insan-okunabilir formatta gösterir.
* sort -rh: -r seçeneği, sıralamayı tersine çevirir (en büyükten en küçüğe).
* head -n 5: Sıralanmış listenin ilk 5 satırını gösterir.
Bu komut, /var/log dizininin en büyük 5 alt dizinini boyuta göre sıralayarak listeler. Bu, disk alanını yönetirken en çok yer kaplayan dizinleri hızlıca tespit etmenize olanak tanır. Bu komutu daha da optimize etmek için, find komutunu kullanarak belirli bir dosya türü veya tarih aralığı için filtreleme yapabilirsiniz.
İleri Düzey: Performans Analizi ve Edge Case’ler
Çok büyük dizinler veya çok sayıda alt dizin içeren sistemlerde, yukarıdaki komutlar yavaş çalışabilir. Performansı artırmak için aşağıdaki yöntemleri kullanabilirsiniz:
* du komutunda --apparent-size seçeneği: Bu seçenek, bağlantılı dosyaların boyutunu yalnızca bir kez sayar ve performansı artırabilir.
* find komutu ile ön filtreleme: find komutu ile belirli kriterlere uyan dizinleri seçerek du komutunun işlem yükünü azaltabilirsiniz. Örneğin, sadece belirli bir boyuttaki dizinleri listelemek için find komutunu kullanabilirsiniz.
* Paralel İşlem: xargs ve -P seçeneği ile du komutunu paralel olarak çalıştırarak performansı önemli ölçüde artırabilirsiniz. Örneğin; find /var/log -type d -print0 | xargs -0 -P 4 du -sh komutu 4 çekirdekli bir işlemcide 4 paralel işlem gerçekleştirir.
Edge Case’ler: Bazı durumlarda, dosya izinleri veya sembolik bağlantılar nedeniyle komutlar beklenmedik sonuçlar verebilir. Bu durumlarda, sudo komutu ile kök (root) ayrıcalıkları kullanmanız gerekebilir veya komutları daha dikkatli inceleyip hata ayıklamanız gerekebilir.
Nasıl Büyük Dizileri Daha Etkin Bir Şekilde İşleyebilirim?
Çok büyük dizinleri işlerken, performans önemli bir faktördür. Yukarıda bahsedilen paralel işlem, find ile ön filtreleme gibi yöntemler performansı artırır. Ayrıca, du komutunun çıktısını bir dosyaya kaydedip daha sonra bu dosyayı işlemek, tekrar tekrar disk okuma işlemlerini azaltarak performansı iyileştirebilir. Örneğin:
find /var/log -type d -print0 | xargs -0 -P 4 du -sh > disk_usage.txt
sort -rh disk_usage.txt | head -n 10
Bu yaklaşım, büyük dizinleri işlerken daha verimli bir çözüm sunar.
Bash ile Dizileri Boyuta Göre Sıralamada Pratik Örnekler
* Web sunucusu log dosyalarını temizleme: /var/log/apache2 dizininin alt dizinlerini boyuta göre sıralayarak en büyükleri tespit edebilir ve gereksiz log dosyalarını silebilirsiniz.
* Kullanıcı ev dizinlerinin yönetimi: Kullanıcıların ev dizinlerini boyuta göre sıralayarak, disk alanını çok fazla kullanan kullanıcıları tespit edebilirsiniz.
* Yedek dosyalarının yönetimi: Yedek dosyalarının bulunduğu dizinleri boyuta göre sıralayarak, en eski veya en büyük yedekleri silebilir ve disk alanından tasarruf sağlayabilirsiniz.
Bu örnekler, Bash komutlarının gerçek dünya senaryolarında nasıl kullanılabileceğini göstermektedir. [Fatih Soysal’ın bloguna](https://fatihsoysal.com) daha fazla Linux ve Bash ipuçları için göz atabilirsiniz.
Sonuç
Bu makalede, Bash kullanarak dizinleri boyuta göre sıralamayı adım adım öğrendiniz. Yeni başlayanlardan ileri seviye kullanıcılara kadar farklı seviyelere yönelik örnekler ve performans optimizasyon teknikleri sunduk. Bu bilgiler, disk alanınızı yönetmenize ve sisteminizin performansını iyileştirmenize yardımcı olacaktır.
Sıkça Sorulan Sorular:
1. du komutunun farklı seçenekleri nelerdir? du komutunun birçok seçeneği vardır. -s (özet), -h (insan-okunabilir birim), -a (tüm dosyaları göster), -d (belirli bir derinliğe kadar göster) gibi seçenekler en sık kullanılanlardır. man du komutu ile tüm seçenekleri inceleyebilirsiniz.
2. sort komutunun farklı seçenekleri nelerdir? sort komutu da birçok seçenek sunar. -r (ters sıralama), -n (sayısal sıralama), -k (belirli bir sütuna göre sıralama) gibi seçenekler en sık kullanılanlardır. man sort komutu ile tüm seçenekleri inceleyebilirsiniz.
3. Çok büyük dizinleri işlemek için daha etkili yöntemler var mı? Evet, find ve xargs komutlarını birleştirerek paralel işlem gerçekleştirmek, performansı önemli ölçüde artırabilir. Ayrıca, du çıktısını bir dosyaya kaydedip daha sonra işlemek de verimliliği artırır.
4. Hata alırsam ne yapmalıyım? Hata mesajlarını dikkatlice inceleyin ve hangi komutun veya seçeneğin hataya neden olduğunu belirleyin. man komutu ile komutların kullanımını inceleyebilir veya internette hata mesajını aratarak çözüm bulabilirsiniz.
5. Başka hangi komutlar yardımcı olabilir? ncdu (NCurses Disk Usage) komutu, interaktif bir arayüz ile disk kullanımını görselleştirmenize olanak tanır.
Yazar: Fatih Soysal
