Comprimere i file su Linux le numerose varianti e come usarle

Alcuni di noi hanno zippato file su sistemi Unix e Linux per molti decenni - per risparmiare spazio su disco e pacchetti di file insieme per l'archiviazione. Anche così, ci sono alcune interessanti variazioni nello zippare che non tutti abbiamo provato. Quindi, in questo post, esamineremo la compressione e la decompressione standard, nonché alcune altre interessanti opzioni di compressione.

[Suggerimenti Linux per due minuti: scopri come padroneggiare una serie di comandi Linux in questi tutorial video di 2 minuti]

Il comando zip di base

Innanzitutto, diamo un'occhiata alle basi cerniera lampo comando. Utilizza quello che è essenzialmente lo stesso algoritmo di compressione di gzip, ma ci sono un paio di differenze importanti. Per prima cosa, il comando gzip viene utilizzato solo per comprimere un singolo file in cui zip può sia comprimere i file che unirli in un archivio. Per un altro, il comando gzip si comprime "in posizione". In altre parole, lascia un file compresso, non il file originale accanto alla copia compressa. Ecco un esempio di gzip al lavoro:

$ gzip onefile $ ls -l -rw-rw-r-- 1 shs shs 10514 gen 15 13:13 onefile.gz 

Ed ecco zip. Notare come questo comando richiede che venga fornito un nome per l'archivio zippato in cui gzip utilizza semplicemente il nome del file originale e aggiunge l'estensione .gz.

$ zip twofiles.zip file * aggiungendo: file1 (sgonfiato 82%) aggiungendo: file2 (sgonfiato 82%) $ ls -l -rw-rw-r-- 1 shs shs 58021 15 gennaio 13:25 file1 -rw-rw- r-- 1 shs shs 58933 15 gennaio 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 gennaio 13:35 twofiles.zip 

Nota anche che i file originali sono ancora lì.

La quantità di spazio su disco salvata (ovvero il grado di compressione ottenuto) dipenderà dal contenuto di ciascun file. La variazione nell'esempio seguente è considerevole.

$ zip mybin.zip ~ / bin / * aggiunta: bin / 1 (sgonfia 26%) aggiunta: bin / append (sgonfia 64%) aggiunta: bin / BoD_meeting (sgonfia 18%) aggiunta: bin / cpuhog1 (sgonfia 14%) aggiunta: bin / cpuhog2 (memorizzato 0%) aggiunta: bin / ff (sgonfia 32%) aggiunta: bin / file.0 (sgonfia 1%) aggiunta: bin / loop (sgonfiata 14%) aggiunta: bin / note (sgonfia 23 %) aggiunta: bin / pattern (memorizzato 0%) aggiunta: bin / runme (memorizzato 0%) aggiunta: bin / tryme (sgonfiato 13%) aggiunta: bin / tt (sgonfia 6%) 

Il comando unzip

Il Unzip il comando ripristinerà il contenuto da un file zip e, come probabilmente sospetteresti, lascerà intatto il file zip, mentre un comando gunzip simile lascerebbe solo il file non compresso.

$ unzip twofiles.zip Archivio: twofiles.zip inflating: file1 inflating: file2 $ ls -l -rw-rw-r-- 1 shs shs 58021 15 gennaio 13:25 file1 -rw-rw-r-- 1 shs shs 58933 15 gennaio 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 gennaio 13:35 twofiles.zip 

Il comando zipcloak

Il zipcloak comando crittografa un file zip, chiedendoti di inserire una password due volte (per aiutarti a non "dito grasso") e lascia il file in posizione. Puoi aspettarti che le dimensioni del file possano variare leggermente rispetto all'originale.

$ zipcloak twofiles.zip Inserisci password: Verifica password: crittografia: file1 crittografia: file2 $ ls -l totale 204 -rw-rw-r-- 1 shs shs 58021 15 gennaio 13:25 file1 -rw-rw-r-- 1 shs shs 58933 15 gennaio 13:34 file2 -rw-rw-r-- 1 shs shs 21313 15 gennaio 13:46 twofiles.zip <== slightly larger than unencrypted version 

Tieni presente che i file originali sono ancora lì non crittografati.

Il comando zipdetails

Il zipdetails il comando ti mostrerà i dettagli - a lotto di dettagli su un file zippato, probabilmente molto più di quello che ti interessa assorbire. Anche se stiamo guardando un file crittografato, zipdetails visualizza i nomi dei file insieme alle date di modifica dei file, informazioni su utenti e gruppi, dati sulla lunghezza dei file, ecc. Tieni presente che si tratta di tutti "metadati". Non vediamo il contenuto dei file.

