Kök dosya sistemindeki tüm büyük dosyaları bulma


124

Şu anda alan kullanımının altında olan bir linux sunucum var:

/dev/sda3              20G   15G  4.2G  78% /
/dev/sda6              68G   42G   23G  65% /u01
/dev/sda2              30G  7.4G   21G  27% /opt
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                  48G  8.2G   39G  18% /dev/shm

Gördüğün gibi. /% 78'de. Hangi dosyaların veya klasörlerin yer harcadığını kontrol etmek istiyorum.

Bunu denedim:

find . -type d -size +100M

Hangi sonuç böyle gösterir:

./u01/app/june01.dbf
./u01/app/temp01.dbf
./u01/app/smprd501.dbf
./home/abhishek/centos.iso
./home/abhishek/filegroup128.jar

Şimdi bu benim sorunum. Ben sadece en alanı tüketen klasörlerde bulunan bu dosyaların ismini istiyorum /ve hiç /u01veya /home. Yana /her şeyin temelidir, bu bana sunucunun her dosyayı gösteriyor.

% 78'ine katkıda bulunan büyük dosyaları almak mümkün müdür /?


3
-xdevBulma ifadesine bakın . Ayrıca bakınız du -kx / | xdu(veya xdiskusage).
Stéphane Chazelas


1
alakalıfind . -type f -print | xargs du -sk | sort -rn
user13107 14

Yanıtlar:


216

Deneyin:

find / -xdev -type f -size +100M

100M'den büyük olan tüm dosyaları listeler.

Dizin hakkında bilmek istiyorsanız, deneyebilirsiniz ncdu.

Eğer Linux kullanmıyorsanız , kullanmanız gerekebilir -size +204800veya megabayt anlamına -size +104857600cgelen Msonek POSIX’de bulunmuyor olabilir.

find / -xdev -type f -size +102400000c

1
-xdevsadece dosya sistemlerinde dolaşmaktan kaçınmayı engeller; böylece yalnızca geçerli fiziksel sürücünüzü arayacaksınız. İstediğin bu değilse, sadece -xdevargümanı kaldır .
ocaklar

49

@Gnouc cevabına ek olarak, ls -ladaha fazla bilgi almak için de ekleyebilirsiniz . Bunu sudo privilegesyapmak zorundasın .

$ find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Yalnızca gigbayttaki dosyaları görmek için şunları yapın:

root# du -ahx / | grep -E '\d+G\s+'


1.8G    /.Spotlight-V100/Store-V2/A960D58E-A644-4497-B3C1-866A529BF919
1.8G    /.Spotlight-V100/Store-V2

44

Aşağıdaki komut, yalnızca dosya sisteminizdeki en büyük 50 dosyayı (> 100M) bulmakla kalmaz, aynı zamanda (GNU sort) en büyüğüne göre sıralar:

find / -xdev -type f -size +100M -exec du -sh {} ';' | sort -rh | head -n50

-xdev Dizinleri diğer dosya sistemlerine indirmeyin.

findKullanılmayan birincil -xeşdeğer BSD kullanımında -xdev.

Tüm dosyalar ve dizinler için daha da kolay:

du -ahx / | sort -rh | head -20

( -xbayrak, dutek bir dosya sistemini sınırlandırmak için gerekli olan şeydir )

GNU'yu sort(from coreutils) kullanmıyorsanız, kullanmadan kullanın -h:

du -ax / | sort -rn | head -20

Sadece (hızlı sonuçlar için) şu anda dizinde için, yerini /ile ..


1
Bu yöntemin iyi olduğundan bahsederim çünkü -hinsan tarafından okunabilir çıktılar gösteriyor ve bir örnek çıktı ekledi.
Ciro Santilli

Çok iyi bir çözüm. Teşekkür ederim.
Tigin
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.