Mac OS X non segnala correttamente le dimensioni della directory?


17

In Finder, ho notato che se duplico alcuni file .app (nella cartella Applicazioni), Finder mostrerà che il file .app duplicato non ha le stesse dimensioni dell'originale. Questa discrepanza nella dimensione del file non si verifica per tutti i file .app che duplico, ma sembra che più è grande il file .app, più è probabile che il duplicato non mostrerà la stessa dimensione dell'originale. Ecco alcuni esempi:

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

Ora sono nuovo sui Mac e, dopo aver notato questo problema di discrepanza nella dimensione dei file, ho scoperto che i file .app non sono in realtà file - sono davvero directory, ma Finder li visualizza come se fossero file. Quindi ho pensato che forse il processo di duplicazione non ha copiato tutto il contenuto della directory .app originale e questo ha spiegato la differenza nella "dimensione del file". Ma poi ho scaricato e installato DeltaWalker, che è uno strumento diff file / cartella, e DeltaWalker ha detto che le directory .app duplicate erano esattamente le stesse delle directory .app originali. Quindi il processo di duplicazione ha funzionato perfettamente, e quindi sembra essere un problema con le dimensioni dei file di report di Finder.

Ho anche controllato le dimensioni delle directory in Terminal, usando il comando "du", e anche questo mostra discrepanze nelle dimensioni tra le directory originali e duplicate:

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/

Inoltre, non sono solo le directory .app. Ho duplicato la mia directory / Developer / Library, ed ecco cosa ha detto du:

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

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

Qualcuno può spiegare perché Mac OS X non sembra riportare correttamente le dimensioni delle directory? È un bug (difficile da credere per qualcosa di così semplice) o mi sto perdendo qualcosa (essendo un nuovo utente Mac)?

(Sto eseguendo Mac OS X Lion 10.7.2)


AGGIORNAMENTO in risposta a elofturtle:

La cosa più strana è che Finder non ha coerenza. Ho appena fatto 2 duplicati di GarageBand.app e poi ho fatto 2 duplicati di uno dei duplicati. Finder visualizza ogni singolo duplicato con dimensioni diverse:

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)

Inoltre, "GarageBand copy 3.app" è più grande di "GarageBand copy 2.app", mentre "GarageBand copy 4.app" è più piccolo di "GarageBand copy 2.app". Deve essere un bug nel Finder.

Ecco cosa dice "du -k" su tutti loro:

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/

Almeno dice che tutti i duplicati hanno le stesse dimensioni, ma non sono le stesse dimensioni dell'originale.


Ho il sospetto che questo finirà per hardlink e symlink, e l'uno o l'altro di quelli che vengono convertiti in copie di file separate quando duplicate quei bundle .app. A proposito, li stai duplicando nello stesso volume (partizione?).
Spiff,

Di seguito manca qualcosa nella mia risposta? Ho l'impressione che sia una risposta completa alla tua domanda, ma finora non ci sono stati commenti da te. per favore, potresti farmelo sapere?
Tonin

1
Mi scuso per il ritardo. La tua risposta è arrivata dopo che avevo perso interesse per la domanda. Ma la tua risposta è superba, molto dettagliata e risponde pienamente alla mia domanda. Grazie mille e dovrò ricordare che il Finder mostra dimensioni non compresse anche se il file / la cartella sono effettivamente compressi.
pacoverflow,

Ricodificando questo, forse avrei dovuto taggarlo [copia]? - Ma a scapito di quale altro tag?
Arne Stenström,

Risposte:


13

Le differenze derivano da diversi motivi: diversi modi di conteggio, diversi strumenti, compressione e ciò che sembra un bug.

La prima differenza di dimensioni che vedi sembra essere un bug nel Finder . Le dimensioni dei file mostrate dal Finder sono in qualche modo calcolate in tempo reale e memorizzate nella cache dei .DS_Storefile. Per qualche motivo, durante la duplicazione di una grande applicazione / cartella, il Finder calcola la sua dimensione durante il processo di copia e memorizza nella cache la dimensione, quindi incompleta. Mostra quindi quella dimensione in grigio nelle finestre del Finder, grigia che significa che il Finder sa che il contenuto è cambiato dall'ultimo calcolo delle dimensioni ma non lo ha ancora ricalcolato .

