Linux’ta Büyük Boyutlu Dosyalar Nasıl Bulunur (find, du)

Son doğrulama: Eylül 2026 · Ubuntu 24.04 test sunucusunda denendi

Hızlı çözüm

Linux büyük dosya bulma işlemi için en hızlı yol find komutuna boyut filtresi eklemektir; klasör toplamı değil, tek tek dosyaların kendisi aranır.

  1. find /var -xdev -type f -size +50M -exec ls -lh {} \; 2>/dev/null ile 50 MB üzeri dosyaları listeleyin.
  2. Arama alanını daraltmak için kök / yerine /var, /usr, /home gibi belirli dizinleri hedefleyin.
  3. Bir dosyayı sildiğiniz hâlde disk boşalmıyorsa lsof | grep deleted ile hâlâ açık tutan süreci bulun.
Panel Yok — VPS/VDS yönetimsizdir; arama işletim sistemi üzerinden komutla yapılır
Sistem Ubuntu 22.04/24.04, Debian 12, AlmaLinux 8/9, Rocky 9 (coreutils find, du, lsof her dağıtımda yerleşik ya da paket yöneticisiyle kurulur)
Yetki Sunucunuzun herhangi bir kullanıcısı; sistem dizinlerinde sudo gerekebilir
Narhost ürünü VPS Sunucu, VDS Sunucu

Başlamadan önce

  • Sunucunuza SSH ile bağlı ve sudo ya da root yetkili olun.
  • Hangi bölümün dolduğunu df -h ile önceden bilin; aramayı o bölüme bağlı dizinlerle sınırlayın.
  • find‘ı kök / dizininde çalıştırmayın; tüm dosya sistemini tarar ve canlı sunucuda uzun sürer, /var ya da /usr gibi belirli dizinler yeterlidir.
  • Hiçbir adım dosya silmez; yalnızca listeler. Silme kararını siz verirsiniz.

Linux Büyük Dosya Bulma ile Klasör Analizi Farkı

Disk doluluk uyarısı geldiğinde iki farklı soru vardır: “hangi klasör” ve “hangi dosya”. Klasör bazlı toplamı du ile ölçme zaten ayrı bir kartta anlatılıyor; linux büyük dosya bulma ise bir adım ötesine geçip find ile tek tek dosyaları boyut filtresine göre listeler. Bir klasör büyükse ama içindeki tek dosya küçükse du yeterlidir; belirli bir dosya türünü (log, döküm, yedek) ararken find daha hızlı sonuç verir.

İkinci bir tuzak, silinmiş ama hâlâ yer kaplayan dosyalardır: bir dosya silindiğinde onu açık tutan bir servis kapanmadan disk alanı boşalmaz. Bu kart bu iki konuyu birlikte ele alır; genel bölüm doluluğu ve inode kontrolü için disk kullanımı denetleme kartına bakın.

linux büyük dosya bulma akış şeması — dizin seçimi, find ile boyut filtresi, uzantı daraltma, silinmiş dosya kontrolü adımları
Linux büyük dosya bulma dört adımda özetlenir: dizin seçimi, find ile boyut filtresi, uzantıya göre daraltma, lsof ile silinmiş-ama-açık dosya kontrolü.

