Comprimere un file può romperlo?


85

Ho appena chiesto a qualcuno di inviarmi un psdfile compresso .

Hanno rifiutato, citando che zippare un file può spezzare i caratteri .

Ho pensato che zippare un file fosse perfettamente reversibile, quindi perché è comunemente usato. Penso che l'altra persona non sia corretta.

C'è qualche verità sul zippare rompendo il contenuto dei suoi file?


51
Forse l'altra persona ha confuso zippare un file (lossless) con compressione jpeg (lossy) che può rendere brutto il test.
Matt H,

So che una volta ho avuto problemi di compatibilità per i file zip, perché il formato del file è utilizzato su tutte le piattaforme ...
jokoon

1
Ho sicuramente sperimentato alcuni casi "patologici" in cui sia le strutture integrate di Winrar che quelle di WinXP hanno rotto i file (decine di migliaia in un singolo file zip). Questo è stato 4-5 anni fa e l' unica soluzione che ho trovato in quel momento era usare 7-zip. Come meglio riesco a ricordare, anche 7-Zip non è stato in grado di decomprimere con successo i file creati dalle altre routine, suggerendo che l'errore era nella compressione, non nella decompressione. Ovviamente ho scelto di utilizzare 7-zip per entrambi i lati nel sistema di produzione comunque.
FumbleFingers

1
@jokoon: non sono sicuro che sia valido parlare di un formato di file ... utilizzato su tutte le piattaforme . Esistono diversi formati interni usati nei file zip, ed è sempre possibile che un archivio possa essere creato da una routine di impacchettamento usando un formato che è imperfettamente supportato da qualche altra routine che ti capita di usare al momento del disimballaggio.
FumbleFingers

@Armeggiare; Tuttavia, qualsiasi archiviatore decente dovrebbe rilevare la modifica dell'hash e segnalare l'operazione come un errore, non lasciare un file rotto in giro.
Foshi,

Risposte:


133

No, zippare un file non può romperlo. Se il file zip non è danneggiato, verrà riprodotto lo stesso file quando decompresso.

In questo caso, la differenza tra i caratteri installati sui due diversi sistemi può causare problemi, ma ciò è completamente estraneo al processo zip / unzip.


4
Questo è quello che sospettavo. Grazie per la tua risposta.
alex

34
Inoltre, alcuni formati zip supportano la ridondanza, il che significa che la memorizzazione come zip può effettivamente essere più sicura della memorizzazione del file semplice.
BlueRaja - Danny Pflughoeft

Non dovresti dire di no rapidamente, ci sono molte implementazioni di file zippare / decomprimere là fuori, contando tutti i sistemi operativi esistenti e altre cose che possono creare file zip, non sarei sorpreso che alcune implementazioni non si preoccupino di altre .
jokoon

@jokoon: quindi quei file sarebbero danneggiati, che esclude esplicitamente
mbx

3
-1 In teoria questo è vero, ma in pratica ci sono problemi con i font Mac che vengono decompressi su un PC come 0 byte. Ciò è dovuto alla creazione di un fork di risorse. Provalo tu stesso e vedi.
Django Reinhardt,

80

Nell'uso generale , zip è senza perdita di dati (presupponendo un'implementazione senza errori), ma esiste uno scenario che potrebbe applicarsi alla perdita di dati: flussi di dati alternativi NTFS. Questa funzionalità poco utilizzata consente a un singolo file di avere più set indipendenti di contenuti. La maggior parte del codice vedrà sempre solo lo stream senza nome , ma altri possono esistere.