L'unico modo che ho trovato per farlo ricalcolare correttamente la dimensione è quello di eliminare il .DS_Storefile nella cartella dell'applicazione, quindi uscire dal Finder (ad esempio da Activity Monitor) e riavviarlo nuovamente (dall'icona del Dock). Se non elimini il .DS_Storefile, rimane comunque in grigio. Forse aspettare un po 'di tempo (ore, giorni, riavvio, ...) farà sì che il Finder lo faccia da solo.

Successivamente, dovresti vedere che tutte le dimensioni riportate dal Finder sono uguali.

Quindi sì, sembra un bug del Finder, almeno in OSX Lion (testato con 10.7.4 qui, Finder versione 10.7.3). Puoi anche vedere questo thread che riporta lo stesso tipo di comportamento.

Quindi, consideriamo lo dustrumento. All'inizio, ho pensato che la differenza che vediamo potesse essere spiegata dalla differenza tra dimensioni logiche e fisiche degli oggetti da copiare. La dimensione logica è la dimensione reale dell'elemento, ovvero ogni singolo bit di informazione che contiene sommato insieme. La dimensione fisica è la dimensione dell'elemento sul disco, in cui ogni bit di informazione è scritto su un settore del disco.

Ad esempio, un file contenente un singolo carattere finirebbe per avere una dimensione logica di 1 byte, ma una dimensione fisica di 512 byte o addirittura 4096 byte quando effettivamente scritto su disco. La dimensione fisica è generalmente maggiore della dimensione logica (e dipende dalla dimensione effettiva del settore / blocco del disco o del file system). Questo è spiegato in maggior dettaglio in questo altro thread . La dimensione logica potrebbe essere maggiore nel caso di file sparsi , ma HFS + non sembra supportare tale funzionalità.

dumostra solo le dimensioni fisiche (e puoi dire che cos'è un BLOCKSIZE). Puoi vedere che la dimensione indicata da duè sempre più grande (o, eccezionalmente, uguale) dell'originale. Ciò è dovuto alla frammentazione del file system e dello spazio su disco. Quando copi su un file (in realtà un mucchio di file, poiché un'applicazione è una directory) vengono allocati nuovi settori sul disco e, quando si verifica la frammentazione , il numero di blocchi utilizzati è in genere superiore a quello dell'elemento originale. Alcune persone lo chiamano File Slack .

Ora, torniamo al Finder. Se apri la finestra Ottieni informazioni delle Applicazioni duplicate, vedrai che il Finder sta effettivamente riportando sia la dimensione Logica che Fisica dell'elemento selezionato. Che quindi ha senso. Sarai anche in grado di confrontare le dimensioni fisiche riportate dal Finder e quelle riportate duse fai un po 'di matematica.

Perché fare un po 'di matematica? Perché il Finder mostra le dimensioni del file in kB, MB o GB dove le duriporta in kiB, MiB o GiB. Questi sono i prefissi binari IEC che dovrebbero essere utilizzati per calcolare e visualizzare unità di informazioni digitali.

Ma, in realtà, non sono sicuro che File Slack sia coinvolto qui, c'è qualcos'altro. I volumi HFS + consentono la compressione , eseguita in modo trasparente e Apple lo utilizza per gli elementi originali installati dal sistema operativo. Quindi, quando i file vengono copiati utilizzando strumenti standard, la compressione non viene più utilizzata (per impostazione predefinita, per essere compatibile con le versioni precedenti). Se si desidera mantenere la compressione su tali file, è necessario utilizzare il dittocomando anziché cpo qualsiasi azione del Finder. Questo è spiegato in questa recensione .

Ecco l'output della copia di iTunes.app usando le diverse tecniche. Vedrai che idem rende l'applicazione esattamente della stessa dimensione, preservando la compressione, dove cpno. E puoi anche rimuovere il binario per l'arco che non ti serve, quindi ridurre l'intera dimensione):

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

Grazie a @DanPritts per la sua risposta sul mio post complementare .


Non è il contrario? Il Finder mostra i prefissi SI attuali.
Daniel Beck

I file sparsi ( non i fasci / le immagini sparsi di OS X) avrebbero dimensioni logiche maggiori di quelle fisiche?
Daniel Beck

Sì, hai ragione, Finder mostra i prefissi SI e duIEC, correggerò il mio post.
Tonin

@DanielBeck File sparsi, in teoria potrebbe essere, sì, ma che tipo di file un'applicazione OSX avrebbe come file sparsi? Secondo Wikipedia , i file sparsi non sono supportati su HFS +.
Tonin

Quel paragrafo si legge come generalmente applicabile ( dipende dalla dimensione effettiva del settore / blocco del disco o del file system ), quindi è per questo che volevo menzionarlo.
Daniel Beck

1

È un orribile difetto / errore in OS X. Il modo più semplice per vederlo è duplicare un grande pacchetto di applicazioni, quindi mostrare il contenuto ed eliminare un enorme file dall'interno. Lo spazio non verrà ripristinato. Il file è ancora enorme. Ad esempio, se si dispone di un pacchetto di applicazioni da 3,5 GB, si mostrano i contenuti, quindi si rimuovono 3 GB da esso, ora si dovrebbe avere un'applicazione con le dimensioni del file di 500 MB. Non lo farai. Sarà ancora 3,5 GB.


Per ricalcolare le dimensioni selezionare Calcola tutte le dimensioni nelle opzioni di visualizzazione della cartella. Vedi apple.stackexchange.com/a/227173/156178
asmaier

0

Questa è fondamentalmente un'ipotesi, ma vedo due possibilità:

  1. Alcuni dati sono stati eliminati ma non sono stati allocati nell'originale e non vengono copiati. Tuttavia, viene visualizzato in alcune ricerche sull'utilizzo del disco, ma non in altre (parametri diversi dati a du o a qualunque OS X utilizzi internamente).
  2. Alcuni dati vengono collegati alla posizione originale e ciò influisce sulla dimensione percepita in diversi strumenti.

Se (1) dovresti probabilmente ottenere risultati diversi facendo una terza copia e confrontando le copie.


Siamo spiacenti, non riesco a far apparire correttamente i blocchi di codice multilinea in un commento, quindi proverò a modificare il mio post originale.
pacoverflow,

Non mi sarei aspettato che i duplicati fossero più grandi dell'originale: - / Sembra degno di una segnalazione di bug, ma scommetto che le possibilità di ottenere un feedback sul funzionamento interno di Finder causando questo sono scarse. Spero che lo diano un'occhiata, comunque.
elofturtle,

0

In primo luogo, devi essere consapevole del fatto che i file .app per Mac sono in realtà Directory , non binari compilati come i file .exe di Windows. Il Finder ti nasconde questo fatto per le cartelle chiamate * .app.

ad es. (dal terminale)

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

Sono abbastanza sicuro che ciò che sta accadendo è che Finder / Get Info sta usando un euristico non molto intelligente per calcolare la dimensione della cartella .app. Ciò significa che non è necessario enumerare ogni singola sottocartella e file e sommare tutte quelle dimensioni.

La mia ipotesi è che la stima sulla copia sia corretta perché di recente OSX ha dovuto ispezionare tutti i file al suo interno quando è stata eseguita la copia, mentre sull'originale OSX potrebbe non aver mai dovuto farlo (ad es. Con installazioni di fabbrica)


-1

Ho avuto questo problema con la mia directory Home dopo averlo spostato su un HDD interno dopo aver installato Yosemite sull'SSD. Quando si utilizza "Ottieni informazioni", è stata segnalata una dimensione errata di soli 8 GB, sebbene nella barra di stato di Finder sia stata visualizzata la dimensione corretta di 240 GB. L'ho risolto facendo clic su Ottieni informazioni nella cartella Utenti, che quindi calcolava correttamente e riparava la dimensione errata segnalata dalla directory principale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.