Zippa filer på Linux de många variationerna och hur man använder dem

Några av oss har zippat filer på Unix och Linux-system i många decennier - för att spara lite diskutrymme och paketfiler tillsammans för arkivering. Trots det finns det några intressanta variationer på dragkedja som inte alla av oss har provat. Så i det här inlägget kommer vi att titta på standard zippning och packning samt några andra intressanta zippningsalternativ.

[Två minuters Linux-tips: Lär dig hur du behärskar en mängd Linux-kommandon i dessa 2-minuters videohandledning]

Det grundläggande zip-kommandot

Låt oss först titta på det grundläggande blixtlås kommando. Den använder vad som i huvudsak är samma komprimeringsalgoritm som gzip, men det finns ett par viktiga skillnader. För det första används gzip-kommandot endast för att komprimera en enda fil där zip både kan komprimera filer och koppla dem i ett arkiv. För en annan, zzip-kommandot zips "på plats". Med andra ord lämnar den en komprimerad fil - inte originalfilen bredvid den komprimerade kopian. Här är ett exempel på gzip på jobbet:

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

Och här är zip. Lägg märke till hur detta kommando kräver att ett namn anges för det zippade arkivet där gzip helt enkelt använder det ursprungliga filnamnet och lägger till .gz-förlängningen.

$ zip twofiles.zip-fil * lägg till: fil1 (deflaterad 82%) lägg till: fil2 (deflaterad 82%) $ ls -l -rw-rw-r-- 1 shs shs 58021 15 jan 13:25 fil1 -rw-rw- r-- 1 shs shs 58933 15 jan 15 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 jan 15 13:35 twofiles.zip 

Lägg också märke till att originalfilerna fortfarande sitter där.

Mängden hårddiskutrymme som sparas (dvs. graden av komprimering som erhålls) beror på innehållet i varje fil. Variationen i exemplet nedan är betydande.

$ zip mybin.zip ~ / bin / * lägg till: bin / 1 (deflaterad 26%) lägger till: bin / append (deflaterad 64%) lägg till: bin / BoD_meeting (deflaterad 18%) lägg till: bin / cpuhog1 (deflaterad 14%) lägg till: bin / cpuhog2 (lagrad 0%) lägg till: bin / ff (deflaterat 32%) lägg till: bin / file.0 (deflaterat 1%) lägg till: bin / loop (deflaterat 14%) lägg till: bin / notes (deflaterat 23%) %) lägga till: bin / mönster (lagrat 0%) lägga till: bin / runme (lagrat 0%) lägga till: bin / tryme (deflaterat 13%) lägga till: bin / tt (deflaterat 6%) 

Unzip-kommandot

De packa upp kommando kommer att återställa innehållet från en zip-fil och, som du troligtvis misstänker, lämnar zip-filen intakt, medan ett liknande gunzip-kommando endast lämnar den okomprimerade filen.

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

Zipcloak-kommandot

De zipcloak kommandot krypterar en zip-fil och ber dig ange ett lösenord två gånger (för att säkerställa att du inte "fett finger") och lämnar filen på plats. Du kan förvänta dig att filstorleken kommer att variera lite från originalet.

$ zipcloak twofiles.zip Ange lösenord: Verifiera lösenord: kryptering: file1 kryptering: file2 $ ls -l totalt 204 -rw-rw-r-- 1 shs shs 58021 15 jan 13:25 file1 -rw-rw-r-- 1 shs shs 58933 15 jan 13:34 file2 -rw-rw-r-- 1 shs shs 21313 15 jan 15 13:46 twofiles.zip <== slightly larger than unencrypted version 

Tänk på att originalfilerna fortfarande sitter där okrypterade.

Kommandot zipdetails

De zipdetails kommandot kommer att visa dig detaljer - a massa av detaljer om en zippad fil, troligen mycket mer än du bryr dig om att ta upp. Även om vi tittar på en krypterad fil, visar zipdetails filnamnen tillsammans med datum för filändringar, användar- och gruppinformation, fillängdsdata, etc. Tänk på att allt detta är "metadata." Vi ser inte innehållet i filerna.