$ zipdetails twofiles.zip 0000 HEADER LOCALE # 1 04034B50 0004 Estrai specifica zip 14 '2.0' 0005 Estrai OS 00 'MS-DOS' 0006 Flag per uso generico 0001 [Bit 0] 1 'Crittografia' [Bit 1-2] 1 'Massimo Compressione '0008 Metodo di compressione 0008' Deflated '000A Ultima Mod Time 4E2F6B24' Mar 15 gennaio 13:25:08 2019 '000E CRC F1B115BD 0012 Lunghezza compressa 00002904 0016 Lunghezza non compressa 0000E2A5 001A Lunghezza file 0005 001C Lunghezza extra 001C 001E Nome file' 001 '001 N. ID aggiuntivo 0001 5455 'UT: Timestamp esteso' 0025 Lunghezza 0009 0027 Flag '03 mod access '0028 Mod Time 5C3E2584' Mar 15 gennaio 13:25:08 2019 '002C Tempo accesso 5C3E27BB' Mar 15 gennaio 13:34:35 2019 '0030 Extra ID # 0002 7875' ux: Unix Extra Type 3 '0032 Lunghezza 000B 0034 Versione 01 0035 Dimensione UID 04 0036 UID 000003E8 003A Dimensione GID 04 003B GID 000003E8 003F PAYLOAD 2943 LOCAL HEADER # 2 04034B50 2947 Estrai Zip Spec 14' 2.0 '2948 Extract OS 00' MS-DOS '2949 Flag per uso generico 0001 [Bit 0] 1' Crittografia '[Bit 1-2] 1' Compressione massima '294B C Metodo ompressione 0008 'Deflated' 294D Ultima Mod Time 4E2F6C56 'Mar 15 gennaio 13:34:44 2019' 2951 CRC EC214569 2955 Lunghezza compressa 00002913 2959 Lunghezza non compressa 0000E635 295D Lunghezza nome file 0005 295F Lunghezza extra 001C 2961 Nome file 'file2' 2966 ID extra # file2 '2966 0001 5455 'UT: Timestamp esteso' 2968 Lunghezza 0009 296A Flag '03 mod access '296B Mod Time 5C3E27C4' Mar 15 gennaio 13:34:44 2019 '296F Tempo di accesso 5C3E27BD' Mar 15 gennaio 13:34:37 ​​2019 '2973 Extra ID # 0002 7875 'ux: Unix Extra Tipo 3' 2975 Lunghezza 000B 2977 Versione 01 2978 Dimensione UID 04 2979 UID 000003E8 297D Dimensione GID 04 297E GID 000003E8 2982 PAYLOAD 5295 CENTRAL HEADER # 1 02014B50 5299 Creato Spec Zip 1E '3.0' 529A Creato OS 03 'Unix' 529B Estrai Zip Spec 14 '2.0' 529C Estrai OS 00 'MS-DOS' 529D Flag per uso generico 0001 [Bit 0] 1 'Crittografia' [Bit 1-2] 1 'Compressione massima' Metodo di compressione 529F 0008 'Deflated' 52A1 Last Mod Time 4E2F6B24 'mar 15 gen 13:25:08 2019' 52A5 CRC F1B115BD 52A9 Lunghezza compressa 00002904 52AD Uncompr essed Lunghezza 0000E2A5 52B1 Nome file Lunghezza 0005 52B3 Lunghezza extra 0018 52B5 Lunghezza commento 0000 52B7 Avvio disco 0000 52B9 Attributi file int 0001 [Bit 0] 1 Dati di testo 52BB Ext File Attributi 81B40000 52BF Local Headset Offset 00000000 52C3 Nome file 'file1' 52C8 ID extra # 0001 5455 'UT: Timestamp esteso' 52CA Lunghezza 0005 52CC Flag '03 mod access '52CD Mod Time 5C3E2584' Mar 15 gennaio 13:25:08 2019 '52D1 ID extra # 0002 7875' ux: Unix Extra Type 3 '52D3 Lunghezza 000B 52D5 Versione 01 52D6 Dimensione UID 04 52D7 UID 000003E8 52DB Dimensione GID 04 52DC GID 000003E8 52E0 CENTRAL HEADER # 2 02014B50 52E4 Creato Zip Spec 1E '3.0' 52E5 Crea OS 03 'Unix' 52E6 Estrai Zip Spec 14 '2.0' 52E7 Estrai OS 00 'MS-DOS' 52E8 Flag per uso generico 0001 [Bit 0] 1 'Crittografia' [Bit 1-2] 1 'Compressione massima' Metodo di compressione 52EA 0008 'Deflated' 52EC Ultima Mod Time 4E2F6C56 'Mar 15 Gen 13:34:44 2019 '52F0 CRC EC214569 52F4 Lunghezza compressa 00002913 52F8 Lunghezza non compressa 0000E635 52FC Lunghezza nome file 0005 52FE Lunghezza extra 0018 5300 Lunghezza commento 0000 5302 Avvio disco 0000 5304 Attributi file int 0001 [Bit 0] 1 Dati di testo 5306 Attributi file est 81B40000 530A Offset intestazione locale 00002943 530E Nome file 'file2' 5313 ID extra # 0001 5455 'UT: Timestamp esteso' 5315 Lunghezza 0005 5317 Flag '03 mod access '5318 Mod Time 5C3E27C4' Mar 15 gennaio 13:34:44 2019 '531C Extra ID # 0002 7875' ux: Unix Extra Type 3 '531E Lunghezza 000B 5320 Versione 01 5321 UID Dimensione 04 5322 UID 000003E8 5326 Dimensione GID 04 5327 GID 000003E8 532B FINE CENTRALE HEADER 06054B50 532F Numero di questo disco 0000 5331 Disco direzione centrale n. 0000 5333 Voci in questo disco 0002 5335 Totale voci 0002 5337 Dimensione della direzione centrale 00000096 533B Offset alla direzione centrale 00000096 533B Lunghezza 0000 Fatto 

