Mac OS X tidak melaporkan ukuran direktori dengan benar?

17

Di Finder, saya perhatikan bahwa jika saya menduplikasi beberapa file .app (dalam folder Aplikasi), Finder akan menunjukkan bahwa file .app duplikat tidak berukuran sama dengan aslinya. Perbedaan ukuran file ini tidak terjadi untuk semua file .app yang saya duplikat, tetapi sepertinya semakin besar file .app, semakin besar kemungkinan bahwa duplikat tidak akan menampilkan ukuran yang sama seperti aslinya. Berikut ini beberapa contohnya:

GarageBand.app - 381.7 MB
GarageBand copy.app - 373.2 MB

iMovie.app - 695.3 MB
iMovie copy.app - 635.4 MB

Install Xcode.app - 1.81 GB
Install Xcode copy.app - 1.57 GB

Sekarang saya baru untuk Mac, dan setelah saya perhatikan masalah perbedaan ukuran file ini, saya menemukan bahwa file .app sebenarnya bukan file - mereka benar-benar direktori, tetapi Finder menampilkannya seolah-olah mereka adalah file. Jadi saya pikir mungkin proses duplikasi tidak menyalin semua isi direktori .app asli dan yang menjelaskan perbedaan dalam "ukuran file". Tapi kemudian saya mengunduh dan menginstal DeltaWalker, yang merupakan alat diff file / folder, dan DeltaWalker mengatakan bahwa direktori .app duplikat persis sama dengan direktori .app yang asli. Jadi proses duplikasi bekerja dengan sempurna, dan karena itu tampaknya menjadi masalah dengan ukuran file pelaporan Finder.

Saya juga memeriksa ukuran direktori di Terminal, menggunakan perintah "du", dan itu juga menunjukkan perbedaan dalam ukuran antara direktori asli dan duplikat:

du -k /Applications/GarageBand.app/
212868  /Applications/GarageBand.app/

du -k /Applications/GarageBand\ copy.app/
397880  /Applications/GarageBand copy.app/

du -k /Applications/iMovie.app/
629644  /Applications/iMovie.app/

du -k /Applications/iMovie\ copy.app/
700500  /Applications/iMovie copy.app/

du -k /Applications/Install\ Xcode.app/
1771864 /Applications/Install Xcode.app/

du -k /Applications/Install\ Xcode\ copy.app/
1772228 /Applications/Install Xcode copy.app/

Juga, ini bukan hanya direktori .app. Saya menggandakan direktori / Pengembang / Perpustakaan saya, dan inilah yang dikatakan du:

du -k /Developer/Library/
320784  /Developer/Library/

du -k /Developer/Library\ copy/
399868  /Developer/Library copy/

Jadi adakah yang bisa menjelaskan mengapa Mac OS X tampaknya tidak melaporkan ukuran direktori dengan benar? Apakah ini bug (sulit dipercaya karena sesuatu yang begitu sederhana), atau apakah saya melewatkan sesuatu (menjadi pengguna Mac baru)?

(Saya menjalankan Mac OS X Lion 10.7.2)


PEMBARUAN dalam menanggapi elofturtle:

Apa yang paling aneh tentang ini adalah bahwa Finder tidak memiliki konsistensi. Saya baru saja membuat 2 duplikat dari GarageBand.app, dan kemudian membuat 2 duplikat dari salah satu duplikat. Finder menampilkan setiap duplikat tunggal dengan ukuran berbeda:

GarageBand.app - 381.7 MB
GarageBand copy.app - 357.6 MB (duplicate of GarageBand.app)
GarageBand copy 2.app - 353.9 MB (duplicate of GarageBand.app)
GarageBand copy 3.app - 378.2 MB (duplicate of GarageBand copy 2.app)
GarageBand copy 4.app - 329.1 MB (duplicate of GarageBand copy 2.app)

