Come comprimere o Decomprimere i File Dal Terminale Linux
- Dave McKay
@TheGurkha
- Aggiornato il 28 Maggio, 2019, 5:15 EDT
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 zipcloak
zipdetails
zipsplit
e zipinfo
.
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
Per installare gli elementi mancanti su CentOS 7, utilizzare il seguente comando:
sudo yum install perl-IO-Compress
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
Ogni file è elencato come ha aggiunto. Viene visualizzato il nome del file e la quantità di compressione ottenuta su tale file.
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
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
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
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.
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/
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/
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/
Il livello massimo di compressione è il livello 9.
zip -9 -r -q source_code work/
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/
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
Quando i file vengono estratti vengono elencati nella 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 comezip
unzip
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
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
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
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
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
Sovrascrivendo i file
Supponiamo di aver estratto un archivio ma di aver eliminato alcuni dei file estratti per errore.
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.
Per forzareunzip
per sovrascrivere qualsiasi file esistente utilizzare l’opzione-o
(sovrascrivi).
unzip -o -q source_code.zip
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
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
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
.
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
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
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.
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
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
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
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
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
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 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 ”
Leave a Reply