Adım Adım find, du ve lsof ile Dosya Bulma

  1. Belirli bir dizinde büyük dosyaları listeleyin.-xdev aramayı aynı dosya sistemiyle sınırlar, bağlı başka bölümlere geçmez.
    find /var -xdev -type f -size +5M -exec ls -lh {} \; 2>/dev/null

    Beklenen sonuç (test sunucusunda alınan gerçek çıktı, kısaltılmış): en büyük dosyalar apt paket önbelleğinde çıktı: 55M /var/cache/apt/pkgcache.bin, birkaç adet 15-25M arası .deb paket dosyası ve 16M /var/cache/fwupd/metadata.xmlb.

  2. Farklı bir dizinde eşiği yükseltip tekrarlayın. Eşik yükseldikçe liste kısalır, gerçek şüpheliler kalır.
    find /usr -xdev -type f -size +20M -exec ls -lh {} \; 2>/dev/null

    Beklenen sonuç (test sunucusunda alınan gerçek çıktı, kısaltılmış): en büyük dosyalar paylaşılan kütüphaneler ve çalıştırılabilir dosyalardı, örnek: 118M /usr/lib/llvm-18/lib/libLLVM.so.1, 107M /usr/bin/dockerd.

  3. Belirli bir uzantıyı hedefleyin. Log arşivleri ya da veritabanı dökümleri genelde belirli bir uzantıda birikir.
    find /var/log -xdev -type f -name "*.gz" -size +10M 2>/dev/null

    Beklenen sonuç: test sunucusunda 10 MB üzeri sıkıştırılmış log yoktu (boş çıktı); varsa dosya yolu tek satırda listelenir, önce içeriğine bakıp sonra silinir.

  4. Bir dizin altındaki en büyük tekil dosyaları du ile de bulabilirsiniz.find‘a alternatif, aynı sonuca farklı bir yoldan ulaşır.
    du -ah /var/cache 2>/dev/null | sort -rh | head -5

    Beklenen sonuç: dizin altındaki dosya ve klasörler boyuta göre büyükten küçüğe sıralanır; -a bayrağı dosyaları da (yalnızca klasörleri değil) listeye katar.

  5. Sildiğiniz dosya disk alanını boşaltmıyorsa açık tutan süreci bulun. Bir dosya silindiğinde onu açık tutan servis kapanmadan alan serbest kalmaz; lsof açık dosya tablosunu listeler.
    lsof 2>/dev/null | grep deleted

    Beklenen sonuç (test sunucusunda alınan gerçek çıktı): ovsdb-server 1093 root 6u REG 252,0 330 263802 /tmp/#263802 (deleted) — dosya silinmiş ama ovsdb-server süreci hâlâ açık tutuyor; süreç adı ve PID buradan okunur.

    Dikkat

    Büyük bir dosyayı sildiğiniz hâlde disk dolu kalıyorsa, ilgili servisi (“(deleted)” satırındaki komut adı) yeniden başlatmadan alan boşalmaz. Servisi durdurmadan önce hangi süreç olduğunu lsof çıktısından doğrulayın; rastgele bir servisi durdurmayın.

Doğrulama

Sonuç

find ile listelenen büyük dosyalar tanıdık ve gerekliyse (güncel yedek, aktif log) dokunmayın; gereksizse silin ve df -h ile boşalan alanı doğrulayın. Alan boşalmadıysa lsof | grep deleted‘e tekrar bakın.

Hâlâ Çözülmediyse

  • find çok yavaş çalışıyor ya da zaman aşımına giriyor. Kök / dizininde çalıştırmayın; /var, /usr, /home gibi belirli dizinlerle sınırlayın.
  • Hangi klasörün genel olarak büyüdüğünü anlamıyorsunuz. Önce klasör boyutu öğrenme kartındaki adımlarla üst seviyeden bakın.
  • Bölüm doluluğu ve inode farkını ayırt edemiyorsunuz.disk kullanımı denetleme kartıdf -h/df -i ayrımını anlatır.
  • Temizlik sonrası disk kalıcı olarak yetersiz.disk genişletme kartına bakın.

Narhost desteği

Talebe şunları ekleyin: sunucunuzun IP adresi, aradığınız dizin, find komutunun tam çıktısı ve varsa lsof | grep deleted satırı.

Destek talebi aç

Sıkça sorulan sorular

Linux büyük dosya bulma işlemini kök dizinde çalıştırabilir miyim?

Çalıştırabilirsiniz ama önerilmez; find / tüm dosya sistemini (bağlı ağ sürücüleri dahil) tarar ve canlı bir sunucuda uzun sürüp G/Ç yükü oluşturur. Aramayı /var, /usr, /home gibi ihtiyacınız olan dizinle sınırlayın.

find ile du farklı sonuç veriyor, hangisine güveneyim?

İkisi de doğrudur, farklı düzeyde çalışır: find -size tek dosyaları filtreler, du bir dizinin toplamını verir. Tek bir büyük dosya arıyorsanız find, bir klasörün genel ağırlığını öğrenmek istiyorsanız du daha uygundur.

Bir dosyayı sildim ama df -h hâlâ dolu gösteriyor, neden?

Dosyayı açık tutan bir servis (log yazan bir uygulama, veritabanı süreci) kapanmadan Linux o alanı geri vermez. lsof | grep deleted ile hangi sürecin dosyayı hâlâ tuttuğunu görüp servisi yeniden başlatın.

Bu makale sorununuzu çözdü mü?

Çözemediniz mi?

Teknik ekibimiz sunucu tarafındaki ayarları sizin için kontrol edebilir. Destek talebinizde alan adınızı ve aldığınız hata metnini paylaşmanız süreci hızlandırır.

Etiketler: finddu

İlgili çözümler