Il formato 7z, diffuso fra i power user Windows grazie all'eccellente 7-Zip, ha molte caratteristiche che lo rendono interessante, ma l'elevato rapporto di compressione è certamente una delle principali. Proprio questa caratteristica torna molto utile anche in ambiente Linux, quando desideriamo creare un archivio con vecchi file da conservare su DVD oppure per trasferire rapidamente dati dal server remoto al PC di sviluppo. Vediamo allora come creare (comprimere) ed estrarre archivi 7z con Linux

» Leggi anche: MySQL/mysqldump: creare un file distinto/singolo per ogni database con zzmysqldump (script)

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - linux 7-Zip spotlight

Nota: in questo articolo vedremo come comprimere ed espandere (estrarre) file .7z da linea di comando con Linux. Se desideri fare lo stesso, ma con i classici file .zip, consulta invece quest'altra guida:

» Leggi: Guida zip unzip con Linux: come zippare (comprimere, creare) e unzippare (estrarre) archivi .zip da linea di comando con Ubuntu e CentOS - errore bash: unzip: command not found

La procedura è stata testata con Ubuntu 17.04 e CentOS 7.3, ma è presumibile che continui a rimanere la stessa negli anni a venire.

Per chi ha fretta

Se già sei esperto di Linux e cerchi solo un "reminder" per la sintassi, eccoti servito:

  • visualizzazione: 7za l "/percorso/completo/miofile.7z"
  • estrazione: 7za x "/percorso/completo/miofile.7z" -o"/percorso/file/estratti/"
  • creazione archivio 7z: 7za a -t7z -mx=9 -mfb=256 -md=256m -ms=on -sdel "/percorso/completo/miofile.7z" .

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

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - linux apri terminale

» Leggi anche: Come aprire il terminale di Ubuntu

Passo 2: Installare 7-Zip su Linux

Procediamo ora ad installare 7-Zip per Linux:

  • Ubuntu: apt-get install p7zip-full -y
  • CentOS: yum install epel-release -y && yum install p7zip -y

Da notare che il comando per CentOS abilita il repository EPEL. Per maggiori informazioni:

» Leggi: Guida: abilitare il repository "Extra Packages for Enterprise Linux" (EPEL) su CentOS 7

Passo 3: Scaricare il file da estrarre

Se state leggendo questo articolo perché desiderate estrarre un file .7z da linea di comando su Linux dovete innanzitutto scaricare il .7z 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

estrarre tutti i file da un .7z tramite linea di comando

Per "estrarre" tutti i file di un .7z da linea di comando basta impartire qualcosa di simile a:

7za x "/percorso/completo/miofile.7z" -o"/percorso/file/estratti/"

Dove:

  • 7za: è il nome del comando
  • x: indica il comando di estrazione
  • "/percorso/completo/miofile.7z": percorso del file .7z che desideriamo scompattare
  • -o"/percorso/file/estratti/": percorso nel quale salvare i file estratti dall'archivio. Notate che non c'è alcuno spazio fra -o ed il percorso

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - Schermata del 2017-09-17 21-44-01

Da notare che l'argomento -o può essere omesso, ma questo estrae tutti i file nella directory corrente (non in quella nella quale si trova il .7z). Per evitare fraintendimenti e ritrovarsi con i file estratti in un percorso differente da quello atteso, è dunque sempre opportuno esplicitarlo.

Il comando di estrazione non sovrascrive eventuali file già presenti nella destinazione, ma chiede esplicita conferma prima di procedere

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - Schermata del 2017-09-17 21-47-57

Altri parametri che risulta utile conoscere sono:

  • -pPasswordDel7zip: se l'archivio è protetto da password, specifichiamola tramite l'argomento -p per poter procedere con l'estrazione. Se viene omesso e l'archivio è effettivamente protetto da password, verrà chiesto di fornirla sul momento
  • e al posto di x (primo argomento): 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 7za oppure via web.

Visualizzare il contenuto dell'archivio senza scompattare

In alcune circostanze vorremo ispezionare il contenuto dell'archivio .7z senza concretamente estrarre i file. Allo scopo, si usa l'argomento l. Il comando completo sarà dunque:

7za l "/percorso/completo/miofile.7z"

Le righe il cui valore Name finisce con la barra (/) sono cartelle, mentre gli altri sono file

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - Schermata del 2017-09-17 21-55-29

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 e chiudendo tutto con -r. Ad esempio:

7za x "/percorso/completo/miofile.7z" -o"/percorso/file/estratti/" "nomecartella/" "cartella2/file3.xls" "dir1/dir2/file.ppt -r

Come unica accortezza, ricordate che, per estrarre intere cartelle, dovete esplicitare la barra (/) dopo il nome

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS

Creare archivi 7z con Linux

Se invece desiderate creare un archivio 7z da linea di comando, dovete innanzitutto entrare nella cartella che contiene i file da 7-zippare:

cd "/percorso/cartella/file_da_7-zippare/"

A questo punto potete lanciare qualcosa di simile a:

7za a -t7z -mx=9 -mfb=256 -md=256m -ms=on -sdel "/percorso/completo/miofile.7z" .

Dove:

  • 7za: è il nome del comando
  • a: indica la creazione di un nuovo archivio
  • -t7z: genera un archivio in formato 7z
  • -mx=9: specifica di usare la massima compressione prevista dal formato 7z
  • -mfb=256: indica all'algoritmo LZMA di usare 256 fast byte, migliorando il livello di compressione
  • -md=256m: usa un dizionario da 256 MB, migliorando il livello di compressione
  • -ms=on: genera un archivio solido, migliorando il livello di compressione
  • -sdel: elimina i file originali dopo aver creato l'archivio
  • "/percorso/completo/miofile.7z": percorso e nome del file .7z da creare
  • .: indica al comando di aggiungere all'archivio il contenuto della directory corrente

File .7z, Linux linea comando: come creare/comprimere ed estrarre archivi 7z 7-Zip Ubuntu CentOS - Schermata del 2017-09-17 22-40-05

Anche il comando di compressione prevede una lunga lista di altri parametri opzionali. Fra i più significativi, ricordiamo:

  • -pPasswordDel7zip: per proteggere il nuovo archivio con password, specifichiamola tramite l'argomento -p

La lista completa degli argomenti è disponibile impartendo man z7a oppure via web.