Gzip: differenze tra le versioni

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Dalfi85 (discussione | contributi)
Nessun oggetto della modifica
Riga 1: Riga 1:
{{Infobox formato
{{titolo minuscolo}}
|nome= GZIP

|icona=
{{tmp|Infobox formato}}
|estensione=<tt>.gz</tt>

|mime= application/x-gzip
{{Compressione |
|sviluppatore= [[Jean-Loup Gailly]], [[Mark Adler]]
compressione = GZIP |
|typecode=
sviluppatore = [[Jean-Loup Gailly]], [[Mark Adler]] |
tipo = [[Compressione dei dati]] |
|tipo= [[Compressione dei dati]]
}}
lossy = Lossless |
licenza = [[GNU General Public License|GPL]] |
website = http://www.gzip.org }}


'''gzip''' è un programma [[Software libero|libero]] per la [[compressione dei dati]]. Il suo nome è la contrazione di [[GNU]] zip. Fu inizialmente creato da [[Jean-Loup Gailly]] e [[Mark Adler]]. La versione 0.1 fu rilasciata pubblicamente il [[31 ottobre]] [[1992]]. La versione 1.0 vide invece la luce nel [[febbraio]] del [[1993]].
'''gzip''' è un programma [[Software libero|libero]] per la [[compressione dei dati]]. Il suo nome è la contrazione di [[GNU]] zip. Fu inizialmente creato da [[Jean-Loup Gailly]] e [[Mark Adler]]. La versione 0.1 fu rilasciata pubblicamente il [[31 ottobre]] [[1992]]. La versione 1.0 vide invece la luce nel [[febbraio]] del [[1993]].

Versione delle 20:09, 4 giu 2009

Template:Infobox formato

gzip è un programma libero per la compressione dei dati. Il suo nome è la contrazione di GNU zip. Fu inizialmente creato da Jean-Loup Gailly e Mark Adler. La versione 0.1 fu rilasciata pubblicamente il 31 ottobre 1992. La versione 1.0 vide invece la luce nel febbraio del 1993.

Descrizione

Normalmente ogni archivio verrà rimpiazzato da uno con l'estensione .gz, mantenendo le stesse proprietà, date d'accesso e di modifica (l'estensione predefinita è gz per Linux o OpenVMS, z per MS-DOS, OS/2 FAT, Windows NT FAT e Atari). Qualora il nome file compresso fosse troppo lungo, esso verrà troncato.

Se non è specificato alcun file, o se un nome di file è "-", lo standard input è compresso nello standard output. Gzip proverà a comprimere solo i file regolari. In particolare ignorerà i link simbolici.

Se il nome del file compresso è troppo lungo per il file system, gzip lo troncherà . Gzip prova a troncare solo le parti del nome del file più lunghe di 3 caratteri (una parte è delimitata da puntini). Se il nome consiste solo di parti piccole, le più lunghe sono troncate. Per esempio, se i nomi di file sono limitati a 14 caratteri, gzip.msdos.exe sarà compresso in gzi.msd.exe.gz. I nomi non sono troncati nei sistemi che non hanno limite sulla lunghezza del nome del file.

Di default, gzip mantiene il nome e la time stamp (data e ora di creazione) originali del file nel file compresso. Queste sono usate quando si decomprime il file con l'opzione -N. Ciò è utile quando il nome del file compresso è stato troncato o quando le date non sono state preservate dopo un trasferimento del file.

I file compressi possono essere riportati alla loro forma originale usando gzip -d o gunzip o zcat. Se il nome originale salvato nel file compresso non è adatto per questo file system, sarà costruito un nuovo nome da quello originale per renderlo legale.

gunzip accetta una lista di file nella linea di comando e rimpiazza ogni file il cui nome finisce con .gz, -gz, .z, -z, _z o .Z e che inizia con il magic number corretto con un file decompresso senza l'estensione originale. gunzip riconosce anche le estensioni speciali .tgz e .taz come abbreviazioni per .tar.gz e .tar.Z rispettivamente. Quando comprime, gzip usa se necessario l'estensione .tgz invece di troncare un file con estensione .tar.

gunzip attualmente può decomprimere file creati da gzip, ZIP, compress, compress -H o pack. Il rilevamento del formato d'ingresso è automatico. Quando si usano i primi due formati, gunzip verifica un CRC a 32 bit. Per pack, gunzip verifica la lunghezza del file decompresso. Il formato standard compress non è stato progettato per permettere verifiche sulla consistenza. Comunque gunzip è in grado qualche volta di rivelare un file .Z con errori. Se si ottiene un errore quando si decomprime un file .Z, non si assuma che il file sia corretto solo perché l'uncompress standard non rileva l'errore. Ciò in genere significa solo che l'uncompress standard non verifica il suo input, e genera tranquillamente spazzatura in output. Il formato SCO compress -H (metodo di compressione lzh) non include un CRC ma permette comunque qualche verifica sulla consistenza.

I file creati da zip possono essere decompressi da gzip solo se contengono un unico file compresso con il metodo di "deflation". Questa possibilità è pensata solo per aiutare la conversione dei file tar.zip nel formato tar.gz. Per decomprimere file zip con più membri si usi unzip invece di gunzip.

zcat è identico a gunzip -c (su alcuni sistemi, zcat può essere installato come gzcat per preservare il link originale a compress). zcat decomprime o una lista di file nella linea di comando o il suo standard input e scrive i dati decompressi nello standard output. zcat decomprimerà i file che hanno il magic number corretto che abbiano o meno il suffisso .gz.

Gzip usa l'algoritmo di Lempel-Ziv usato in zip e PKZIP. L'ammontare della compressione ottenuta dipende dalla dimensione dell'ingresso e dalla distribuzione delle sotto-stringhe comuni. Tipicamente, testi come codici sorgenti o Inglesi sono ridotti del 60-70%. La compressione è generalmente molto migliore di quella ottenibile da LZW (usato in compress), codifica di Huffman (usata in pack), o codifica di Huffman adattativa (compact).

La compressione è sempre fatta, perfino se il file compresso è leggermente più grande del file originale. Il caso peggiore di espansione è di alcuni bit per il gzip file header, più 5 byte ogni blocco da 32K, o un rapporto di espansione del 0.015% per file più grandi. Si noti che il numero di disk block realmente usati non viene mai incrementato. gzip preserva il mode, le proprietà e le date dei file quando li comprime o li decomprime.

Formato del file

Il programma riduce la dimensione dei file usando l'algoritmo DEFLATE che unisce LZ77 e la Codifica di Huffman. DEFLATE era previsto come un sostituto del LZW e altri algoritmi di compressione protetti da brevetti che all'epoca limitavano l'usabilità della compressione e altri famosi tipi di archivi.

"gzip" è spesso riferito al formato di file gzip, che è formato da:

  • una intestazione a 10-byte, contenente un numero magico, una versione del programma e un timestamp
  • intestazioni extra addizionali, come il nome originale del file,
  • un corpo centrale, contenente un insieme di dati compressi
  • una fine a 8 byte, contenente un checksum CRC-32 e la lunghezza dei dati originali

Sebbene questo formato di file permetta un concatenamento di più flussi in ingresso (Che vengono decompressi e contatenati come fossero un unico file ), gzip è di solito usato per comprimere un solo file. Gli archivi compressi sono di solito creati impachettando una collezione di file tramite il tar e successivamente comprimendo l'archivio tar ottenuto. Il file .tar.gz o .tgz è solitamente chiamato un "tarball compresso".

gzip non deve essere confuso con il formato di file ZIP, il quale pure utilizza il DEFLATE. Il formato ZIP può contenere collezioni di file senza un archivio esterno, ma è meno compatto di quello compresso con l'unione di tar e gzip in quanto comprime i file individualmente e non può avvantaggiarsi delle ridondanze esistenti tra i vari file (solid compression).

zlib è una astrazione della libreria dell'algoritmo DEFLATE la quale include il supporto sia per il formato gzip, ed un semplice formato di flusso nelle sue API. Il formato di flusso zlib, DEFLATE e il formato di file gzip furono standardizzati rispettivamente come RFC 1950, RFC 1951 e RFC 1952.

Notare che siccome l'intestazione del file in formato gzip contiene il timestamp, è necessario utilizzare l'utility zcmp o zdiff per determinare se due file "gzippati" si scompattino nello stesso flusso di dati senza avere false risposte.

Altri usi

Il protocollo HTTP/1.1 permette ai client di richiedere arbitrariamente il contenuto compresso al server. Lo standard prevede due metodi di compressione: "gzip" (il contenuto incluso nel flusso gzip) e "deflate" (il contenuto in un formato grezzo, senza intestazione). Sono entrambi supportati da molte librerie di client e quasi tutti i browser moderni.

Fin dai tardi anni 90, bzip2, una utility di compressione di file basata sull'algoritmo block-sorting, ha guadagnato una certa popolarità come sostituto del gzip. Produce file considerevolmente più piccoli (specialmente per codici sorgenti e altri testi strutturati), ma al costo di un maggiore consumo di memoria e tempo di calcolo (Addirittura fino a 4 volte maggiore). I tarball bzip2-compressed sono solitamente chiamati.tar.bz2.

AdvanceCOMP ha una implementazione DEFLATE che produce file compatibili con gzip con una compressione migliore che lo gzip stesso.

Il corrispondente programma per scompattare file compressi con gzip è gunzip.

Voci correlate

Collegamenti esterni

  Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero