Output yang salah dari du?

12

Saya pikir perintah du saya bingung.

% du -shc DIR ...
...
6123941496      total

% du -shc DIR ...
...
6.1G    total

% du -sc --si DIR ...
...
6.6G    total

Saya sudah mencoba memberi LANG=Cdan mengecek hasilnya di spreadsheet. Sepertinya -h sudah menghasilkan menggunakan kekuatan 1000 (--si), dan --si memberikan jawaban yang salah. Saya pikir jawaban yang benar adalah 5.7G untuk -h dan 6.1G untuk --si. Jadi apa yang terjadi di sini?

% du --version
du (GNU coreutils) 8.20
...

% uname -a
Linux XXX 3.9-1-amd64 #1 SMP Debian 3.9.8-1 x86_64 GNU/Linux
Gerry Lufwansa
sumber
3
Harap sertakan perintah yang sebenarnya. Apa yang ...diwakilinya? Anda tampaknya telah menjalankan perintah yang sama persis dua kali dan mendapatkan hasil yang berbeda, begitu? Sudahkah Anda membaca penjelasan tentang pengubah ukuran man du?
terdon

Jawaban:

18

Ulangi tes Anda menggunakan --apparent-sizesakelar.

$ du -shc --apparent-size DIR ...

kutipan dari halaman du man

--apparent-size
       print  apparent sizes, rather than disk usage; although the apparent size is
       usually smaller, it may be larger due to holes in (`sparse') files, internal 
       fragmentation, indirect blocks, and the like
slm
sumber
1
Ah, jadi rupanya -b setara dengan '--apparent-size --block-size = 1'. Saya melewatkan itu. Menggunakan 'du -shc --apparent-size' sekarang dengan benar memberikan 5.7G sekarang. Terima kasih!
Gerry Lufwansa
@GerryLufwansa - yeah ketika Anda mulai mencampur sistem file yang berbeda atau memasang yang CIFS itu menjadi sangat nyata. Saya selalu menggunakan -batau --apparent-size.
slm
... dan perbedaannya bisa sangat besar dengan sistem HSM, di mana file yang dimigrasi melaporkan 0 (atau sesuatu seperti beberapa kB) tanpa --apparent-size.
Ansgar Esztermann
Ada solusi untuk duyang datang dengan Mac OS X?
Alec Jacobson