Articles

Come comprimere o Decomprimere i File Dal Terminale Linux

  • Dave McKay

    @TheGurkha

  • Aggiornato il 28 Maggio, 2019, 5:15 EDT
Linux shell prompt
Fatmawati Achmad Zaenuri/.com

i file ZIP universale archivio comunemente utilizzato su Windows, macOS, e anche i sistemi Linux. È possibile creare un archivio zip o decomprimere i file da uno con alcuni comuni comandi del terminale Linux.

Il formato di file di archivio compresso ZIP

Grazie al dominio del formato ZIP nel regno di Windows, i file ZIP sono probabilmente la forma più comune di archivio compresso nel mondo.

Mentre .impeciare.i file gz e tar.bz2 sono comuni su Linux, gli utenti Windows probabilmente ti invieranno un archivio in formato ZIP. E, se si desidera archiviare alcuni file e inviarli a un utente Windows, il formato ZIP sarà la soluzione più semplice e compatibile per tutti.

CORRELATI: Come estrarre i file da un .impeciare.gz o .impeciare.file bz2 su Linux

zip, unzip e altre utilità

Potresti già sapere che i sistemi operativi Linux e Unix-like come macOS hanno strumenti per consentire di creare file ZIP ed estrarre file da essi, chiamatizip eunzip. Ma c’è un’intera famiglia di utility correlate come zipcloakzipdetailszipsplit e zipinfo.

Pubblicità

Abbiamo controllato alcune distribuzioni Linux per vedere se includevano queste utilità nell’installazione standard. Tutte le utility erano presenti in Ubuntu 19.04, 18.10 e 18.04. Erano presenti anche a Manjaro 18.04. Fedora 29 includeva zip e unzip, ma nessuna delle altre utilità e questo era anche il caso di CentOS.

Per installare gli elementi mancanti su Fedora 29, utilizzare il seguente comando:

sudo dnf install perl-IO-Compress

zip di comando di installazione di Fedora

Per installare gli elementi mancanti su CentOS 7, utilizzare il seguente comando:

sudo yum install perl-IO-Compress

Zip di comando di installazione Centos

Pubblicità

Se una qualsiasi delle utilità di compressione sono mancanti da una distribuzione di Linux che non è stato menzionato sopra, che distribuzione di Linux strumento di gestione dei pacchetti per installare il pacchetto richiesto.

Come creare un file ZIP con il comando zip

Per creare un file ZIP, è necessario indicarezip il nome del file di archivio e quali file includere in esso. Non è necessario aggiungere il “.zip ” estensione al nome dell’archivio, ma non fa male se lo fai.

Per creare un file chiamato source_code.zip che contiene tutto il codice sorgente in C file di intestazione e file nella directory corrente, è necessario utilizzare questo comando:

zip source_code *.c *.h

zip di comando in una finestra di terminale

Ogni file è elencato come ha aggiunto. Viene visualizzato il nome del file e la quantità di compressione ottenuta su tale file.

uscita dal comando zip in una finestra di terminale

Pubblicità

Se si guarda il nuovo archivio ZIP, si può vedere che il “.zip “estensione del file è stato aggiunto automaticamente da zip.

ls -l source_code.zip

ls su archivio zip in una finestra di terminale

Se non si desidera visualizzare l’output zip come viene creato il file ZIP, utilizzare il tag -q (tranquilla) opzione.

zip -q source_code *.c *.h

-q opzione in una finestra di terminale

Incluse le Directory nel File ZIP

Per includere sub-directory nel file ZIP, utilizzare il tag -r (ricorsiva) e includere il nome del sub-nella riga di comando. Per creare un file ZIP come prima e includere anche la sottodirectory dell’archivio, utilizzare questo comando.

zip -r -q source_code archive/ *.c *.h

-r opzione ricorsiva in una finestra di terminale

Per essere premuroso verso la persona che estrarrà i file dal file ZIP che stai creando, è spesso educato creare file ZIP con i file al suo interno contenuti in una directory. Quando la persona che riceve il file ZIP estrae, tutti i file sono collocati ordinatamente all’interno di una directory sul proprio computer.

Advertisement

Nel seguente comando, archiviamo la directory work e tutte le sottodirectory. Si noti che questo comando viene emesso dalla directory principale della cartellawork.

zip -r -q source_code work/

zippare la directory di lavoro in una finestra di terminale

Impostazione del livello di compressione

È possibile impostare la quantità di compressione applicata ai file man mano che vengono aggiunti all’archivio ZIP. L’intervallo va da 0 a 9, con 0 che non è affatto compresso. Maggiore è la compressione, più tempo ci vuole per creare il file ZIP. Per i file ZIP di dimensioni modeste, la differenza di orario non è una penalità significativa. Ma poi, per i file ZIP di dimensioni modeste, la compressione predefinita (livello 6) è probabilmente abbastanza buona comunque.