$ zipdetails twofiles.zip 0000 LOCAL HEADER # 1 04034B50 0004 Extract Zip Spec 14 '2.0' 0005 Extract OS 00 'MS-DOS' 0006 General Purpose Flag 0001 [Bit 0] 1 'Encryption' [Bits 1-2] 1 'Maximum Compression '0008 Compression Method 0008' Deflated '000A Last Mod Time 4E2F6B24' Tue Jan 15 13:25:08 2019 '000E CRC F1B115BD 0012 Komprimerad längd 00002904 0016 Okomprimerad längd 0000E2A5 001A Filnamn Längd 0005 001C Extra längd 001C 001E Filnamn' fil1 ' Extra ID # 0001 5455 'UT: Utökad tidstämpel' 0025 Längd 0009 0027 Flaggor '03 mod access '0028 Mod Time 5C3E2584' Tis 15 jan 13:25:08 2019 '002C åtkomsttid 5C3E27BB' ti 15 jan 13:34:35 2019 '0030 Extra ID # 0002 7875' ux: Unix Extra Type 3 '0032 Längd 000B 0034 Version 01 0035 UID Storlek 04 0036 UID 000003E8 003A GID Storlek 04 003B GID 000003E8 003F BETALNING 2943 LOCAL HEADER # 2 04034B50 2947 Extract Zip Spec 14' 2.0 '2948 Extract OS 00' MS-DOS '2949 General Purpose Flag 0001 [Bit 0] 1' Encryption '[Bits 1-2] 1' Maximum Compression '294B C ompression Method 0008 'Deflated' 294D Last Mod Time 4E2F6C56 'Tue Jan 15 13:34:44 2019' 2951 CRC EC214569 2955 Komprimerad längd 00002913 2959 Okomprimerad längd 0000E635 295D Filnamn Längd 0005 295F Extra Length 001C 2961 Filnamn 'file2' 2966 Extra ID # 0001 5455 'UT: Extended Timestamp' 2968 Length 0009 296A Flags '03 mod access '296B Mod Time 5C3E27C4' Tis 15 jan 13:34:44 2019 '296F Access Time 5C3E27BD' Tis 15 jan 13:34:37 ​​2019 '2973 Extra ID # 0002 7875 'ux: Unix Extra Type 3' 2975 Längd 000B 2977 Version 01 2978 UID Storlek 04 2979 UID 000003E8 297D GID Storlek 04 297E GID 000003E8 2982 BETALNING 5295 CENTRAL HEADER # 1 02014B50 5299 Skapad Zip Spec 1E '3.0' 529A Skapad OS 03 'Unix' 529B Extract Zip Spec 14 '2.0' 529C Extract OS 00 'MS-DOS' 529D General Purpose Flag 0001 [Bit 0] 1 'Encryption' [Bits 1-2] 1 'Maximum Compression' 529F Compression Method 0008 'Deflated' 52A1 Senaste Mod Time 4E2F6B24 'Tis 15 jan 13:25:08 2019' 52A5 CRC F1B115BD 52A9 komprimerad längd 00002904 52AD Uncompr essed Längd 0000E2A5 52B1 Filnamn Längd 0005 52B3 Extra Längd 0018 52B5 Kommentar Längd 0000 52B7 Diskstart 0000 52B9 Int Filattribut 0001 [Bit 0] 1 Textdata 52BB Ext File Attribut 81B40000 52BF Lokal Header Offset 00000000 52C3 Filnamn 'file1' 52C8 Extra ID # 0001 5455 'UT: Utökad tidstämpel' 52CA Längd 0005 52CC-flaggor '03 mod access '52CD Mod Time 5C3E2584' Tis 15 jan 13:25:08 2019 '52D1 Extra ID # 0002 7875' ux: Unix Extra Type 3 '52D3 Längd 000B 52D5 version 01 52D6 UID storlek 04 52D7 UID 000003E8 52DB GID storlek 04 52DC GID 000003E8 52E0 CENTRAL HEADER # 2 02014B50 52E4 Skapad Zip Spec 1E '3.0' 52E5 Skapad OS 03 'Unix' 52E6 Extract Zip Spec 14 '2.0' 52E7 Extract OS 00 'MS-DOS' 52E8 Allmän flagga 0001 [Bit 0] 1 'Kryptering' [Bitar 1-2] 1 'Maximal komprimering' 52EA-komprimeringsmetod 0008 'Deflaterad' 52EC Sista modetid 4E2F6C56 'Tis 15 jan 13:34:44 2019 '52F0 CRC EC214569 52F4 komprimerad längd 00002913 52F8 Okomprimerad längd 0000E635 52FC Filnamn Längd 0005 52FE Extra längd 0018 5300 Kommentar Längd 0000 5302 Diskstart 0000 5304 Int-filattribut 0001 [Bit 0] 1 Textdata 5306 Ext-filattribut 81B40000 530A Lokal headset-offset 00002943 530E Filnamn 'fil2' 5313 Extra ID # 0001 5455 'UT: Utvidgad tidstämpel' 5315 Längd 0005 5317 Flaggor '03 mod access '5318 Mod Time 5C3E27C4' Tis 15 jan 13:34:44 2019 '531C Extra ID # 0002 7875' ux: Unix Extra Type 3 '531E Längd 000B 5320 Version 01 5321 UID Storlek 04 5322 UID 000003E8 5326 GID Storlek 04 5327 GID 000003E8 532B END CENTRAL HEADER 06054B50 532F Nummer på denna disk 0000 5331 Central Dir Disk nr 0000 5333 Poster på denna disk 0002 5335 Totala poster 0002 5337 Storlek på Central Dir 00000096 533B Offset till Central Dir 00005295 533F Kommentar Längd 0000 klar 

