Cara Mendapatkan Ukuran File atau Direktori di Linux

Saat Anda menggunakan duperintah 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 hexdumpperintah, 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,  echomemulai 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 duperintah 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 duuntuk 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 duberhenti memeriksa. Jika tidak ada yang disetel,  dudefaultnya adalah ukuran blok 1.024 byte. Kecuali, variabel lingkungan yang dipanggil POSIXLY_CORRECTdisetel. Jika demikian, dudefaultnya 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 tune2fsprogram 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 tune2fsaplikasi melaporkan blok ukuran file sistem yang benar, sementara  lsdan dudapat 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 dudan tune2fs menyampaikan makna yang sama. The tune2fsHasilnya adalah satu blok dari 4096 byte, dan duhasilnya adalah empat blok dari 1024 byte.

Menggunakan du

Tanpa parameter atau opsi baris perintah, dudaftar 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 dudi 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 dupada 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 dumelaporkan 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 dudaftar 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 blockopsi 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-sizeopsi:

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-sizeopsi:

du --apparent-size -s

Menampilkan Waktu Modifikasi

Untuk melihat waktu dan tanggal pembuatan atau modifikasi terakhir, gunakan --timeopsi:

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 --blockopsi di du.