Saya tidak tahu mengapa saya mendapatkan hasil berikut:
ls -l
memberitahu saya ukuran file yang diberikan (HISTORY) adalah “581944”:
$ ls -l HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
ls -s
mengatakan itu adalah "572":
$ ls -s HISTORY
572 HISTORY
Saya jelas perlu membuat nilai menggunakan skala yang sebanding. Jadi pertama-tama saya konfirmasikan bahwa menggunakan --block-size 1
di ls -l
memberi saya hasil yang sama seperti sebelumnya:
$ ls -l --block-size 1 HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 581944 Feb 22 10:59 HISTORY
Kemudian saya melakukan hal yang sama pada ls -s
untuk mendapatkan nilai dalam skala yang sama:
$ ls -s --block-size 1 HISTORY
585728 HISTORY
Hasil yang berbeda! 581944 585728 .
Saya mencoba menghasilkan nilai yang sebanding sebaliknya, menggunakan -k
, tapi saya mendapatkan:
$ ls -lk HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 569 Feb 22 10:59 HISTORY
$ ls -sk HISTORY
572 HISTORY
Sekali lagi, hasil yang berbeda, 569 572 .
Saya mencoba menentukan –si untuk memastikan kedua opsi menggunakan skala yang sama, tetapi tidak berhasil:
$ ls -lk --si HISTORY
-rw-rw-r-- 1 waldyrious waldyrious 582k Feb 22 10:59 HISTORY
$ ls -sk --si HISTORY
586k HISTORY
…sekali lagi, nilai yang berbeda:582k 586k .
Saya mencoba mencari di web tetapi satu-satunya hal yang saya temukan yang tampaknya relevan adalah ini:
Beberapa file memiliki “lubang” di dalamnya, sehingga penggunaannya dicantumkan oleh
ls -s
(…) lebih kecil dari ukuran file yang dicantumkan olehls -l
.”
(perhatikan bahwa dalam hasil saya yang terjadi sebaliknya:ls -s
mengembalikan ukuran lebih besar dari ls -l
, tidak lebih kecil.)
Sementara itu, halaman ini mengatakan bahwa
tidak ada cara yang elegan untuk mendeteksi lubang file Unix.
Jadi, bagaimana saya bisa mengatasi perbedaan ini? Manakah dari nilai-nilai ini yang dapat dianggap benar? Mungkinkah ini bug di ls
?
Jawaban Terbaik
Jawaban singkat:
ls -l
memberikan ukuran file (=jumlah data yang dikandungnya)ls -s --block-size 1
memberikan ukuran file pada sistem file
Mari kita buat dua file:
Sebuah file jarang dengan panjang 128 byte (File sparse adalah file yang berisi blok kosong, lihat File Sparse):
# truncate -s 128 f_zeroes.img
# hexdump -vC f_zeroes.img
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000080
File lain dengan data acak, juga berukuran 128 byte:
# dd if=/dev/urandom of=f_random.img bs=1 count=128
# hexdump -vC f_random.img
00000000 bc 82 9c 40 04 e3 0c 23 e6 76 79 2f 95 d4 0e 45 |[email protected]#.vy/...E|
00000010 19 c6 53 fc 65 83 f8 58 0a f7 0e 8f d6 d6 f8 b5 |..S.e..X........|
00000020 6c cf 1b 60 cb ef 06 c6 d0 99 c6 16 3f d3 95 02 |l..`........?...|
00000030 85 1e b7 80 27 93 27 92 d0 52 e8 72 54 25 4d 90 |....'.'..R.rT%M.|
00000040 11 59 a2 d9 0f 79 aa 23 2d 44 3d dd 8d 17 d9 36 |.Y...y.#-D=....6|
00000050 f5 ae 07 a8 c1 b4 cb e1 49 9e bc 62 1b 4f 17 53 |........I..b.O.S|
00000060 95 13 5a 1c 2a 7e 55 b9 69 a5 50 06 98 e7 71 83 |..Z.*~U.i.P...q.|
00000070 5a d0 82 ee 0b b3 91 82 ca 1d d0 ec 24 43 10 5d |Z...........$C.]|
00000080
Jadi, seperti yang Anda lihat dalam representasi heksagonal, kedua file memiliki jumlah data yang sama , meskipun isinya sangat berbeda.
Terkait:Ubuntu 16.10 pada DELL XPS 13 9360 – (bagaimana) cara menggunakan driver grafis Intel?Sekarang, mari kita lihat direktori:
# ls -ls --block-size 1 f_*
1024 -rw-r--r-- 1 user user 128 Mar 18 15:34 f_random.img
0 -rw-r--r-- 1 user user 128 Mar 18 15:32 f_zeroes.img
^ ^
| |
Amount which the Actual file size
files takes on the fs
Nilai pertama diberikan oleh -s --block-size 1
pilihan, ini adalah jumlah ruang yang digunakan oleh file pada sistem file .
Seperti yang Anda lihat, file sparse tidak memakan banyak ruang, karena sistem file (ext3
dalam hal ini) cukup pintar untuk mengenali bahwa itu hanya berisi nol. Juga, file dengan data acak membutuhkan 1024 byte pada disk!
Nilainya tergantung pada bagaimana sistem file yang mendasarinya memperlakukan file (ukuran blok, kemampuan file yang jarang, ...).
Di kolom keenam adalah ukuran file jika Anda akan membacanya – ini adalah jumlah data yang ada di file dan itu 128 byte untuk kedua file!