Perhatikan juga bahwa "GarageBand copy 3.app" lebih besar dari "GarageBand copy 2.app", sedangkan "GarageBand copy 4.app" lebih kecil dari "GarageBand copy 2.app". Itu pasti bug di Finder.

Inilah yang dikatakan "du -k" tentang mereka semua:

212868  /Applications/GarageBand.app/
397880  /Applications/GarageBand copy.app/
397880  /Applications/GarageBand copy 2.app/
397880  /Applications/GarageBand copy 3.app/
397880  /Applications/GarageBand copy 4.app/

Setidaknya dikatakan bahwa semua duplikat memiliki ukuran yang sama, tetapi tidak sama dengan aslinya.

aliran balik pacover
sumber
Saya punya firasat ini akan turun ke hardlinks dan symlinks, dan satu atau yang lainnya dikonversi menjadi salinan file terpisah ketika Anda menduplikasi bundel .app tersebut. Omong-omong, apakah Anda menduplikasi mereka dalam volume yang sama (partisi?).
Spiff
Apakah ada jawaban saya yang terlewatkan di bawah ini? Saya memiliki kesan bahwa itu adalah jawaban penuh untuk pertanyaan Anda, tetapi sejauh ini tidak ada komentar dari Anda. Bisakah Anda memberi tahu saya?
Tonin
1
Saya minta maaf atas keterlambatan ini. Jawaban Anda datang setelah saya kehilangan minat pada pertanyaan itu. Tapi jawaban Anda luar biasa - sangat rinci dan memang sepenuhnya menjawab pertanyaan saya. Terima kasih banyak, dan saya harus ingat bahwa Finder menampilkan ukuran yang tidak terkompresi walaupun file / foldernya benar-benar dikompres.
pacoverflow
Memberi tag ulang ini, mungkin saya harus memberi tag [salin]? - Tetapi dengan mengorbankan tag lain mana?
Arne Stenström

Jawaban:

13

Perbedaan datang dari alasan yang berbeda: cara penghitungan yang berbeda, alat yang berbeda, kompresi dan apa yang tampak seperti bug.

Perbedaan pertama dalam ukuran yang Anda lihat tampaknya adalah bug di Finder . Ukuran file yang ditunjukkan oleh Finder entah bagaimana dihitung secara real time dan di-cache dalam .DS_Storefile. Untuk beberapa alasan, saat menduplikasi aplikasi / folder besar, Finder menghitung ukurannya selama proses penyalinan dan menyimpan cache yang ukurannya tidak lengkap. Itu kemudian menunjukkan ukuran yang abu-abu di jendela Finder, abu-abu yang berarti Finder tahu konten telah berubah sejak itu perhitungan ukuran terakhir tetapi belum dihitung ulang .

Satu-satunya cara yang saya temukan untuk membuatnya menghitung ulang ukurannya dengan benar adalah dengan menghapus .DS_Storefile di folder Aplikasi, kemudian berhenti Finder (dari Monitor Aktivitas misalnya) dan meluncurkan kembali lagi (dari Ikon Dock). Jika Anda tidak menghapus .DS_Storefile, itu masih tetap abu-abu. Mungkin menunggu beberapa saat (jam, hari, reboot, ...) akan membuat Finder melakukannya sendiri.

Setelah itu, Anda akan melihat bahwa semua ukuran yang dilaporkan oleh Finder adalah sama.

Jadi ya, sepertinya bug Finder, setidaknya di OSX Lion (diuji dengan 10.7.4 di sini, Finder versi 10.7.3). Anda juga dapat melihat utas ini yang melaporkan perilaku yang sama.

Lalu, mari kita pertimbangkan dualatnya. Pada awalnya, saya pikir perbedaan yang kita lihat dapat dijelaskan oleh perbedaan antara ukuran logis dan fisik item yang disalin. Ukuran logis adalah ukuran sebenarnya dari item, artinya setiap bit informasi yang dikandungnya dijumlahkan bersama. Ukuran fisik adalah ukuran item pada disk, di mana setiap bit informasi ditulis pada sektor disk.

