Estrarre e creare file .zip da linea di comando con Linux non è intuitivo tanto quanto l'uso dei programmi ad interfaccia grafica, ma basta memorizzare la sintassi dei comandi "zip" e "unzip" per raggiungere il risultato. Vediamo allora come zippare e unzippare da linea di comando con Linux
Nota: in questo articolo vedremo come zippare (comprimere) e unzippare (estrarre) file .zip da linea di comando con Linux. La procedura è stata testata con Ubuntu 17.04 e CentOS 7.3, ma la sintassi dei comandi è grossomodo inalterata da decenni, motivo per cui è presumibile che continui a rimanere la stessa negli anni a venire.
Per chi ha fretta
Se già siete esperti di Linux e cercate solo un "reminder" per la sintassi, eccovi serviti:
-
visualizzazione:
unzip -l "/percorso/completo/miofile.zip"
-
unzip:
unzip -o "/percorso/completo/miofile.zip" -d "/percorso/file/estratti/"
-
zip:
cd /percorso/cartella/file_da_zippare/ && zip -r -9 -FS -m "/percorso/completo/miofile.zip" .
Nel resto dell'articolo ne approfondiremo l'uso e spiegheremo il significato dei vari argomenti.
Passo 1: Aprire il terminale
Se state lavorando via SSH oppure con una edizione spiccatamente "server" (come Ubuntu Server), siete già davanti alla linea di comando, quindi andate oltre.
Se però state impiegando l'edizione "regolare" per PC, cliccate sul pulsante con i 3x3 punti in basso a sinistra e cercate terminale
per lanciare rapidamente l'omonima applicazione
» Leggi anche: Come aprire il terminale di Ubuntu
Passo 2: Installare i pacchetti zip e unzip
Impartiamo ora i comandi zip
prima e unzip
dopo senza alcun argomento per verificare che i rispettivi pacchetti siano effettivamente installati. In caso positivo, verrà visualizzata la guida alla sintassi: bene, significa che i pacchetti sono disponibili e possiamo andare oltre
Se però riceviamo un errore simile a bash: unzip: command not found
, significa che i pacchetti non sono installati. Procediamo dunque a recuperarli tramite il comando:
-
Ubuntu:
sudo apt-get install zip unzip -y
-
CentOS:
sudo yum install zip unzip -y
Passo 3: Scaricare il file da estrarre
Se state leggendo questo articolo perché desiderate estrarre un file .zip da linea di comando su Linux dovete innanzitutto scaricare il .zip in questione! Allo scopo, consultate questo articolo per la guida al download dei file tramite linea di comando:
» Leggi: Come scaricare file da linea di comando: guida a curl e wget per Linux Ubuntu/CentOS
Unzippare (estrarre) tutti i file .zip da linea di comando
Per "unzippare" tutti i file di un .zip da linea di comando basta impartire qualcosa di simile a:
unzip -o "/percorso/completo/miofile.zip" -d "/percorso/file/estratti/"
Dove:
-
unzip
: è il nome del comando -
-o
: sovrascrive tutti i file già presenti nella destinazione -
"/percorso/completo/miofile.zip"
: percorso del file .zip che desideriamo scompattare -
-d "/percorso/file/estratti/"
: percorso nel quale salvare i file estratti dallo zip
Da notare che l'argomento -d
può essere omesso, ma questo estrae tutti i file nella directory corrente (non in quella nella quale si trova lo zip!). Per evitare fraintendimenti e ritrovarsi con i file estratti in un percorso differente da quello atteso, è dunque sempre opportuno esplicitarlo.
Il parametro -o
sovrascrive i file già presenti nella cartella di destinazione con quelli corrispondenti presenti nell'archivio. Se omesso, il programma chiede conferma esplicita prima di procedere
Altri parametri che risulta utile conoscere sono:
-
-P PasswordDelloZip
: se l'archivio è protetto da password, specifichiamola tramite l'argomento-P
(lettera maiuscola!) per poter procedere con l'estrazione -
-j
: scarta l'alberatura di cartelle presenti nell'archivio ed estrae tutti i file nella cartella di destinazione
La lista completa degli argomenti è disponibile impartendo man unzip
oppure via web.
Visualizzare il contenuto dell'archivio senza scompattare
In alcune circostanze vorremo ispezionare il contenuto dell'archivio .zip senza concretamente estrarre i file. Allo scopo, si usa l'argomento -l
. Il comando completo sarà dunque:
unzip -l "/percorso/completo/miofile.zip"
Le righe il cui valore Name
finisce con la barra (/
) sono cartelle, mentre gli altri sono file
Unzippare (estrarre) solo alcuni file
Non è necessario scompattare l'intero archivio per recuperare solo pochi file o cartelle: possiamo infatti specificare sulla linea di comando un elenco dei file estrarre.
Per prima cosa, usiamo l'argomento -l
, come indicato al Passo precedente, per visualizzare la lista dei file presenti nell'archivio e scoprirne i percorsi.
Procediamo poi ad indicare quali file o cartelle estrarre, fornendo i rispettivi percorsi sulla linea di comando subito dopo al percorso del file zip. Ad esempio:
unzip -o "/percorso/completo/miofile.zip" "file1.txt" "nomecartella/" "cartella2/file3.xls" "dir1/dir2/file.ppt" -d /percorso/file/estratti/
Come unica accortezza, ricordate che, per estrarre intere cartelle, dovete esplicitare la barra (/
) dopo il nome
Creare archivi Zip con Linux
Se invece desiderate creare un archivio Zip da linea di comando, dovete innanzitutto entrare nella cartella che contiene i file da zippare:
cd /percorso/cartella/file_da_zippare/
A questo punto potete lanciare qualcosa di simile a:
zip -r -9 -FS -m "/percorso/completo/miofile.zip" .
Dove:
-
zip
: è il nome del comando -
-r
: comprime tutte le sottocartelle e i file presenti -
-9
: specifica di usare la massima compressione prevista dal formato Zip -
-FS
: in caso il file .zip esistesse già, elimina dallo stesso i file non più presenti nella cartella che stiamo usando come origine -
-m
: elimina i file originali dopo aver creato l'archivio -
"/percorso/completo/miofile.zip"
: percorso e nome del file .zip da creare -
.
: indica al comando di aggiungere all'archivio il contenuto della directory corrente
Anche il comando di compressione prevede una lunga lista di altri parametri opzionali. Fra i più significativi, ricordiamo:
-
-P PasswordDelloZip
: per proteggere il nuovo archivio con password, specifichiamola tramite l'argomento-P
(lettera maiuscola!) -
-j
: scarta l'alberatura di cartelle presenti nell'archivio e pone tutti i file al primo livello dell'archivio
La lista completa degli argomenti è disponibile impartendo man zip
oppure via web.