Per ottenere il zip utilizzare un determinato livello di compressione, passare il numero come opzione sulla riga di comando, con un “-“, come questo:

zip -0 -r -q source_code work/

-0 opzione di compressione in una finestra di terminale

predefinito livello di compressione è di 6. Non è necessario fornire l’opzione-6, ma non farà alcun danno se lo fai.

zip -r -q source_code work/

livello 6 compressione in una finestra terminale

Il livello massimo di compressione è il livello 9.

zip -9 -r -q source_code work/

-9 compressione in una finestra di terminale

Pubblicità

Con la selezione di file e cartelle archiviati qui, la differenza tra compressione (livello 0) e la compressione di default (livello 6) è 400K. La differenza tra la compressione predefinita e il più alto livello di compressione (livello 9) è solo 4K.

Potrebbe non sembrare molto, ma per gli archivi contenenti centinaia o addirittura migliaia di file, la piccola quantità di compressione extra per file si sommerebbe a un utile risparmio di spazio.

Aggiungere password ai file ZIP

Aggiungere password ai file ZIP è facile. Usa l’opzione-e (encrypt) e ti verrà richiesto di inserire la tua password e di reinserirla per la verifica.

zip -e -r -q source_code work/

l'Aggiunta di password per i file zip in una finestra di terminale

Come Decomprimere un File ZIP Con il Comando unzip

estrarre i file da un file ZIP, utilizzare il comando unzip, e fornire il nome del file ZIP. Si noti che è necessario fornire il “.zip ” estensione.

unzip source_code.zip

il comando decomprimere in una finestra di terminale

Pubblicità

Quando i file vengono estratti vengono elencati nella finestra di terminale.

output di unzip in una finestra di terminale

I file ZIP non contengono dettagli sulla proprietà dei file. Tutti i file estratti hanno il proprietario impostato sull’utente che li sta estraendo.

Proprio comezipunzip ha un’opzione-q (quiet), in modo che non sia necessario visualizzare l’elenco dei file quando i file vengono estratti.

unzip -q source_code.zip

decomprimere opzione-q in una finestra di terminale

l’Estrazione dei File di una Directory di Destinazione

Per i file estratti in una determinata directory, utilizzare il tag -d (directory) opzione e fornire il percorso della directory in cui si desidera che l’archivio venga estratta.

unzip -q source_code.zip -d ./development

decomprimi in una directory di destinazione in una finestra di terminale

Estrai file ZIP protetti da password

Se un file ZIP è stato creato con una password,unzip ti chiederà la password. Se non si fornisce la password corretta, unzip non estrarrà i file.

unzip -q source_code.zip

il comando decomprimi con password in una finestra di terminale

Pubblicità

Se non ti interessa che la tua password venga vista da altri—né che venga memorizzata nella cronologia dei comandi—puoi fornire la password sulla riga di comando con-P (password) opzione. (È necessario utilizzare una maiuscola ” P.”)

unzip -P fifty.treacle.cutlass -q source_code.zip

decompressione con opzione di password in una finestra di terminale

Esclusione dei File

Se non si desidera estrarre un particolare file o gruppo di file, utilizzare il tag -x (escludere) opzione. In questo esempio, vogliamo estrarre tutti i file a parte quelli che terminano in un “.h ” estensione.

unzip -q source_code.zip -x *.h

decomprimi l'opzione escludi in una finestra di terminale

Sovrascrivendo i file

Supponiamo di aver estratto un archivio ma di aver eliminato alcuni dei file estratti per errore.

Pubblicità

Una soluzione rapida per questo sarebbe quello di estrarre i file ancora una volta. Ma se provi ad estrarre il file ZIP nella stessa directory di prima, unzip ti chiederà una decisione sulla sovrascrittura dei file. Si aspetta una delle seguenti risposte.

A parte la rispostar (rinomina), queste risposte sono case sensitive.

  • y: Sì, sovrascrivi questo file
  • n: No, non sovrascrivi questo file
  • A: Tutti, sovrascrivi tutti i file
  • N: Nessuno, sovrascrivi nessuno dei file
  • r: Rinomina, estrai questo file ma dagli un nuovo nome. Ti verrà richiesto un nuovo nome.

sovrascrive i prompt in una finestra di terminale

Per forzareunzip per sovrascrivere qualsiasi file esistente utilizzare l’opzione-o (sovrascrivi).

unzip -o -q source_code.zip

opzione di sovrascrittura in una finestra di terminale

Il modo più efficiente per sostituire i file mancanti, dovrebbe essere un unzip solo estrarre tutti i file contenuti nell’archivio che non sono nella directory di destinazione. Per fare ciò, utilizzare l’opzione -n (mai sovrascrivere).

unzip -n source_code.zip

decomprimere con -n non opzione

Ricerca all’Interno di un File ZIP

