Zippen van bestanden op Linux de vele variaties en hoe ze te gebruiken

Sommigen van ons zippen al tientallen jaren bestanden op Unix- en Linux-systemen - om wat schijfruimte te besparen en bestanden samen te voegen voor archivering. Toch zijn er enkele interessante variaties op het zippen die we niet allemaal hebben geprobeerd. Dus, in dit bericht gaan we kijken naar standaard zippen en uitpakken, evenals enkele andere interessante opties voor zippen.

[Linux-tips van twee minuten: leer hoe u een groot aantal Linux-opdrachten onder de knie krijgt in deze video-tutorials van twee minuten]

Het basis zip-commando

Laten we eerst eens kijken naar de basis ritssluiting commando. Het gebruikt in wezen hetzelfde compressie-algoritme als gzip, maar er zijn een paar belangrijke verschillen. Om te beginnen wordt de opdracht gzip alleen gebruikt voor het comprimeren van een enkel bestand waarbij zip zowel bestanden kan comprimeren als ze kunnen samenvoegen tot een archief. Voor een ander ritst het gzip-commando "op zijn plaats". Met andere woorden, het laat een gecomprimeerd bestand achter - niet het originele bestand naast de gecomprimeerde kopie. Hier is een voorbeeld van gzip op het werk:

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

En hier is zip. Merk op hoe deze opdracht vereist dat er een naam wordt opgegeven voor het gecomprimeerde archief waarbij gzip eenvoudig de originele bestandsnaam gebruikt en de .gz-extensie toevoegt.

$ zip twofiles.zip bestand * toevoegen: bestand1 (82% leeggelopen) toevoegen: bestand2 (82% leeggelopen) $ ls -l -rw-rw-r-- 1 shs shs 58021 15 januari 13:25 file1 -rw-rw- r-- 1 shs shs 58933 15 jan 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 jan 13:35 twofiles.zip 

Merk ook op dat de originele bestanden daar nog steeds staan.

De hoeveelheid schijfruimte die wordt bespaard (d.w.z. de mate van verkregen compressie) hangt af van de inhoud van elk bestand. De variatie in onderstaand voorbeeld is aanzienlijk.

$ zip mybin.zip ~ / bin / * toevoegen: bin / 1 (leeggelopen 26%) toevoegen: bin / append (leeggelopen 64%) toevoegen: bin / BoD_meeting (leeggelopen 18%) toevoegen: bin / cpuhog1 (leeggelopen 14%) toevoegen: bin / cpuhog2 (opgeslagen 0%) toevoegen: bin / ff (leeggelopen 32%) toevoegen: bin / bestand. 0 (leeggelopen 1%) toevoegen: bin / loop (leeggelopen 14%) toevoegen: bin / aantekeningen (leeggelopen 23) %) toevoegen: bin / patronen (opgeslagen 0%) toevoegen: bin / runme (opgeslagen 0%) toevoegen: bin / tryme (leeggelopen 13%) toevoegen: bin / tt (leeggelopen 6%) 

De unzip-opdracht

De uitpakken commando zal de inhoud van een zipbestand herstellen en, zoals je waarschijnlijk vermoedt, het zipbestand intact laten, terwijl een vergelijkbaar gunzip-commando alleen het ongecomprimeerde bestand zou achterlaten.

$ unzip twofiles.zip Archive: 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 januari 13:34 file2 -rw-rw-r-- 1 shs shs 21289 15 januari 13:35 twofiles.zip 

De zipcloak-opdracht

De zipcloak commando versleutelt een zip-bestand en vraagt ​​je om een ​​wachtwoord tweemaal in te voeren (om ervoor te zorgen dat je het niet "fat finger") en laat het bestand op zijn plaats. Je kunt verwachten dat de bestandsgrootte een beetje afwijkt van het origineel.

$ zipcloak twofiles.zip Voer wachtwoord in: Controleer wachtwoord: encryptie: file1 encryptie: file2 $ ls -l totaal 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 13:46 twofiles.zip <== slightly larger than unencrypted version 

Houd er rekening mee dat de originele bestanden daar nog niet versleuteld staan.

De opdracht zipdetails

De zipdetails commando gaat je details laten zien - een veel details over een gecomprimeerd bestand, waarschijnlijk veel meer dan u wilt absorberen. Ook al kijken we naar een versleuteld bestand, zipdetails geeft wel de bestandsnamen weer, samen met wijzigingsdata, gebruikers- en groepsinformatie, bestandslengtegegevens, enz. Onthoud dat dit allemaal "metadata" zijn. We zien de inhoud van de bestanden niet.