Il comando zipgrep

Il zipgrep Il comando utilizzerà una funzionalità di tipo grep per individuare particolari contenuti nei file compressi. Se il file è crittografato, sarà necessario inserire la password fornita per la crittografia per ciascun file che si desidera esaminare. Se vuoi solo controllare il contenuto di un singolo file dall'archivio, aggiungi il suo nome alla fine del comando zipgrep come mostrato sotto.

$ zipgrep hazard twofiles.zip file1 [twofiles.zip] file1 password: alcuni pesticidi dovrebbero essere vietati poiché pericolosi per l'ambiente. 

Il comando zipinfo

Il ZipInfo Il comando fornisce informazioni sul contenuto di un file compresso crittografato o meno. Ciò include i nomi, le dimensioni, le date e le autorizzazioni dei file.

$ zipinfo twofiles.zip Archivio: twofiles.zip Dimensione file zip: 21313 byte, numero di voci: 2 -rw-rw-r-- 3.0 unx 58021 Tx defN 19-gen-15 13:25 file1 -rw-rw-r - 3.0 unx 58933 Tx defN 19-Jan-15 13:34 file2 2 file, 116954 byte non compressi, 20991 byte compressi: 82,1% 

Il comando zipnote

Il zipnote Il comando può essere utilizzato per estrarre commenti dagli archivi zip o aggiungerli. Per visualizzare i commenti, basta prefigurare il nome dell'archivio con il comando. Se non sono stati aggiunti commenti in precedenza, vedrai qualcosa del genere:

$ zipnote twofiles.zip @ file1 @ (commento sopra questa riga) @ file2 @ (commento sopra questa riga) @ (commento del file zip sotto questa riga) 

Se si desidera aggiungere commenti, scrivere l'output del comando zipnote in un file:

$ zipnote twofiles.zip> commenti 

Successivamente, modifica il file che hai appena creato, inserendo i tuoi commenti sopra il (commento sopra questa riga) Linee. Quindi aggiungi i commenti usando un comando zipnote come questo:

$ zipnote -w twofiles.zip < comments 

Il comando zipsplit

Il zipsplit Il comando può essere utilizzato per suddividere un archivio zip in più archivi zip quando il file originale è troppo grande, forse perché stai cercando di aggiungere uno dei file a una chiavetta USB. Il modo più semplice per farlo sembra essere quello di specificare la dimensione massima per ciascuna delle porzioni di file zippate. Questa dimensione deve essere abbastanza grande da contenere il file incluso più grande.

$ zipsplit -n 12000 twofiles.zip Verranno creati 2 file zip (efficienza 100%) creando: twofile1.zip creando: twofile2.zip $ ls twofile * .zip -rw-rw-r-- 1 shs shs 10697 15 gennaio 14 : 52 twofile1.zip -rw-rw-r-- 1 shs shs 10702 15 gennaio 14:52 twofile2.zip -rw-rw-r-- 1 shs shs 21377 15 gennaio 14:27 twofiles.zip 

Notare come i file estratti vengono chiamati in sequenza "twofile1" e "twofile2".

Incartare

Il cerniera lampo comando, insieme ad alcuni dei suoi compatrioti zippati, fornisce un sacco di controllo su come generare e lavorare con archivi di file compressi.

[Vedi anche: Suggerimenti e trucchi preziosi per la risoluzione dei problemi di Linux] Unisciti alle community di Network World su Facebook e LinkedIn per commentare argomenti che sono importanti.