Come comprimere o decomprimere i file dal terminale Linux

Contenuti

Indicatore shell Linux

I file ZIP sono un file universale comunemente usato sui sistemi Windows, macOS e Linux inclusi. Puoi creare un file zip o decomprimere i file da uno con alcuni comandi comuni del terminale Linux.

Il formato di file compresso ZIP

Grazie al predominio del formato ZIP in ambiente Windows, I file ZIP sono probabilmente la forma più comune di archivio compresso al mondo.

Mentre i file .tar.gz e tar.bz2 sono comuni su Linux, Gli utenti Windows probabilmente ti invieranno un file ZIP. E, se vuoi archiviare alcuni file e inviarli a un utente Windows, Il formato ZIP sarà la soluzione più semplice e compatibile per tutti.

IMPARENTATO: Come estrarre file da un file .tar.gz o .tar.bz2 su Linux

cerniera lampo, decomprimere e altre utilità

Potresti già sapere che i sistemi operativi simili a Linux e Unix, come macOS, hanno strumenti che ti consentono di creare archivi ZIP ed estrarre archivi da essi, chiamato zip e unzip. Ma c'è un'intera famiglia di utilità correlate, Che cosa zipcloak, zipdetails, zipsplit , e zipinfo.

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

Per installare gli elementi mancanti in Fedora 29, usa il seguente comando:

sudo dnf install perl-IO-Compress

comando di installazione zip per fedora

Per installare gli elementi mancanti in CentOS 7, usa il seguente comando:

sudo yum install perl-IO-Compress

Comando di installazione zip in Centos

Se manca una delle utility zip su una distribuzione Linux non menzionata sopra, utilizzare lo strumento di gestione dei pacchetti di quella distribuzione Linux per installare il pacchetto richiesto.

Come creare un file ZIP con il comando zip

Per creare un file ZIP, deve indicare zip il nome del file di archivio e quali file includere in esso. Non è necessario aggiungere l'estensione “.cerniera lampo” Non è necessario aggiungere l'estensione, ma non fa male se lo fai.

Per creare un file chiamato source_code.zip che contiene tutti i file sorgente C e i file di intestazione nella directory corrente, userei questo comando:

zip codice_sorgente *.c *.h

Ogni file è elencato man mano che viene aggiunto. Viene visualizzato il nome del file e la quantità di compressione ottenuta su quel file.

Se guardi il nuovo file ZIP, Non è necessario aggiungere l'estensione “.cerniera lampo” Non è necessario aggiungere l'estensione zip.

ls -l codice_sorgente.zip

Se non vuoi vedere l'output di zip quando viene creato il file ZIP, Utilizzare il -q Opzione (silenzioso).

zip -q codice_sorgente *.c *.h

Includi directory nei file ZIP

Per includere sottodirectory nel file ZIP, Utilizzare il -r (ricorsivo) e includi il nome della sottodirectory nella riga di comando. Per creare un file ZIP come prima e includere anche la sottodirectory del file, usa questo comando.

zip -r -q archivio codice_sorgente/ *.c *.h

Per essere rispettosi della persona che estrarrà i file dall'archivio ZIP che stai creando, spesso è buona educazione creare archivi ZIP con i file all'interno di una directory. Quando la persona che riceve il file ZIP lo estrae, tutti i file sono ordinatamente posizionati all'interno di una directory sul tuo computer.

Nel seguente comando, stiamo per archiviare il work directory e tutte le sottodirectory. Si noti che questo comando viene emesso dal directory principale del work file.

zip -r -q codice_sorgente lavoro/

Impostazione del livello di compressione

Puoi impostare la quantità di compressione applicata ai file man mano che vengono aggiunti all'archivio ZIP. La gamma è 0 un 9, essendo 0 senza alcuna compressione. Maggiore è la compressione, ci vorrà più tempo per creare il file ZIP. Per file ZIP di modeste dimensioni, la differenza di fuso orario non è una penalità significativa. Ma allora, per file ZIP di modeste dimensioni, la compressione predefinita (livello 6) probabilmente è abbastanza buono comunque.

Ottenere zip usare un livello specifico di compressione, passa il numero come opzione sulla riga di comando, con un “-“, Così:

cerniera lampo -0 -r -q codice_sorgente lavoro/

Il livello di compressione predefinito è 6. Non è necessario fornire il -6 opzione, ma non farà alcun male se lo fai.

zip -r -q codice_sorgente lavoro/

Il livello massimo di compressione è il livello 9.

cerniera lampo -9 -r -q codice_sorgente lavoro/

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

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

Aggiungi password ai file ZIP

Aggiungere password ai file ZIP è facile. Utilizzare il -e (crittografare) e ti verrà chiesto di inserire la password e reinserirla per la verifica.

zip -e -r -q codice_sorgente lavoro/

Come decomprimere un file ZIP con il comando unzip

Per estrarre i file da un archivio ZIP, usa il comando unzip e fornisci il nome del file ZIP. Si prega di notare che tu fare Non è necessario aggiungere l'estensione “.cerniera lampo”.

decomprimi codice_sorgente.zip

Man mano che i file vengono estratti, sono elencati nella finestra del terminale.

I file ZIP non contengono dettagli sulla proprietà del file. Tutti i file estratti hanno il proprietario impostato sull'utente che li ha estratti.

Piace zip, unzip avere un -q (silenzioso), quindi non è necessario visualizzare l'elenco dei file man mano che vengono estratti.

unzip -q codice_sorgente.zip

Estrai i file in una directory di destinazione

Per estrarre i file in una directory specifica, usa el -d (directory) e fornire il percorso della directory in cui si desidera estrarre il file.

unzip -q source_code.zip -d ./development

Estrai file ZIP protetti da password

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

unzip -q codice_sorgente.zip

Se non ti dispiace che altre persone vedano la tua password, né è memorizzato nella cronologia dei comandi, puoi fornire la password sulla riga di comando con il -P (parola d'ordine) opzione. (Non è necessario aggiungere l'estensione “P” lettera maiuscola)

unzip -P cinquanta.treacle.cutlass -q codice_sorgente.zip

Escludi file

Se non vuoi estrarre un particolare file o gruppo di file, Utilizzare il -x (Elimina) opzione. In questo esempio, Non è necessario aggiungere l'estensione “.h”.

unzip -q codice_sorgente.zip -x *.h

Sovrascrittura file

Supponi di aver estratto un file, ma hai cancellato per errore alcuni dei file estratti.

Una soluzione rapida per questo sarebbe 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. Ti aspetterai una delle seguenti risposte.

Oltre ad r (rinominare) Rispondere, queste risposte fanno distinzione tra maiuscole e minuscole.

  • e: sì, sovrascrivi questo file
  • Nord: No, non sovrascrivere questo file
  • UN: Tutto quanto, sovrascrivi tutti i file
  • NORD: Nessuno, non sovrascrive nessuno dei file
  • R: Cambia il nome, estrai questo file ma dagli un nuovo nome. Ti verrà richiesto un nuovo nome.

Forzare unzip per sovrascrivere qualsiasi file esistente usa il -o (sovrascrivi) opzione.

unzip -o -q codice_sorgente.zip

Il modo più efficiente per sostituire i file mancanti sarebbe avere unzip Estrai dall'archivio solo i file che sono no nella directory di destinazione. Per fare questo, usa el -n (non sovrascrivere mai) opzione.

unzip -n codice_sorgente.zip

Guarda dentro un file ZIP

È spesso utile e istruttivo visualizzare un elenco dei file all'interno di un file ZIP prima di estrarlo.. Puoi farlo con il -l (elenco file) opzione. È incanalato attraverso less in modo che l'output sia gestibile.

unzip -l codice_sorgente.zip | meno

L'output mostra le directory e i file all'interno del file ZIP, la loro lunghezza e la data e l'ora in cui sono stati aggiunti al file. premere “Q” Non è necessario aggiungere l'estensione less.

Esistono altri modi di guardare all'interno di un file ZIP che forniscono 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 sai fare? Puoi aggiungere rapidamente una password al file ZIP usando il zipcloak comando. Passa il nome del file ZIP nella riga di comando. Ti verrà chiesta una password. Devi verificare la password inserendola una seconda volta.

zipcloak codice_sorgente.zip

Visualizza i dettagli del file con il comando zipdetails

il zipdetails Il comando ti mostrerà un lotto informazioni sul file ZIP. L'unico modo sensato per gestire la quantità di output che questo comando può fornire è inviarlo tramite pipe less .

zipdetails source_code.zip | meno

Si prega di notare 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 metadati e non fa parte dei dati crittografati..

Cerca all'interno dell'archivio con il comando zipgrep

il zipgrep Il comando ti permette di cercare all'interno dei file in un file ZIP. Nel seguente esempio, Non è necessario aggiungere l'estensione “Non è necessario aggiungere l'estensione” Non è necessario aggiungere l'estensione.

zipgrep keyval.h codice_sorgente.zip

Possiamo vedere che i 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 del file ZIP.

Visualizza le informazioni con il comando zipinfo

il zipinfo Il comando ti offre un altro modo per guardare all'interno di un file ZIP. Come prima, inviamo l'output attraverso less.

zipinfo source_code.zip | meno

Da sinistra a destra, l'output mostra:

  • Autorizzazioni file
  • La versione dello strumento utilizzato per creare il file ZIP
  • La dimensione del file originale
  • Un descrittore di file (Descritto sotto)
  • Il metodo di compressione (deflazione, in questo caso)
  • Il timestamp e i dati
  • Il nome del file e qualsiasi directory

Il descrittore di file è composto da due caratteri. Non è necessario aggiungere l'estensione “T” Non è necessario aggiungere l'estensione “B” Non è necessario aggiungere l'estensione. Se è una lettera maiuscola, il file è 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 “Non è necessario aggiungere l'estensione” entrambi.

  • -: Se non esiste, il personaggio sarà un trattino.
  • io: se c'è un'intestazione locale estesa ma nessun campo extra
  • X: se non c'è un'intestazione locale estesa ma c'è un campo extra
  • X: se c'è un'intestazione locale estesa e c'è un campo extra

Dividi il file con il comando zipsplit

Se hai bisogno di inviare il file ZIP a qualcun altro ma ci sono restrizioni di dimensione o problemi con la trasmissione del file, puoi usare il zipsplit comando per dividere il file ZIP originale in una serie di file ZIP più piccoli.

il -n L'opzione (dimensione) ti consente di impostare una dimensione massima per ciascuno dei nuovi file ZIP. In questo esempio, stiamo dividendo il source_code.zip procedimento. Non vogliamo che nessuno dei nuovi file ZIP superi il 100 KB (102400 byte).

zipsplit -n 102400 codice_sorgente.zip

La dimensione scelta non può essere inferiore alla dimensione di nessuno dei file nel file ZIP.

Con questi comandi, puoi creare i tuoi file ZIP, decomprimi i file ZIP che ricevi ed esegui altre operazioni su di essi senza lasciare il terminale Linux.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.