Mengapa Finder dan du melaporkan ukuran file yang berbeda?

3

Saya sedang menulis geektool 3 skrip untuk menunjukkan ukuran mesin virtual VMware Fusion tertentu. Seperti itu .vmwarevm "file" sebenarnya adalah direktori yang dikemas.

Mendapatkan informasi di Finder mengatakan file tersebut "52.91 GB". Saya menjalankan yang berikut ini du perintah untuk mendapatkan ukuran file:

> du -hs ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Ini du -hs perintah mengembalikan ukuran file sebagai "49G". Apa yang menyebabkan perbedaan dari apa yang dilaporkan oleh Finder?

kalau tidak , Saya sudah mencoba mengganti -s opsi dengan -d opsi seperti ini:

du -hd ~/Documents/Virtual\ Machines.localized/MY-PRECIOUS-7.vmwarevm | awk '{print $1}'

Ini du -hd perintah mengembalikan ukuran file sebagai "59G". Apa yang menyebabkan perbedaan antara Finder, du -hd, dan du -hs?

Juga ini du -hd perintah tidak menghasilkan output di geektool 3. Apa yang menyebabkan

flipdoubt
sumber

Jawaban:

6

Bukan pengguna Mac OS X tapi saya membaca bahwa Finder menggunakan basis-10 saat ini.

Mungkinkah bedanya du masih menggunakan basis-2?

49.0 GiB * (1024^3 bytes / GB) = 52,613,349,376 bytes = 52.6 GB

(perbedaan kecil adalah karena du pembulatan ke GB terdekat)

Nifle
sumber
Versi dasar-2 pasti akan lebih kecil meskipun begitu?
Phoshi
@Phoshi - finder mengatakan 52,91, du mengatakan 49
Nifle
Oh, benar juga. Saya salah membaca "59G" kedua itu.
Phoshi
Adakah yang tahu cara menulis skrip yang mengubah du output ke basis 10?
flipdoubt
4

Perhatikan juga bahwa "du" mengembalikan ruang disk sebenarnya yang digunakan, sedangkan alat lain akan mengembalikan ruang yang dialokasikan. Di mana Anda memiliki file jarang, 2 nilai ini bisa sangat berbeda - saya punya file yang dialokasikan 2 TB, tetapi hanya menempati sekitar 200 MB ruang disk.

Cry Havok
sumber
Alat baris perintah apa yang menampilkan ruang yang dialokasikan di OS X?
flipdoubt
ls akan (seperti yang dicakup oleh Stephen).
Cry Havok
3

Nifle benar. du mengembalikan basis-2, Finder mengembalikan basis-10, dan 49GiB ≈ 52.91GB

Argumen -d mengharuskan Anda untuk menentukan kedalaman. Dari bereksperimen barusan, tampaknya jika Anda memberikan sesuatu selain angka untuk kedalaman, itu memakan argumen yang Anda tentukan dan berperilaku seolah-olah Anda melakukannya. -d 0. 59G yang Anda dapatkan adalah ukuran direktori saat ini, bukan ukuran file vmwarevm.

Inilah eksperimen yang saya jalankan:

[~]$ ls -d Code
Code/

[~]$ du -h -s Code
8.3M    Code

[~]$ du -h -d 0 Code
8.3M    Code

[~]$ du -h -d Code
 38G    .           <-- this is the size of ~/

[~]$ du -h -d 0
 38G    .

Anda mungkin ingin membaca Halaman manual Mac OS X du (1) untuk informasi lebih lanjut.

Stephen Jennings
sumber