Zipgrep-kommandot

De zipgrep kommandot kommer att använda en grep-funktion för att hitta specifikt innehåll i dina zippade filer. Om filen är krypterad måste du ange lösenordet för krypteringen för varje fil du vill undersöka. Om du bara vill kontrollera innehållet i en enda fil från arkivet lägger du till dess namn i slutet av zipgrep-kommandot som visas nedan.

$ zipgrep risk twofiles.zip file1 [twofiles.zip] file1 lösenord: Vissa bekämpningsmedel bör förbjudas eftersom de är farliga för miljön. 

Zipinfo-kommandot

De zipinfo kommandot ger information om innehållet i en zippad fil, oavsett om den är krypterad eller inte. Detta inkluderar filnamn, storlekar, datum och behörigheter.

$ zipinfo twofiles.zip Arkiv: twofiles.zip Zip-filstorlek: 21313 byte, antal poster: 2 -rw-rw-r-- 3.0 unx 58021 Tx defN 19-jan-15 13:25 fil1 -rw-rw-r - 3.0 unx 58933 Tx defN 19-Jan-15 13:34 fil2 2 filer, 116954 byte okomprimerad, 20991 byte komprimerad: 82,1% 

Zipnote-kommandot

De zipnote kommando kan användas för att extrahera kommentarer från zip-arkiv eller lägga till dem. För att visa kommentarer, förorda bara namnet på arkivet med kommandot. Om inga kommentarer har lagts till tidigare ser du något liknande:

$ zipnote twofiles.zip @ file1 @ (kommentar ovanför denna rad) @ file2 @ (kommentar ovanför denna rad) @ (zip-filkommentar under denna rad) 

Om du vill lägga till kommentarer skriver du output från zipnote-kommandot till en fil:

$ zipnote twofiles.zip> kommentarer 

Därefter redigerar du filen du just har skapat och sätt in dina kommentarer ovanför (kommentera ovanför denna rad) rader. Lägg sedan till kommentarerna med ett zipnote-kommando som det här:

$ zipnote -w twofiles.zip < comments 

Zipsplit-kommandot

De zipsplit kommando kan användas för att dela ett zip-arkiv i flera zip-arkiv när originalfilen är för stor - kanske för att du försöker lägga till en av filerna till en liten tumenhet. Det enklaste sättet att göra detta verkar vara att ange maxstorleken för varje zippad fildel. Denna storlek måste vara tillräckligt stor för att rymma den största inkluderade filen.

$ zipsplit -n 12000 twofiles.zip 2 zip-filer kommer att skapas (100% effektivitet) skapa: twofile1.zip skapa: twofile2.zip $ ls twofile * .zip -rw-rw-r-- 1 shs shs 10697 15 jan 14 : 52 twofile1.zip -rw-rw-r-- 1 shs shs 10702 15 jan 14:52 twofile2.zip -rw-rw-r-- 1 shs shs 21377 15 jan 14:27 twofiles.zip 

Lägg märke till hur de extraherade filerna sekventiellt heter "twofile1" och "twofile2".

Sammanfatta

De blixtlås kommandot, tillsammans med några av dess zippande landsmän, ger mycket kontroll över hur du genererar och arbetar med komprimerade filarkiv.

[Se också: Ovärderliga tips och tricks för felsökning av Linux] Gå med i nätverkets världssamhällen på Facebook och LinkedIn för att kommentera ämnen som är övertygade.