Sebagai contoh, sebuah file yang berisi satu karakter akan berakhir dengan ukuran logis 1 byte, tetapi 512 byte atau bahkan 4096 byte ukuran fisik ketika sebenarnya ditulis ke disk. Ukuran fisik biasanya lebih besar dari ukuran logis (dan tergantung pada ukuran sektor / blok aktual dari disk atau sistem file). Ini dijelaskan lebih detail di utas lainnya ini . Ukuran logis bisa lebih besar dalam hal file jarang , tetapi HFS + tampaknya tidak mendukung fitur seperti itu.

duhanya menunjukkan ukuran fisik (dan Anda dapat mengetahui apa itu BLOCKSIZE). Anda dapat melihat bahwa ukuran yang dilaporkan duselalu lebih besar (atau, sangat, sama) dengan aslinya. Ini karena sistem file dan fragmentasi ruang disk. Ketika Anda menyalin file (sebenarnya di sini banyak file, karena Aplikasi adalah direktori) sektor-sektor baru dialokasikan pada disk dan, ketika terjadi fragmentasi , jumlah blok yang digunakan biasanya lebih tinggi daripada item aslinya. Beberapa orang menyebutnya File Slack .

Sekarang, kembali ke Finder. Jika Anda membuka jendela get info dari Aplikasi yang Anda duplikasi, Anda akan melihat bahwa Finder sebenarnya melaporkan ukuran Logical dan Physical dari item yang Anda pilih. Yang kemudian masuk akal. Anda bahkan dapat membandingkan ukuran fisik yang dilaporkan oleh Finder dan yang dilaporkan oleh dujika Anda melakukan sedikit matematika.

Mengapa melakukan matematika? Karena Finder menunjukkan ukuran file dalam kB, MB atau GB di mana dumelaporkannya dalam kiB, MiB atau GiB. Itu adalah awalan biner IEC yang harus digunakan untuk menghitung dan menampilkan unit informasi digital.

Tapi, sebenarnya, saya tidak yakin File Slack terlibat di sini, ada hal lain. Volume HFS + memungkinkan kompresi , dilakukan secara transparan, dan Apple menggunakannya untuk item asli yang diinstal oleh OS. Kemudian, ketika file disalin menggunakan alat standar, kompresi tidak digunakan lagi (sebagai default, agar kompatibel ke belakang). Jika Anda ingin tetap melakukan kompresi pada file-file itu, Anda perlu menggunakan dittoperintah sebagai ganti cpatau tindakan Finder apa pun. Ini dijelaskan dalam ulasan ini .

Berikut ini adalah hasil menyalin iTunes.app menggunakan teknik yang berbeda. Anda akan melihat bahwa ditto membuat Aplikasi persis ukuran yang sama, menjaga kompresi, di mana cptidak. Dan Anda bahkan dapat menghapus biner untuk lengkungan yang tidak Anda butuhkan, kemudian mengurangi seluruh ukuran):

antoine@amarante:/Applications$ du -ms iTunes.app/
281 iTunes.app/
antoine@amarante:/Applications$ cp -a iTunes.app/ iTunes-copy.app/
antoine@amarante:/Applications$ ditto iTunes.app/ iTunes-ditto.app
antoine@amarante:/Applications$ ditto --arch x86_64 iTunes.app/ iTunes-64.app
antoine@amarante:/Applications$ du -ms iTunes*
236 iTunes-64.app
289 iTunes-copy.app
281 iTunes-ditto.app
281 iTunes.app

Terima kasih kepada @DanPritts atas jawabannya di pos komplementer saya .

