Cara Mendapatkan Ukuran File atau Direktori di Linux
Saat Anda menggunakan du
perintah Linux , Anda memperoleh penggunaan disk sebenarnya dan ukuran sebenarnya dari file atau direktori. Kami akan menjelaskan mengapa nilai-nilai ini tidak sama.
Penggunaan Disk Aktual dan Ukuran Sebenarnya
Ukuran file dan ruang yang ditempati di hard drive Anda jarang sama. Ruang disk dialokasikan dalam blok. Jika file lebih kecil dari satu blok, seluruh blok masih dialokasikan untuknya karena sistem file tidak memiliki unit real estat yang lebih kecil untuk digunakan.
Kecuali jika ukuran file adalah kelipatan blok yang tepat, ruang yang digunakannya pada hard drive harus selalu dibulatkan ke seluruh blok berikutnya. Misalnya, jika file lebih besar dari dua blok tetapi lebih kecil dari tiga, masih membutuhkan tiga blok ruang untuk menyimpannya.
Dua pengukuran digunakan dalam kaitannya dengan ukuran file. Yang pertama adalah ukuran sebenarnya dari file tersebut, yaitu jumlah byte konten yang menyusun file tersebut. Yang kedua adalah ukuran efektif file pada hard disk. Ini adalah jumlah blok sistem file yang diperlukan untuk menyimpan file itu.
Sebuah contoh
Mari kita lihat contoh sederhana. Kami akan mengarahkan satu karakter ke file untuk membuat file kecil:
echo "1"> geek.txt
Sekarang, kita akan menggunakan daftar format panjang ls
,, untuk melihat panjang file:
ls -l geek.txt
Panjangnya adalah nilai numerik yang mengikuti dave dave
entri, yaitu dua byte. Mengapa dua byte ketika kami hanya mengirim satu karakter ke file? Mari kita lihat apa yang terjadi di dalam file tersebut.
Kita akan menggunakan hexdump
perintah, yang akan memberi kita jumlah byte yang tepat dan memungkinkan kita untuk "melihat" karakter non-cetak sebagai nilai heksadesimal. Kami juga akan menggunakan opsi -C
(kanonik) untuk memaksa keluaran untuk menunjukkan nilai heksadesimal di badan keluaran, serta karakter alfanumeriknya yang setara:
hexdump -C geek.txt
Outputnya menunjukkan kepada kita bahwa, mulai dari offset 00000000 dalam file tersebut, ada byte yang berisi nilai heksadesimal 31, dan yang berisi nilai heksadesimal 0A. Bagian kanan keluaran menggambarkan nilai-nilai ini sebagai karakter alfanumerik, jika memungkinkan.
Nilai heksadesimal 31 digunakan untuk mewakili digit satu. Nilai heksadesimal 0A digunakan untuk mewakili karakter Line Feed, yang tidak dapat ditampilkan sebagai karakter alfanumerik, sehingga ditampilkan sebagai titik (.). Karakter Line Feed ditambahkan oleh echo
. Secara default, echo
memulai baris baru setelah menampilkan teks yang perlu ditulis ke jendela terminal.
Itu dihitung dengan output dari ls
dan setuju dengan panjang file dua byte.
TERKAIT: Cara Menggunakan Perintah ls untuk Membuat Daftar File dan Direktori di Linux
Sekarang, kita akan menggunakan du
perintah untuk melihat ukuran file:
du geek.txt
Dikatakan ukurannya empat, tapi empat dari apa?
Ada Blok, Lalu Ada Blok
Saat du
melaporkan ukuran file dalam blok, ukuran yang digunakannya bergantung pada beberapa faktor. Anda dapat menentukan ukuran blok mana yang harus digunakan pada baris perintah. Jika Anda tidak memaksa du
untuk menggunakan ukuran blok tertentu, itu mengikuti serangkaian aturan untuk memutuskan mana yang akan digunakan.
Pertama, ia memeriksa variabel lingkungan berikut:
- DU_BLOCK_SIZE
- UKURAN BLOK
- UKURAN BLOK
Jika salah satu dari ini ada, ukuran blok disetel, dan du
berhenti memeriksa. Jika tidak ada yang disetel, du
defaultnya adalah ukuran blok 1.024 byte. Kecuali, variabel lingkungan yang dipanggil POSIXLY_CORRECT
disetel. Jika demikian, du
defaultnya adalah ukuran blok 512 byte.
Jadi, bagaimana kita mengetahui mana yang sedang digunakan? Anda dapat memeriksa setiap variabel lingkungan untuk mengetahuinya, tetapi ada cara yang lebih cepat. Mari kita bandingkan hasilnya dengan ukuran blok yang digunakan sistem file.
Untuk mengetahui ukuran blok yang digunakan sistem file, kami akan menggunakan tune2fs
program ini. Kami kemudian akan menggunakan opsi -l
(daftar superblok), menyalurkan output melalui grep
, lalu mencetak baris yang berisi kata "Blokir".
Dalam contoh ini, kita akan melihat sistem file di partisi pertama dari hard drive pertama sda1
, dan kita perlu menggunakan sudo
:
sudo tune2fs -l / dev / sda1 | grep Blok
Ukuran blok sistem file adalah 4.096 byte. Jika kita membaginya dengan hasil yang kita dapatkan dari du
(empat), itu menunjukkan du
ukuran blok default adalah 1.024 byte. Kami sekarang mengetahui beberapa hal penting.
Pertama, kita tahu bahwa jumlah terkecil dari real estate sistem file yang dapat digunakan untuk menyimpan file adalah 4.096 byte. Ini berarti bahkan file kecil dua byte kami menggunakan 4 KB ruang hard drive.
Hal kedua yang perlu diingat adalah aplikasi yang didedikasikan untuk melaporkan pada hard drive dan file sistem statistik, seperti du
, ls
, dan tune2fs
, dapat memiliki pengertian yang berbeda dari apa yang “blok” berarti. The tune2fs
aplikasi melaporkan blok ukuran file sistem yang benar, sementara ls
dan du
dapat dikonfigurasi atau terpaksa menggunakan ukuran blok lainnya. Ukuran blok tersebut tidak dimaksudkan untuk berhubungan dengan ukuran blok sistem file; mereka hanya "potongan" yang digunakan perintah dalam output mereka.
Terakhir, selain menggunakan ukuran balok yang berbeda, jawaban dari du
dan tune2fs
menyampaikan makna yang sama. The tune2fs
Hasilnya adalah satu blok dari 4096 byte, dan du
hasilnya adalah empat blok dari 1024 byte.
Menggunakan du
Tanpa parameter atau opsi baris perintah, du
daftar total ruang disk direktori saat ini dan semua subdirektori yang digunakan.
Mari kita lihat contohnya:
du
Ukurannya dilaporkan dalam ukuran blok default 1.024 byte per blok. Seluruh pohon subdirektori dilintasi.
Menggunakan du
di Direktori Berbeda
Jika Anda ingin du
melaporkan tentang direktori yang berbeda dari yang sekarang, Anda dapat meneruskan jalur ke direktori pada baris perintah:
du ~ / .cach / evolusi /
Menggunakan du
pada File Tertentu
Jika Anda ingin du
melaporkan file tertentu, teruskan jalur ke file tersebut di baris perintah. Anda juga dapat meneruskan pola shell ke sekelompok file tertentu, seperti *.txt
:
du ~ / .bash_aliases
Pelaporan File dalam Direktori
Untuk du
melaporkan file di direktori dan subdirektori saat ini, gunakan opsi -a
(semua file):
du -a
Untuk setiap direktori, ukuran setiap file dilaporkan, serta total untuk setiap direktori.
Membatasi Kedalaman Pohon Direktori
Anda dapat mengetahui du
daftar pohon direktori ke kedalaman tertentu. Untuk melakukannya, gunakan opsi -d
(kedalaman maks) dan berikan nilai kedalaman sebagai parameter. Perhatikan bahwa semua subdirektori dipindai dan digunakan untuk menghitung total yang dilaporkan, tetapi tidak semuanya terdaftar. Untuk mengatur kedalaman direktori maksimum pada satu tingkat, gunakan perintah ini:
du -d 1
Output mencantumkan ukuran total subdirektori tersebut di direktori saat ini dan juga memberikan total untuk masing-masing subdirektori.
Untuk membuat daftar direktori satu tingkat lebih dalam, gunakan perintah ini:
du -d 2
Mengatur Ukuran Blok
Anda dapat menggunakan block
opsi untuk mengatur ukuran blok untuk du
operasi saat ini. Untuk menggunakan ukuran blok satu byte, gunakan perintah berikut untuk mendapatkan ukuran yang tepat dari direktori dan file:
du --block = 1
Jika Anda ingin menggunakan ukuran blok satu megabyte, Anda dapat menggunakan opsi -m
(megabyte), yang sama seperti --block=1M
:
du -m
Jika Anda ingin ukuran yang dilaporkan dalam ukuran blok yang paling sesuai dengan ruang disk yang digunakan oleh direktori dan file, gunakan opsi -h
(dapat dibaca manusia):
du -h
Untuk melihat ukuran file yang terlihat daripada jumlah ruang hard drive yang digunakan untuk menyimpan file, gunakan --apparent-size
opsi:
du --apparent-size
Anda dapat menggabungkan ini dengan opsi -a
(semua) untuk melihat ukuran yang jelas dari setiap file:
du --apparent-size -a
Setiap file dicantumkan, bersama dengan ukurannya yang terlihat.
Menampilkan Hanya Total
Jika Anda ingin du
melaporkan hanya total direktori, gunakan opsi -s
(meringkas). Anda juga dapat menggabungkan ini dengan opsi lain, seperti opsi -h
(dapat dibaca manusia):
du -h -s
Di sini, kami akan menggunakannya dengan --apparent-size
opsi:
du --apparent-size -s
Menampilkan Waktu Modifikasi
Untuk melihat waktu dan tanggal pembuatan atau modifikasi terakhir, gunakan --time
opsi:
du --time -d 2
Hasil yang Aneh?
Jika Anda melihat hasil yang aneh du
, terutama saat Anda mereferensikan silang ukuran ke output dari perintah lain, biasanya karena ukuran blok yang berbeda di mana perintah berbeda dapat diatur atau yang default. Bisa juga karena perbedaan antara ukuran file sebenarnya dan ruang disk yang diperlukan untuk menyimpannya.
Jika Anda perlu mencocokkan keluaran dari perintah lain, bereksperimenlah dengan --block
opsi di du
.