Menemukan semua file besar di sistem file root

124

Saya memiliki server linux, yang saat ini memiliki penggunaan di bawah ruang:

/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

Seperti yang terlihat. /adalah 78%. Saya ingin memeriksa, file atau folder mana yang menghabiskan ruang.

Saya mencoba ini:

find . -type d -size +100M

Yang menunjukkan hasil seperti ini:

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

Sekarang ini masalah saya. Saya hanya ingin nama file-file yang terletak di folder yang memakan ruang di /dan tidak di /u01atau /home. Karena /basis dari segalanya, itu menunjukkan kepada saya setiap file server saya.

Apakah mungkin untuk mendapatkan file besar yang berkontribusi 78% /?

Abhishek dot py
sumber
3
Lihat -xdevpredikat find. Lihat juga du -kx / | xdu(atau xdiskusage).
Stéphane Chazelas
1
relevanfind . -type f -print | xargs du -sk | sort -rn
user13107
Terkait: stackoverflow.com/questions/12522269/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

217

Mencoba:

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

Ini mencantumkan semua file yang ukurannya lebih besar dari 100 juta.

Jika Anda ingin tahu tentang direktori, Anda dapat mencoba ncdu.

Jika Anda tidak menjalankan Linux, Anda mungkin perlu menggunakan -size +204800atau -size +104857600c, karena Msufiks berarti megabita tidak ada dalam POSIX.

find / -xdev -type f -size +102400000c
cuonglm
sumber
1
-xdevhanya mencegah penemuan dari berjalan di sistem file, jadi Anda hanya akan mencari drive fisik Anda saat ini. Jika bukan itu yang Anda inginkan, hapus saja -xdevarg.
hobs
49

Selain jawaban @Gnouc, Anda juga dapat menambahkan ls -launtuk mendapatkan detail lebih lanjut. Anda harus sudo privilegesmelakukannya.

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

Untuk hanya melihat file yang ada di gigbyte, lakukan:

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
zee
sumber
44

Perintah berikut tidak hanya memberi Anda 50 file terbesar (> 100 juta) pada sistem file Anda, tetapi juga mengurutkan (GNU sort) berdasarkan yang terbesar:

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

-xdev Jangan turun direktori di sistem file lain.

Pada findpenggunaan BSD -xyang setara dengan -xdevprimer yang tidak digunakan lagi .

Untuk semua file dan direktori, bahkan lebih mudah:

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

( -xflag adalah apa yang diperlukan untuk membatasi duke sistem file tunggal)

Jika Anda tidak menggunakan GNU sort(dari coreutils), gunakan tanpa -h:

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

Untuk direktori saat ini saja (untuk hasil yang lebih cepat), ganti /dengan ..

kenorb
sumber
1
Saya akan menyebutkan bahwa metode ini baik karena -hmenunjukkan keluaran yang dapat dibaca manusia, dan menambahkan sampel keluaran.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
Solusi yang sangat bagus Terima kasih.
Tigin