Bagaimana cara mengetahui direktori atau file yang menghabiskan banyak ruang?


11

Disk saya kehabisan ruang:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Saya ingin membaca seluruh direktori home dan mencari tahu 10 direktori atau file yang menghabiskan banyak ruang, untuk memutuskan siapa yang akan dihapus.

du -sh *dapat melihat ukuran semua subdirektori, tetapi hanya mendapat folder saat ini. Saya mungkin perlu membagi menjadi beberapa subdirs masing-masing dan secara rekursif untuk mendapatkan siapa pelakunya yang saya butuhkan.

Apakah ada cara yang baik untuk melakukan ini?

Jawaban:


5

Jika Anda dapat menggunakan GUI, coba Baobab . Ini adalah alat grafis untuk menganalisis penggunaan ruang hard disk.


10

ncdu adalah opsi baris perintah yang memindai direktori dan mendaftar penggunaan disk dari tertinggi ke terendah. Ini alat bantu saya untuk ini.

Anda masih harus menyelam secara rekursif dengan cara ini, tetapi itu cara mudah yang bagus untuk melakukannya.


9

Gunakan perintah ini:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Ini akan menunjukkan kepada Anda semacam grafik di baris perintah yang menunjukkan direktori yang mengkonsumsi sebagian besar ruang dalam persentase.

Jika Anda ingin menganalisis /homesatu - satunya - Anda dapat menentukan ini dalam perintah seperti ini:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Akan terlihat seperti itu: masukkan deskripsi gambar di sini

Diambil dari sini .


9

du | sort -rn | kepala

  • du = Penggunaan Disk
  • urutkan menggunakan urutan numerik, mundur
  • sepuluh baris pertama

4

+1 untuk Baobab. pada baris perintah, saya biasanya hanya menggunakan du -hcsx *atau du -hcsx * | sort -h(membutuhkan versi terbaru failry sort) dan kemudian memeriksa subdirektori saat saya melanjutkan.

Juga, mcmemiliki fitur yang rapi untuk menghitung ukuran subdirektori dengan menekan Ctrl+ Spacedi atasnya (tekan Ctrl+ Spacedi atas ..untuk membuatnya menghitung ukuran untuk semua subdirektori. Kemudian Anda dapat memilih urutkan berdasarkan ukuran dalam menu.


2
pada baris perintah, Anda harus mencoba ncdu. Ini du ncurses, pada dasarnya.
Rob

1

Coba ini:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10

0

Favorit GUI lain: kdirstat

Memiliki kemampuan menelusuri yang bagus, dan dan (alat bantu) menu alat untuk membantu Anda menghapus / mengkompres file Anda.

Saya juga memiliki skrip baris perintah yang saya sebut dir_usage yang telah saya unggah ke pastebin.


-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

Baris perintah di atas melakukan hal berikut (secara berurutan):

  • Temukan semua file (bukan direktori) dalam folder saat ini
  • Tampilan penggunaan untuk masing-masing
  • Sortir hasilnya secara numerik
  • Gunakan hanya 10 baris terakhir (penggunaan tertinggi)
  • Potong 10 nama file (kolom pertama adalah penggunaan, kedua adalah nama file)
  • Tampilan penggunaan untuk setiap nama file (dalam format manusia)

Ini akan menghasilkan daftar ukuran 10 file terbesar yang dapat dibaca manusia dalam folder dan subfolder saat ini.


3
Bisakah Anda memperluas jawaban Anda?
50-3
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.