Così; se un programma ha deciso di archiviare i dati in un flusso di dati alternativo NTFS, il client zip non vedrà quella parte (deve richiederlo esplicitamente e RAR è l'unico che lo fa attualmente ).

Ma per sottolineare: questo è usato molto raramente, e normalmente non con cose come PSD. Sospetto che il tuo amico / socio abbia semplicemente torto.


11
Wow, questa è una conoscenza totalmente nuova per me.
kizzx2,

5
Nuovo per me e bizzarro. Quando un file non è un file? Quando il suo contenuto muta a volontà. Ho sentito parlare di peggiori malfunzionamenti, ma non molti.
msw,

7
@msw: non mutano a piacimento; semplicemente: può esserci più di un pezzo di dati associato a un singolo record di file. Quasi sempre ce n'è esattamente uno (è usato molto raramente), ma ...
Marc Gravell

4
Torna a SO! Troppo tecnico! (sto scherzando ovviamente;)
Byron Whitlock,


32

Ci sono circostanze in cui un font Mac potrebbe non essere identico se è zippato e quindi decompresso. Ciò potrebbe non risolverlo, ma contrariamente ad alcune affermazioni precedenti, il processo potrebbe non fornire un file identico.

Le circostanze sono discusse qui:

http://xahlee.org/UnixResource_dir/macosx.html

http://ask.metafilter.com/59789/How-to-email-my-font

Ma in breve:

  1. Se sono caratteri molto più vecchi che contengono fork di risorse e l'utente ha una versione precedente di Mac OS X, in genere 10.4 o precedente. I caratteri legacy come questo funzionano su OS X sebbene fossero originariamente destinati a OS 9 e versioni precedenti del sistema operativo Macintosh. È del tutto probabile (e, nella mia esperienza, comune) che alcune persone stiano ancora usando una libreria di font che hanno costruito fino a 20 anni fa. In genere si tratta di artisti e tipi di art director. Ad esempio, ho alcuni caratteri con le date di creazione del 1993 e centinaia con le date di creazione del 1998, la maggior parte con fork di risorse. Sicuramente avrei dovuto convertirli in formati più moderni o smettere di usarli, ma ammettiamolo: una volta acquistata la libreria di font Adobe, non vorrai più acquistarla. Durante i miei anni di lavoro con art director nella pubblicità,

  2. Alcuni metadati verranno eliminati in alcune versioni del sistema operativo. I metadati possono essere elementi aggiunti al campo informazioni del file. Ciò non interromperà il file, ma di nuovo, né lo zip-unzip di andata e ritorno produrrà un file identico.

PS: sto assumendo qui che se uno sta comprimendo un file PSD per la consegna a un'altra persona, che non è stato appiattito e che il carattere non è stato convertito in struttura, il che significa che uno consegnerebbe anche i file dei caratteri con il PSD in modo che la persona sul lato ricevente possa apportare le proprie modifiche al file. Questa è una pratica comune.


2
+1 - Vorrei poter dare abbastanza punti per spingerlo in cima alla pila. Mac OS ha varianti di tipo Type 1 e TrueType in cui i dati dei font sono memorizzati nel fork delle risorse. Mentre gli strumenti zip / unzip nativi nel sistema operativo possono gestire questa situazione con garbo, non tutti gli strumenti (in particolare gli strumenti da riga di comando portati su OS X) lo faranno. Quel che è peggio, non comprimere i caratteri e provare a inviarli via e-mail o FTP li romperà!
Afrazier

1
Ma il problema qui sembra essere il modo in cui li comprimi, non se puoi. Sembra avere bisogno di un programma che comprenda le forcelle delle risorse e devi sapere come usarlo. Lo sto leggendo bene?
uSlackr,

@uSlackr, giusto, ma il problema persiste alla fine della ricezione. Se l'archivio viene quindi spostato su Windows, probabilmente otterrai una pila di file di caratteri inutili perché anche se Windows (in particolare NTFS) consente più flussi di dati in un file, i caratteri su Windows non funzionano in questo modo. Tuttavia, è probabile che il file PSD stesso sia portatile tra Mac e Windows.
RBerteig,

+1 - ad esempio, salva i caratteri del tuo Mac su un'unità di rete e poi vedi quanto sono grandi da un PC Windows o Linux - 0 byte! È la cosa del fork delle risorse che confonde l'idea di "funziona".
ʍǝɥʇɐɯ

Sì, è un fatto ben noto nel mio settore che i caratteri Mac non si comprimono bene. Spesso un utente di PC decomprime questi 0 byte.
Django Reinhardt,

14

ZIP utilizza il checksum per verificare se il file decompresso è esattamente lo stesso di prima dell'imballaggio.

Quindi, se fosse stato modificato per qualche motivo (archivio rotto, per esempio), non sarebbe nemmeno decompresso.


irrilevante poiché zip utilizza la compressione senza perdita di dati (o "archiviazione", la compressione potrebbe essere disabilitata). il checksum è solo essere in grado di fornire un feedback se qualcosa è andato storto.
Akira,

13
Perdona la pedanteria, ma ZIP non usa un checksum: utilizza un controllo di ridondanza ciclico a 32 bit (aka CRC-32 ) che rileva una gamma molto più ampia di errori.
Bevan,

5
Il termine "checksum" è chiaramente diventato un po 'più ampio nel significato rispetto alla sua definizione originale se le persone possono [e lo fanno] chiamare i risultati delle funzioni crittografiche di hash "checksum".
Casuale 832,

9

Solo se stanno facendo qualcosa di stupido come fare la conversione in modalità testo o se c'è una zip / decompressione rotta da qualche parte che viene confusa da una zip incorporata. (Tali bug si sono verificati in passato, vale a dire forse 10 anni fa.)


4

Zip utilizza un algoritmo di compressione senza perdite per garantire che i dati restituiti siano identici a quelli inseriti.

(A proposito, altre tecnologie come jpg, mpeg, mp3, usano tecniche con perdita per comprimere con la teoria che i nostri occhi e le nostre orecchie non sono così sensibili)


0

L'unica verità che ho potuto vedere nell'affermazione "zippare i caratteri di rottura" è se il formato di file PSD stesso ha una versione o un'opzione "compressa" che puoi abilitare in qualunque programma crei questi file e questa opzione in qualche modo gestisce i caratteri in modo diverso.

L'uso di qualsiasi programma zip dovrebbe andare bene tranne se è difettoso.

In risposta a Marc, ci sono anche potenziali problemi di filesystem su filesystem EXT se provi a comprimere una struttura di directory contenente collegamenti soft e hard in un formato zippato che non li capisce (motivo per cui invece faccio sempre un .tar.gz di un .zip lì). Inoltre, zippare i soft link con percorsi relativi, quindi decomprimerli da qualche altra parte, ovviamente non funzionerà, ma non è colpa del programma zip.


0

Se hanno avuto quel problema prima (zippare corrompendo un PSD) allora il loro software del compressore è difettoso, non stanno includendo tutti i file di cui hanno bisogno sul PSD e / o i loro computer sono infettati da un virus.

Vorrei chiedere loro se hanno avuto corruzioni simili spostando i file su dischi USB, solo per scartare quest'ultima opzione.


0

Solo per aggiungere un altro avvertimento per completezza: lo zipping può causare la perdita dei metadati del file, come permessi o tempo dell'ultimo accesso.

Non credo che sia generalmente rilevante per i file e i caratteri PSD.


Penso che ci sia un malinteso nel concetto di algoritmo di compressione senza perdita di dati e programmi che svolgono questo compito. Senza perdita di dati, il flusso binario che viene compresso verrà decompresso nello stesso flusso binario di output. Le meta informazioni dipendono dal sistema operativo e devono essere gestite dal sistema operativo e / o dall'applicazione.
Bora,

1
Grazie, @Bora, ma non ho fraintendimenti. Mi rendo conto che zippare non influisce sui dati effettivi nel file. Sto suggerendo una causa "esterna" che potrebbe ingannare le persone nel pensare che zip abbia danneggiato i loro file e directory. In passato sono stato catturato ripristinando backup compressi, solo per scoprire che le mie applicazioni non funzionavano più, perché dipendono da metadati che non ho trasmesso. (Non un malinteso di base da parte mia, ma solo una svista.)
Pensiero strano

0

Zip può corrompere i nomi dei file. Zip in quanto tale non utilizza Unicode. La codifica dei nomi dei file non è specificata e su Windows viene utilizzata la locale corrente.

Pertanto, quando trasferito su un sistema diverso, i nomi dei file verranno incasinati.

C'è un'estensione al formato Zip che i programmi più recenti (winzip dalla versione 11 credo) usano.

Preferisco 7z prima di avere una zip piena di nomi giapponesi incapaci di decomprimerlo.


0

Un file zip dovrebbe essere in grado di riprodurre esattamente il contenuto.

Una nota correlata, tuttavia: è più difficile ripristinare i dati se un file zip viene danneggiato , piuttosto che se i dati fossero nel formato originale. Perché? Molti formati di file hanno una ridondanza incorporata e sono progettati in modo tale da correggere errori minori o errori minori non critici.

Immagina un file video. Nella maggior parte dei formati, se una piccola parte viene danneggiata, vedrai uno sfarfallio temporaneo in quella piccola porzione del video ma puoi comunque guardare il video. Ma se il file video viene compresso, la capacità di correzione degli errori viene ridotta e, a seconda dell'entità della corruzione, potresti semplicemente non essere in grado di decomprimere il file / guardare il video. (Questo è un esempio inventato in quanto è inutile comprimere la maggior parte dei formati video in ogni caso).

Questo vale per qualsiasi formato di compressione: la compressione per definizione riduce la ridondanza e quindi le capacità di correzione degli errori ed è un compromesso.


Come detto sopra, alcuni formati di file zip supportano la ridondanza. Questo può renderlo ancora più sicuro del formato originale.
DMan,
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.