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 pubblicata 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 riga 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 riga 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.