$ 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 Compressie '0008 Compressiemethode 0008' Leeggelopen '000A Laatste mod. Tijd 4E2F6B24' di 15 jan 13:25:08 2019 '000E CRC F1B115BD 0012 Gecomprimeerde lengte 00002904 0016 Ongecomprimeerde lengte 0000E2A5 001A Lengte bestandsnaam 0005 001C Extra lengte 001C 001E Bestandsnaam' bestand1 ' Extra ID # 0001 5455 'UT: Extended Timestamp' 0025 Length 0009 0027 Flags '03 mod access '0028 Mod Time 5C3E2584' di 15 jan 13:25:08 2019 '002C Access Time 5C3E27BB' di 15 jan 13:34:35 2019 '0030 Extra ID # 0002 7875' ux: Unix Extra Type 3 '0032 Lengte 000B 0034 Versie 01 0035 UID Grootte 04 0036 UID 000003E8 003A GID Grootte 04 003B GID 000003E8 003F PAYLOAD 2943 LOKALE 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 'di 15 jan 13:34:44 2019' 2951 CRC EC214569 2955 Compressed Length 00002913 2959 Uncompressed Length 0000E635 295D File Name Length 0005 295F Extra Length 001C 2961 File name 'file2' 2966 Extra ID # 0001 5455 'UT: Extended Timestamp' 2968 Length 0009 296A Flags '03 mod access '296B Mod Time 5C3E27C4' di 15 jan 13:34:44 2019 '296F Access Time 5C3E27BD' di 15 jan 13:34:37 ​​2019 '2973 Extra ID # 0002 7875 'ux: Unix Extra Type 3' 2975 Lengte 000B 2977 Versie 01 2978 UID-maat 04 2979 UID 000003E8 297D GID-maat 04 297E GID 000003E8 2982 PAYLOAD 5295 CENTRAL HEADER # 1 02014B50 5299 Created Zip Spec 1E '3.0' 529A Created OS 03 'Unix' 529B Extract Zip Spec 14 '2.0' 529C Extract OS 00 'MS-DOS' 529D Vlag voor algemeen gebruik 0001 [Bit 0] 1 'Encryption' [Bits 1-2] 1 'Maximale compressie' 529F Compressiemethode 0008 'Deflated' 52A1 Last Mod Time 4E2F6B24 'di 15 jan 13:25:08 2019' 52A5 CRC F1B115BD 52A9 Gecomprimeerde lengte 00002904 52AD Uncompr essed Lengte 0000E2A5 52B1 Bestandsnaam Lengte 0005 52B3 Extra Lengte 0018 52B5 Commentaar Lengte 0000 52B7 Schijf Start 0000 52B9 Int Bestandskenmerken 0001 [Bit 0] 1 Tekstgegevens 52BB Ext Bestandskenmerken 81B40000 52BF Lokale Kop Offset 00000000 52C3 Bestandsnaam 'bestand1' 52C8 Extra ID # 0001 5455 'UT: Extended Timestamp' 52CA Length 0005 52CC Flags '03 mod access '52CD Mod Time 5C3E2584' di jan 15 13:25:08 2019 '52D1 Extra ID # 0002 7875' ux: Unix Extra Type 3 '52D3 Length 000B 52D5 Versie 01 52D6 UID Grootte 04 52D7 UID 000003E8 52DB GID Grootte 04 52DC GID 000003E8 52E0 CENTRALE HEADER # 2 02014B50 52E4 Gecreëerde Zip Spec 1E '3.0' 52E5 Gecreëerd OS 03 'Unix' 52E6 Extract Zip Spec 14 '2.0' 52E7 Extract OS 00 'MS-DOS' 52E8 Vlag voor algemeen gebruik 0001 [Bit 0] 1 'Encryption' [Bits 1-2] 1 'Maximum Compression' 52EA Compression Method 0008 'Deflated' 52EC Last Mod Time 4E2F6C56 'di 15 jan 13:34:44 2019 '52F0 CRC EC214569 52F4 Gecomprimeerde lengte 00002913 52F8 Ongecomprimeerde lengte 0000E635 52FC Bestandsnaam lengte 0005 52FE Extra lengte 0018 5300 Commentaarlengte 0000 5302 Schijfstart 0000 5304 Int-bestandskenmerken 0001 [Bit 0] 1 Tekstgegevens 5306 Ext-bestandskenmerken 81B40000 530A Lokale header-offset 00002943 530E Bestandsnaam 'file2' 5313 Extra ID # 0001 5455 'UT: Extended Timestamp' 5315 Lengte 0005 5317 Vlaggen '03 mod toegang '5318 Mod Tijd 5C3E27C4' di 15 jan 13:34:44 2019 '531C Extra ID # 0002 7875' ux: Unix Extra Type 3 '531E Lengte 000B 5320 Versie 01 5321 UID Grootte 04 5322 UID 000003E8 5326 GID-grootte 04 5327 GID 000003E8 532B EINDE CENTRALE HEADER 06054B50 532F Nummer van deze schijf 0000 5331 Centrale Dir-schijf nr 0000 5333 Aantal vermeldingen op deze schijf 0002 5335 Totaal aantal vermeldingen 0002 5337 Grootte van centrale Dir 00000096 533B Verschuiving naar centrale Dir 00005295 533F Opmerking Lengte 0000 Klaar 

