TAR, ZIP, GZIP

GZIP è un programma che comprime un singolo file. Al contrario di TAR, GZIP sostituisce il file originale con la sua versione compressa, che avrà l'estensione .gz. Si possono aggiungere dei flag numerici da -1 a -9, dove -1 indica una compressione veloce ma meno efficiente, mentre -9 una compressione lenta ma più efficiente. Il flag -r, invece, comprime/decomprime ricorsivamente tutti i files nella directory corrente e nelle sue sotto-directories. Per estrarre il file si usa il comando GUNZIP, che rimpiazza l'archivio con il file decompresso.

	gzip myfile.xml
	
	gunzip myfile.xml.gz
	
	gzip -r mydirectory
				

È comune applicare il comando GZIP ad un archivio TAR: ecco perché spesso si vedono files con estensione .tar.gz nei sistemi Linux. Per estrarre il contenuto di tali files si possono applicare due comandi in sequenza o un unico comando con una pipe. quando si usa un solo comando occorre specificare il flag -c, che manda in pipe il file decompresso direttamente al comando TAR e non cancella il file di input.

	gunzip something.tar.gz
	tar xvf something.tar
	
	gunzip -c something.tar.gz | tar xvf -
				

Il comando TAR (tape archive) crea un archivio da un insieme di files sorgenti. I files originali non vengono cancellati. Si può comprimere una directory con tutti i suoi files e sotto-direcories, oppure si può specificare un file specifico oppure tutti i files con una certa estensione. Il flag c indica la creazione di un nuovo archivio, v indica un output verboso mentre f dice di scrivere l'archivio in un file.

	tar cvf alldocs.tar *.doc
	tar cvf panda.tar panda/
				

Per comprimere un file tar si usa il flag z, che usa la compressione GZIP, quindi il file dovrebbe avere una estensione .gz. Inoltre, si può aggiungere la data al nome dell' archivio usando il comando date, che consente quindi di creare backup incrementali e di ordinare gli archivi alfabeticamente.

	tar cvzf alldocs.tar.gz *.doc 	
	
	tar -czvf nome_tarball.`date +%Y%m%d`.tgz *.doc
				

Per estrarre il contenuto si usa il flag x (extract), mentre per elencare il contenuto dell'archivio si usa il flag t (type):

	tar tvf alldocs.tar 
	
	tar xvf panda.tar			
				

Per comprimere con bzip si usa il flag j e l' estensione dovrebbe essere .tbz. Vediamo adesso due script Bash che consentono di comprimere tutte le directories che iniziano con un dato nome e di decomprimere tutti gli archivi con estensione gz.

	#!/bin/sh
	# FABRIZIO CELLI
	
	# all XML files
	LIST=`find . -type d -name "*_toCompress"`
	
	# scan files
	for file in $LIST; do
		direct=${file}
		tar cvzf $direct.tar.gz $direct 
	done			
				

	#!/bin/sh
	# FABRIZIO CELLI
	
	# all XML files
	LIST=`find . -name "*.gz"`
	
	# scan files
	for file in $LIST; do
		direct=${file}
		tar xvzf $direct 
	done
				

I comandi ZIP e UNZIP lavorano come PKZIP e PKUNZIP in un ambiente DOS. Se si usa il flag -k, allora l'archivio può essere decompresso in DOS col comando PKUNZIP.

	zip archivio.zip file1 file2 file3
	
	unzip archivio.zip