Zip è il formato di file di archivio più usato che supporta la compressione dei dati senza perdita di dati.
Un file Zip è un contenitore di dati contenente uno o più file compressi o directory. I file compressi (zippati) occupano meno spazio su disco e possono essere trasferiti da una macchina all’altra più rapidamente dei 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, vi mostreremo come zippare (comprimere) file e directory in Linux utilizzando il comando zip
.
comando zip #
zip
è un’utilità a riga di comando che aiuta a creare archivi Zip.
Il comando zip ha la seguente sintassi:
zip OPTIONS ARCHIVE_NAME FILES
Per creare un archivio Zip in una specifica directory l’utente deve avere i permessi di scrittura su quella directory.
I file Zip non supportano informazioni sulla proprietà in stile Linux. I file estratti sono di proprietà dell’utente che esegue il comando.
Per preservare la proprietà e i permessi dei file usare il comando tar
.
L’utilità zip
non è installata di default nella maggior parte delle distribuzioni Linux, ma si può facilmente installare usando il gestore dei 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 zippare file e directory #
Per zippare uno o più file, specificate i file che volete aggiungere all’archivio separati da uno spazio come mostrato qui sotto:
zip archivename.zip filename1 filename2 filename3
adding: filename1 (deflated 63%)adding: filename2 (stored 0%)adding: filename3 (deflated 38%)
Di default 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
questa verrà aggiunta automaticamente a meno che il nome dell’archivio non contenga un punto. zip archivename.zip filename
creerà un archivio con lo stesso nome come farebbe zip archivename filename
.
Per sopprimere l’output del comando zip
, usa 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
ti permette di attraversare ricorsivamente l’intera struttura della directory.
Per creare un archivio Zip di una directory dovresti 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, usa 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
ti permette di specificare un livello di compressione usando un numero preceduto da un trattino da 0 a 9. Il livello di compressione predefinito è -6
. Quando si usa -0
, tutti i file saranno memorizzati senza compressione. -9
forzerà il comando zip
a usare una compressione ottimale per tutti i file.
Per esempio, per usare il livello di compressione -9
, dovresti digitare qualcosa come questo:
zip -9 -r archivename.zip directory_name
Più alto è il livello di compressione, più intenso è il processo zip, e ci vorrà più tempo per completarlo.
Creazione di un file ZIP protetto da password #
Se hai informazioni sensibili che devono essere memorizzate nell’archivio puoi criptarle usando l’opzione -e
:
zip -e archivename.zip directory_name
Ti verrà richiesto di inserire e verificare la password dell’archivio:
Enter password:Verify password:
Creazione di un file Zip diviso #
Immagina di voler memorizzare l’archivio Zip su un servizio di file hosting che ha un limite di upload di 1GB e il tuo archivio Zip è di 5GB.
zip -s 1g -r archivename.zip directory_name
Il comando sopra continuerà a creare nuovi archivi in un set dopo che avrà raggiunto il limite di dimensione specificato.
archivename.ziparchivename.z01archivename.z02archivename.z03archivename.z04
ZIP Esempi #
Crea un archivio Zip chiamato 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 .* *
Crea un archivio Zip chiamato archivename.zip
contenente tutti i file MP3 nella directory corrente senza comprimere i file.
zip -0 archivename *.mp3
Conclusione #
In Linux puoi creare archivi Zip con il comando zip
.
Per estrarre un archivio ZIP su un sistema Linux, puoi usare il comando unzip .
Se vuoi saperne di più su Zip visita la pagina Zip Man.