De zipgrep-opdracht

De zipgrep commando gaat een grep-type functie gebruiken om bepaalde inhoud in je gezipte bestanden te lokaliseren. Als het bestand is gecodeerd, moet u voor elk bestand dat u wilt onderzoeken het wachtwoord invoeren dat voor de codering is verstrekt. Als u alleen de inhoud van een enkel bestand uit het archief wilt controleren, voegt u de naam toe aan het einde van de zipgrep-opdracht, zoals hieronder wordt weergegeven.

$ zipgrep hazard twofiles.zip file1 [twofiles.zip] file1 wachtwoord: Bepaalde pesticiden moeten worden verboden omdat ze gevaarlijk zijn voor het milieu. 

De zipinfo-opdracht

De zipinfo commando geeft informatie over de inhoud van een gezipt bestand, al dan niet versleuteld. Dit omvat de bestandsnamen, groottes, datums en toestemmingen.

$ zipinfo twofiles.zip Archief: twofiles.zip Zip-bestandsgrootte: 21313 bytes, aantal items: 2 -rw-rw-r-- 3.0 unx 58021 Tx defN 19-jan-15 13:25 file1 -rw-rw-r - 3.0 unx 58933 Tx defN 19-jan-15 13:34 file2 2 bestanden, 116954 bytes niet gecomprimeerd, 20991 bytes gecomprimeerd: 82,1% 

De zipnote-opdracht

De zipnote commando kan worden gebruikt om opmerkingen uit zip-archieven te extraheren of toe te voegen. Om opmerkingen weer te geven, voert u de naam van het archief in met de opdracht. Als er eerder geen opmerkingen zijn toegevoegd, ziet u zoiets als dit:

$ zipnote twofiles.zip @ file1 @ (opmerking boven deze regel) @ file2 @ (opmerking boven deze regel) @ (zip-bestand opmerking onder deze regel) 

Als u opmerkingen wilt toevoegen, schrijft u de uitvoer van de zipnote-opdracht naar een bestand:

$ zipnote twofiles.zip> opmerkingen 

Bewerk vervolgens het bestand dat u zojuist hebt gemaakt en plaats uw opmerkingen boven de (opmerking boven deze regel) lijnen. Voeg vervolgens de opmerkingen toe met een zipnote-opdracht zoals deze:

$ zipnote -w twofiles.zip < comments 

Het zipsplit-commando

De ritssluiting commando kan worden gebruikt om een ​​zip-archief op te splitsen in meerdere zip-archieven wanneer het oorspronkelijke bestand te groot is - misschien omdat u probeert een van de bestanden toe te voegen aan een kleine thumb drive. De eenvoudigste manier om dit te doen, lijkt te zijn om de maximale grootte voor elk van de gecomprimeerde bestandsdelen op te geven. Deze grootte moet groot genoeg zijn om het grootste opgenomen bestand te kunnen bevatten.

$ zipsplit -n 12000 twofiles.zip 2 zip-bestanden worden gemaakt (100% efficiëntie) creëren: twofile1.zip maken: twofile2.zip $ ls twofile * .zip -rw-rw-r-- 1 shs shs 10697 15 januari 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 

Merk op hoe de uitgepakte bestanden achtereenvolgens "twofile1" en "twofile2" heten.

Afronden

De ritssluiting commando, samen met enkele van zijn zipping-landgenoten, bieden veel controle over hoe u gecomprimeerde bestandsarchieven genereert en ermee werkt.

[Zie ook: onschatbare tips en trucs voor het oplossen van problemen met Linux] Word lid van de Network World-gemeenschappen op Facebook en LinkedIn om commentaar te geven op onderwerpen die voorop staan.