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.