Android

Bagaimana untuk mendapatkan saiz direktori di linux

Memahami Struktur Direktori di GNU/Linux

Memahami Struktur Direktori di GNU/Linux

Isi kandungan:

Anonim

Apabila menyenaraikan kandungan direktori menggunakan perintah ls , anda mungkin perhatikan bahawa saiz direktori hampir selalu 4096 bytes (4 KB). Itulah saiz ruang pada cakera yang digunakan untuk menyimpan maklumat meta untuk direktori, bukan apa yang terkandung.

Perintah yang anda ingin gunakan untuk mendapatkan saiz sebenar direktori ialah du , yang pendek untuk "penggunaan cakera".

Mendapatkan Saiz Direktori

Perintah du memaparkan jumlah ruang fail yang digunakan oleh fail atau direktori yang ditentukan. Jika laluan yang ditentukan adalah direktori, du meringkaskan penggunaan cakera bagi setiap subdirektori dalam direktori itu. Sekiranya tiada laluan dinyatakan, du melaporkan penggunaan cakera pada direktori kerja semasa.

Apabila dipanggil tanpa sebarang pilihan, du memaparkan penggunaan cakera direktori yang diberikan dan setiap subdirektorinya dalam bait.

Biasanya, anda ingin memaparkan ruang yang diduduki oleh direktori dalam format yang boleh dibaca manusia. Sebagai contoh, untuk mendapatkan saiz keseluruhan direktori /var , anda akan menjalankan arahan berikut:

sudo du -sh /var

Output akan kelihatan seperti ini:

85G /var

Mari kita jelaskan perintah dan hujah-hujahnya:

  • Perintah bermula dengan sudo kerana kebanyakan fail dan direktori di direktori /var dimiliki oleh pengguna root dan tidak dapat dibaca oleh pengguna biasa. Jika anda menghilangkan sudo perintah du akan mencetak "du: tidak dapat membaca direktori". s - Paparkan hanya saiz keseluruhan direktori yang ditentukan, jangan tunjukkan jumlah saiz fail untuk subdirektori. h - Mencetak saiz dalam format yang boleh dibaca manusia ( h ). /var - Laluan ke direktori yang anda ingin dapatkan saiznya.

Bagaimana jika anda mahu memaparkan penggunaan cakera subdirektori peringkat pertama? Anda mempunyai dua pilihan. Yang pertama ialah menggunakan simbol asterisk ( * ) seperti ditunjukkan di bawah, yang bermaksud "memadankan segala sesuatu yang tidak bermula dengan tempoh ( . )". Pilihan -c memberitahu du untuk mencetak sejumlah besar semua saiz:

sudo du -shc /var/*

24K /var/db 4.0K /var/empty 4.0K /var/games 77G /var/lib 4.0K /var/local 0 /var/lock 3.3G /var/log 0 /var/mail 4.0K /var/opt 0 /var/run 196K /var/spool 28K /var/tmp 85G total

Satu lagi cara untuk mendapatkan laporan mengenai penggunaan cakera subdirektori peringkat pertama adalah menggunakan pilihan --max-depth :

sudo du -h --max-depth=1 /var

77G /var/lib 24K /var/db 4.0K /var/empty 4.0K /var/local 4.0K /var/opt 196K /var/spool 4.0K /var/games 3.3G /var/log 5.0G /var/cache 28K /var/tmp 85G /var 85G total

Secara lalai, perintah du menunjukkan ruang cakera yang digunakan oleh direktori atau fail. Untuk mencari saiz direktori yang jelas, gunakan pilihan --apparent-size pilihan. "Ukuran jelas" fail ialah berapa data sebenarnya dalam fail.

sudo du -sh --apparent-size /var

Apabila anda memindahkan direktori melalui SCP, Rsync., Atau SFTP jumlah data yang dipindahkan melalui rangkaian adalah saiz fail yang jelas. Inilah sebabnya mengapa saiz ruang pada cakera yang digunakan pada sumber apabila dipaparkan dengan du (tanpa --apparent-size ) tidak sama dengan saiz pada sasaran.

Perintah du juga boleh digabungkan dengan arahan lain dengan paip.

Sebagai contoh, untuk mencetak 5 direktori terbesar dalam direktori /var , anda akan menggabungkan output du ke arahan jenis untuk menyusun direktori mengikut saiznya dan kemudian paip output ke arahan head yang akan mencetak hanya 5 direktori teratas:

sudo du -h /var/ | sort -rh | head -5

85G /var/ 77G /var/lib 75G /var/lib/libvirt/images 75G /var/lib/libvirt 5.0G /var/cache/pacman/pkg

Kesimpulannya

Di Linux, anda boleh mendapatkan saiz direktori menggunakan perintah du .

cakera terminal du