e ‘ spesso utile e istruttivo vedere un elenco dei file all’interno di un file ZIP prima di estrarlo. Puoi farlo con l’opzione-l (archivio elenco). Viene convogliato attraverso less per rendere gestibile l’output.

unzip -l source_code.zip | less

decomprimere opzione della lista in una finestra di terminale

Pubblicità

L’output mostra le directory e i file all’interno del file ZIP, la loro lunghezza e l’ora e la data in cui sono stati aggiunti all’archivio. Premere” q “per uscire da less.

elenca l'output dell'archivio in una finestra di terminale

Ci sono altri modi per sbirciare all’interno di un file ZIP che danno diversi tipi di informazioni, come vedremo.

Aggiungi una password con il comando zipcloak

Se hai creato un file ZIP ma hai dimenticato di aggiungere una password, cosa puoi fare? È possibile aggiungere rapidamente una password al file ZIP utilizzando il comandozipcloak. Passare il nome del file ZIP sulla riga di comando. Ti verrà richiesta una password. È necessario verificare la password inserendola una seconda volta.

zipcloak source_code.zip

zipcloak in una finestra di terminale

Visualizza i dettagli del file con il comando zipdetails

Il comandozipdetails ti mostrerà molte informazioni riguardanti il file ZIP. L’unico modo ragionevole per gestire la quantità di output che questo comando può dare è condurlo attraverso less .

zipdetails source_code.zip | less

il comando zipdetails in una finestra di terminale

Advertisement

Si noti che le informazioni includeranno i nomi dei file anche se il file ZIP è protetto da password. Questo tipo di informazioni viene memorizzato all’interno del file ZIP come meta-dati e non fa parte dei dati crittografati.

output di zipdetails in una finestra di terminale

Cerca all’interno del file con il comando zipgrep

Ilzipgrep comando consente di cercare all’interno dei file in un file ZIP. Nell’esempio seguente, vogliamo sapere quali file all’interno del file ZIP hanno il testo “keyval.h ” in loro.

zipgrep keyval.h source_code.zip

il zipgrep comando in una finestra di terminale

Possiamo vedere che il file slang.c e getval.c contengono la stringa “keyval.h”.Possiamo anche vedere che ci sono due copie di ciascuno di questi file in diverse directory nel file ZIP.

Visualizza le informazioni con il comando zipinfo

Il comandozipinfo ti dà un altro modo per guardare all’interno di un file ZIP. Come prima, conduciamo l’uscita attraversoless.

zipinfo source_code.zip | less

comando zipinfo in una finestra di terminale

Da sinistra a destra l’output mostra:

  • I permessi del file
  • La versione dello strumento utilizzato per creare il file ZIP
  • La dimensione originale del file
  • Un descrittore di file (descritto di seguito)
  • Il metodo di compressione (deflazione, in questo caso)
  • La data e l’ora
  • Il nome del file e qualsiasi directory
Pubblicità

Il descrittore di file è composta di due caratteri. Il primo carattere sarà una ” t “o una” b ” per indicare un file di testo o binario. Se si tratta di una lettera maiuscola, il file viene crittografato. Il secondo carattere può essere uno dei quattro caratteri. Questo carattere rappresenta il tipo di metadati inclusi per questo file: nessuno, un’intestazione locale estesa, un “campo aggiuntivo” o entrambi.

  • -: Se nessuno dei due esiste, il carattere sarà un trattino
  • l: se c’è un’intestazione locale estesa ma nessun campo aggiuntivo
  • x: se non c’è un’intestazione locale estesa ma c’è un campo aggiuntivo
  • X: se c’è un locale esteso intestazione e c’è un campo extra

zipinfo uscita in una finestra di terminale

Dividere il File Con il zipsplit Comando

Se avete bisogno di inviare il file ZIP a qualcun altro, ma non ci sono restrizioni di dimensione o problemi con la trasmissione del file, è possibile utilizzare i tag zipsplit comando per tagliare l’originale file ZIP in una serie di piccoli file ZIP.

L’opzione-n (size) consente di impostare una dimensione massima per ciascuno dei nuovi file ZIP. In questo esempio, stiamo dividendo il filesource_code.zip. Non vogliamo che nessuno dei nuovi file ZIP sia più grande di 100 KB (102400 byte).

zipsplit -n 102400 source_code.zip

il comando zipsplit in una finestra di terminale

Advertisement

La dimensione che si sceglie non può essere inferiore alla dimensione di uno qualsiasi dei file nel file ZIP.

Utilizzando questi comandi, è possibile creare i propri file ZIP, decomprimere i file ZIP ricevuti, ed eseguire varie altre operazioni su di essi senza mai lasciare il terminale Linux.

Dave McKay
Dave McKay ha usato per la prima volta i computer quando il nastro di carta punzonato era in voga, e da allora ha programmato. Dopo oltre 30 anni nel settore IT, ora è un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, come responsabile della protezione dei dati. Dave è un evangelista di Linux e fautore dell’open source.Leggi la Biografia completa ”