Tonin
sumber
Bukankah sebaliknya? Finder menunjukkan awalan SI aktual.
Daniel Beck
Bukankah file jarang ( bukan bundel / gambar OS X) jarang memiliki ukuran file yang lebih logis daripada fisik?
Daniel Beck
Ya, Anda benar, Finder menunjukkan awalan SI dan duIEC, saya akan memperbaiki posting saya.
Tonin
@DanielBeck File jarang, secara teori bisa saja, ya, tapi file seperti apa yang akan dimiliki aplikasi OSX sebagai file jarang? Menurut wikipedia , file jarang tidak didukung pada HFS +.
Tonin
Paragraf itu berbunyi seperti itu umumnya berlaku ( tergantung pada ukuran sektor / blok sebenarnya dari disk atau sistem file ), jadi itu sebabnya saya ingin menyebutkan itu.
Daniel Beck
1

Ini adalah cacat / bug yang mengerikan di OS X. Cara termudah untuk melihatnya adalah menduplikasi bundel aplikasi besar, kemudian tunjukkan konten dan hapus file besar dari dalam. Ruang tidak akan pulih. File tersebut masih besar. Misalnya, jika Anda memiliki bundel aplikasi 3.5GB, Anda menunjukkan konten, kemudian menghapus 3GB dari itu, Anda sekarang harus memiliki aplikasi dengan ukuran file 500MB. Anda tidak akan. Ini akan tetap 3.5GB.

pengguna245308
sumber
Untuk menghitung ulang ukuran, pilih Hitung Semua Ukuran dalam opsi tampilan folder. Lihat
apple.stackexchange.com/a/227173/156178
0

Ini pada dasarnya adalah dugaan, tetapi saya melihat dua kemungkinan:

  1. Beberapa data telah dihapus tetapi tidak dibatalkan alokasi aslinya, dan ini tidak disalin. Namun itu muncul dalam beberapa pencarian penggunaan disk, tetapi tidak yang lain (parameter yang berbeda diberikan untuk du atau apa pun yang menggunakan OS X secara internal).
  2. Beberapa data akan ditautkan ke lokasi asli, dan ini memengaruhi ukuran yang dirasakan di berbagai alat.

Jika (1) Anda mungkin harus mendapatkan hasil yang berbeda dengan membuat salinan ketiga dan membandingkan salinan.

elofturtle
sumber
Maaf, tidak bisa mendapatkan blok kode multiline agar terlihat benar di komentar, jadi saya akan mencoba mengedit posting asli saya.
aliran uang muka
Saya tidak akan mengharapkan duplikat menjadi lebih besar dari aslinya: - / Tampaknya layak laporan bug, tapi saya bertaruh peluang untuk mendapatkan umpan balik tentang cara kerja Finder menyebabkan ini ramping. Mudah-mudahan mereka akan melihatnya.
elofturtle
0

Pertama, Anda perlu menyadari bahwa file Mac .app sebenarnya adalah Direktori , bukan kompilasi binari seperti file Windows .exe. Finder hanya menyembunyikan fakta ini dari Anda untuk folder bernama * .app.

mis. (dari Terminal)

# cd /Applications/Calculator.app
# ls
Contents/

Saya cukup yakin apa yang terjadi adalah bahwa Finder / Get Info menggunakan heuristik yang tidak terlalu pintar untuk menghitung ukuran folder .app. Ini berarti tidak perlu menghitung setiap subfolder dan file dan menambahkan bersama semua ukuran itu.

Dugaan saya adalah bahwa perkiraan pada salinan itu benar karena OSX baru-baru ini harus memeriksa setiap file di dalamnya ketika Anda menyalin, sedangkan pada aslinya, OSX mungkin tidak harus melakukannya (misalnya dengan instalasi pabrik)

Henry Collingridge
sumber
-1

Saya punya masalah dengan Direktori Rumah saya setelah saya memindahkannya ke HDD internal setelah menginstal Yosemite pada SSD. Saat menggunakan 'Get Info', ia melaporkan ukuran yang salah hanya 8GB, meskipun menunjukkan ukuran yang benar 240GB di bilah status Finder. Saya memperbaikinya dengan mengklik Dapatkan Info di folder Pengguna, yang kemudian dihitung dengan benar dan memperbaiki ukuran yang salah dilaporkan oleh Home Directory.

Morgan
sumber