Come posso creare ed estrarre archivi zip dalla riga di comando?
Come posso creare ed estrarre archivi zip dalla riga di comando?
Risposte:
In genere si usa tar
per creare un archivio compresso e uno gzip
o bzip2
per comprimere tale archivio. I corrispondenti comandi gunzip
e bunzip2
possono essere usati per decomprimere detto archivio, oppure puoi semplicemente usare i flag sul tar
comando per eseguire la decompressione.
Se ti riferisci specificamente al formato di file Zip , puoi semplicemente usare i comandi zip
e unzip
.
Per comprimere:
zip squash.zip file1 file2 file3
o per comprimere una directory
zip -r squash.zip dir1
Per decomprimere:
unzip squash.zip
questo lo decomprime nella directory di lavoro corrente.
zip -r9 archive.zip files...
sintassi (-r = ricorsivo -9 = compressione massima).
zip
può creare molti gusti diversi di archivi .ZIP, oltre a utilizzare molti compressori diversi. D'altra parte, ci sono una serie di altri strumenti di compressione chiamati in modo simile: 7-Zip, gzip, bzip2, rzip, ecc. Che non sono intercambiabili.
cd dir1; zip -r ../squash.zip *
unzip -d myfolder squash.zip
per estrarre in una nuova directory separata ( myfolder
) invece di mettere tutti i file direttamente nella directory corrente, il che può essere fastidioso se il file zip contiene molti file e directory al suo livello superiore. Questo imita il funzionamento della maggior parte degli strumenti di decompressione dell'interfaccia utente.
Ci sono un vero e vasto numero di differenti modi per comprimere e decomprimere in derivati UNIX così ho intenzione di assumere che volevi dire "zip" in senso generico, piuttosto che una specifica formato di file.
Puoi comprimere i file (in formato compresso) con il tar
programma GNU :
tar -zcvf myfile.tgz .
che farà la directory corrente. Sostituisci .
con altri nomi di file se vuoi qualcos'altro.
Per decomprimere quel file, utilizzare:
tar -zxvf myfile.tgz
Ciò presuppone ovviamente che tu sia in tar
grado di eseguire la compressione e di combinare i file in uno.
In caso contrario, puoi semplicemente utilizzare tar cvf
seguito da gzip
(di nuovo, se disponibile) per la compressione e gunzip
seguito da tar xvf
.
Per una gestione specifica dei file in formato ZIP, consiglierei di scaricarlo 7zip
e usarlo - riconosce una grande varietà di formati di file, incluso quello ZIP.
tar jcvf file.tar.bz2...
per comprimere in formato bzip2 o tar Jcvf file.tar.xz ...
per la compressione xz.
Bene, quando si tratta di distribuire file per una varietà di sistemi operativi, consiglierei 7-zip .
Di solito nel pacchetto p7zip
, otterrai il comando 7z
e 7za
, con il quale puoi creare i tuoi archivi 7z.
7za
può anche decomprimere archivi zip standard ( pkzip ) (e crearli anche con l' -tzip
interruttore).
Compressione:
7za a archive.7z file1 file2 directory/
decompressione:
7za x archive.7z
Può anche creare archivi autoestraenti con l' -sfx
opzione:
7za a -sfx archive.exe files1 file2 dir
Consiglio questo metodo nel caso in cui gli utenti Windows non riescano ad aprire gli archivi 7z (nel caso in cui si desideri consigliare uno strumento per questo: PeaZip ).
Se si desidera utilizzare lo stesso algoritmo di compressione con i tarball, utilizzare l' -J
opzione con tar
:
tar cJf archive.tar.xz file1 file2 dir
xz
è uno strumento di UNIX, che utilizza LZMA2 per la compressione, ma il modo in cui funziona gz
, bz2
ecc funziona. Funziona anche come filtro.
7z non crea archivi con informazioni complete sul filesystem su UNIX, quindi dovresti usarlo tar
prima di usare 7z (ma poiché 7z memorizza altre informazioni sul tar
file, ti consiglio di usarlo xz
, poiché è progettato per esso):
tar cf - file1 file2 dir | 7za z -si archive.tar.7z
atool
, è un piccolo strumento che rende più comodo l'uso di molti compressori diversi. Legalo a
e creare un archivio diventa a arc.7z folder/
o estrae un semplicea arc.7z
unzip <filename>
e
zip -r archive.zip <filename> [filename]
Dovrai assicurarti che questi comandi siano installati tramite il tuo gestore pacchetti. Non è più difficile che usare qualsiasi altra riga di comando. È sicuramente più semplice della creazione di archivi con tar.
Anche BSD Tar può fare questo
bsdtar acf bravo.zip alfa.jpg
O:
bsdtar xf bravo.zip
tar
ha il vantaggio di supportare diversi formati di compressione aggiuntivi rispetto a GNU tar
e altri tar
. Il più grande vantaggio è, forse, che lo fa usando una tar
sintassi simile . Si può sicuramente utilizzare 7z
, unrar
, unzip
, ecc dalla linea di comando, ma usare una diversa sintassi.
La risposta più standard è pax
, che è raccomandata sopra cpio
e tar
.
A differenza di cpio
POSIX tar
, ma come GNU tar
, pax
è in grado sia di archiviare i file sia di comprimere l'archivio. Questo comportamento è diverso da quello zip
che comprime ogni file prima di inserirlo nell'archivio.
pax
gli archivi zip supporto?
pax
neanche gli archivi!
Questo riguarda solo l'estrazione.
Per questo, ho iniziato a usare dtrx
.
Il punto è di rimuovere la complessità. Quindi gli passi semplicemente in qualsiasi archivio e capisce cosa bisogna fare con esso. Zip, tar, gz ... L'uso è sempre lo stesso - dtrx archive.zip
. Fa alcune domande e il gioco è fatto.
dtrx
è disponibile nella maggior parte dei repository, quindi puoi apt
| yum
installalo.
Mi trovo spesso a tentare di comprimere i file modificati nella mia directory di lavoro - per copiare tutti i file modificati in un'altra directory di lavoro sandbox o per conservarli per un breve periodo perché voglio annullare alcune delle modifiche.
In tal caso, copio l'elenco dei file modificati in un file temporaneo e lo utilizzo zip
con l'opzione -@
.
Diciamo che ho modificato i file Foo.h, Bar.cc e TestBar.cc.
Diciamo che creo un file chiamato modified-files.txt i cui contenuti sono:
Foo.h
Bar.cc
TestBar.cc
Eseguo il seguente comando per comprimere quei file:
cat modified-files.txt | zip modified-files.zip -@