Introduzione

Zip è il formato di file di archivio più utilizzato che supporta la compressione dei dati senza perdita di dati.

Un file Zip è un contenitore di dati contenente uno o più file o directory compressi. I file compressi (zippati) occupano meno spazio su disco e possono essere trasferiti da una macchina all'altra più rapidamente rispetto ai file non compressi. I file zip possono essere facilmente estratti in Windows, macOS e Linux utilizzando le utility disponibili per tutti i sistemi operativi.

In questo tutorial, ti mostreremo come comprimere (zip) file e directory in Linux usando il comando zip.

Comando Zip

zip è un'utilità della riga di comando che ti aiuta a creare archivi Zip.

Il comando zip assume la seguente forma di sintassi:

zip OPTIONS ARCHIVE_NAME FILES

Per creare un archivio Zip in una directory specifica, l'utente deve disporre delle autorizzazioni di scrittura per quella directory.

I file zip non supportano le informazioni sulla proprietà in stile Linux. I file estratti sono di proprietà dell'utente che esegue il comando.

Per conservare la proprietà e le autorizzazioni del file, utilizzare il comando tar.

L'utilità zip non è installata per impostazione predefinita nella maggior parte delle distribuzioni Linux, ma è possibile installarla facilmente utilizzando il gestore pacchetti della propria distribuzione.

Installare Zip su Ubuntu e Debian

sudo apt install zip

Installare Zip su CentOS e Fedora

sudo yum install zip

Come comprimere (ZIP) file e directory

Per comprimere uno o più file, specificare i file che si desidera aggiungere all'archivio separati da spazio, come mostrato di seguito:

zip archivename.zip filename1 filename2 filename3
adding: filename1 (deflated 63%)
adding: filename2 (stored 0%)
adding: filename3 (deflated 38%)

Per impostazione predefinita, il comando zip stampa i nomi dei file aggiunti all'archivio e il metodo di compressione. Spiegheremo i metodi di compressione e il livello più avanti in questa guida.

Quando si specifica il nome dell'archivio Zip se si omette l'estensione .zip, verrà aggiunto automaticamente a meno che il nome dell'archivio non contenga un punto ..

Per nascondere l'output del comandozip, utilizzare l'opzione -q:

zip -q archivename.zip filename1 filename2 filename3

Spesso creerai un archivio Zip di una directory che include il contenuto delle sottodirectory. L'opzione -r consente di attraversare in modo ricorsivo l'intera struttura della directory.

Per creare un archivio Zip di una directory dovrai usare:

zip -r archivename.zip directory_name

Puoi anche aggiungere più file e directory nello stesso archivio:

zip -r archivename.zip directory_name1 directory_name2 file1 file1

Metodi e livelli di compressione

Il metodo di compressione predefinito di Zip è deflate . Se l'utilità zip determina che un file non può essere compresso, semplicemente memorizza il file nell'archivio senza comprimerlo usando il metodo store . Nella maggior parte delle distribuzioni Linux l'utilità zip supporta anche il metodo di compressione bzip2 .

Per specificare un metodo di compressione, utilizzare l'opzione -Z.

zip -r -Z bzip2 archivename.zip directory_name
...
adding: sub_dir/ (stored 0%)
adding: sub_dir/file1 (bzipped 52%)
adding: sub_dir/file2 (bzipped 79%)

Il comando zip consente di specificare un livello di compressione utilizzando il numero con prefisso un trattino compreso tra 0 e 9. Il livello di compressione predefinito è -6. Durante l'utilizzo -0, tutti i file verranno archiviati senza compressione. -9 forzerà il comando zip a utilizzare una compressione ottimale per tutti i file.

Ad esempio, per utilizzare il livello di compressione -9, digitare qualcosa del genere:

zip -9 -r archivename.zip directory_name

Maggiore è il livello di compressione, più intenso è il processo zip della CPU e richiederà più tempo per il completamento.

Creare un file ZIP protetto da password

Se disponi di informazioni sensibili che devono essere archiviate nell'archivio, puoi crittografarle utilizzando l'opzione -e:

zip -e  archivename.zip directory_name

Ti verrà richiesto di inserire e verificare la password dell'archivio:

Enter password:
Verify password:

Creare un file zip diviso

Immagina di voler archiviare l'archivio Zip su un servizio di hosting di file che ha un limite di caricamento delle dimensioni del file di 1 GB e che l'archivio Zip è di 5 GB.

È possibile creare un nuovo file Zip diviso utilizzando l'opzione -s seguita dalla dimensione specificata. Il moltiplicatore può essere k (kilobyte), m (megabyte), g (gigabyte) o t (terabyte).

zip -s 1g -r archivename.zip directory_name

Il comando sopra continuerà a creare nuovi archivi in ​​un set dopo aver raggiunto il limite di dimensioni specificato.

archivename.zip
archivename.z01
archivename.z02
archivename.z03
archivename.z04

Esempi ZIP

Creare un archivio Zip di nome archivename.zip contenente tutti i file nella directory corrente:

zip archivename *

Come sopra, inclusi i file nascosti (file che iniziano con un punto):

zip archivename .* *

Creare un archivio Zip denominato archivename.zip contenente tutti i file MP3 nella directory corrente senza comprimere i file.

zip -0 archivename *.mp3

Conclusione

In Linux è possibile creare archivi Zip con il comando zip. Per estrarre un archivio ZIP su un sistema Linux, è possibile utilizzare il comando unzip.