Cum să arhivați și să dezarhivați fișierele cu Gzip pe Linux
Publicat: 2022-06-28
Există multe utilitare de comprimare a fișierelor, dar cel pe care ești garantat să îl găsești pe fiecare distribuție Linux este gzip
. Dacă înveți să folosești un singur instrument de compresie, acesta ar trebui să fie gzip
.
LEGATE: Cum funcționează compresia fișierelor?
Algoritmi și arbori
Instrumentul de comprimare a datelor gzip
a fost scris la începutul anilor 1990 și încă se găsește în fiecare distribuție Linux. Există și alte instrumente de compresie disponibile, dar indiferent pe ce computer Linux aveți nevoie să lucrați, veți găsi gzip
pe el. Deci, dacă știi cum să folosești gzip
, ești bine să mergi fără a fi nevoie să instalezi nimic.
gzip
este o implementare a algoritmului DEFLATE care a fost inventat și patentat de Phil Katz, faimosul PKZIP. Algoritmul DEFLATE s-a îmbunătățit față de algoritmii de compresie anteriori, care operau toți pe variații ale unei teme. Datele care trebuie comprimate sunt scanate, iar șirurile unice sunt identificate și adăugate la un arbore binar.
Șirurilor unice li se alocă un identificator unic în virtutea poziției lor în arbore . Tokenurile sunt folosite pentru a înlocui șirurile din date și, deoarece tokenurile sunt mai mici decât datele pe care le-au înlocuit, fișierul este comprimat. Înlocuirea jetoanelor cu șirurile originale reumflă datele înapoi la starea necomprimată.
Algoritmul DEFLATE a adăugat răsucirea că șirurilor de caractere întâlnite cel mai frecvent li s-au alocate cele mai mici jetoane și celor mai puțin frecvent întâlnite șiruri de caractere mai mari. Algoritmul DEFLATE a încorporat și idei din două metode de compresie anterioare, codarea Huffman și compresia LZ77.
La momentul scrierii, algoritmul DEFLATE are aproape trei decenii. În urmă cu trei decenii, costurile de stocare a datelor erau mari, iar vitezele de transmisie erau lente. Comprimarea datelor a fost de o importanță vitală.
Stocarea datelor este mult mai ieftină astăzi, iar vitezele de transmisie sunt mult mai rapide. Dar avem mult mai multe date de stocat, iar lumea din întreaga lume accesează servicii de stocare în cloud și streaming. Comprimarea datelor este încă de o importanță vitală , chiar dacă tot ceea ce faci este să micșorezi ceva pe care trebuie să-l încarci sau să-l transmiți, sau dacă încerci să obții puțin spațiu pe un hard disk local.
Comanda gzip
Cu cât un fișier este mai mare, cu atât compresia poate fi mai bună. Acest lucru se datorează a două motive. Una este că vor exista multe secvențe repetate, identice de octeți într-un fișier mare. Al doilea motiv este că lista de șiruri și jetoane trebuie să fie stocată în fișierul comprimat, astfel încât decompresia să poată avea loc. Cu un fișier foarte mic care deasupra capului poate șterge beneficiile compresiei. Dar chiar și cu un fișier destul de mic, este probabil să existe o anumită reducere a dimensiunii.
Comprimarea unui fișier
Pentru a comprima un fișier, tot ce trebuie să faceți este să transmiteți numele fișierului la comanda gzip
. Vom verifica dimensiunea originală a fișierului, o vom comprima și apoi vom verifica dimensiunea fișierului comprimat.
ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*
Fișierul original, o foaie de calcul numită „calc-sheet.ods” are 11 KB, iar fișierul comprimat, cunoscut și ca fișier de arhivă, are 9,3 KB. Rețineți că numele fișierului arhivă este numele fișierului original cu „.gz” atașat la acesta.
Prima utilizare a comenzii ls
vizează un anumit fișier, foaia de calcul. A doua utilizare a ls
caută toate fișierele care încep cu „calc-”, dar găsește doar fișierul comprimat. Asta pentru că, în mod implicit, gzip
creează fișierul arhivă și șterge fișierul original.
Asta nu este o problemă. Dacă aveți nevoie de fișierul original, îl puteți prelua din fișierul de arhivă. Dar dacă preferați să păstrați fișierul original, puteți utiliza opțiunea -k
(păstrare).
gzip -k calc-sheet.ods
ls -lh calc-sheet.*
De data aceasta, fișierul original ODS este păstrat.
Decomprimarea unui fișier
Pentru a decomprima un fișier de arhivă GZ, utilizați opțiunea -d
(decomprimare). Acest lucru va extrage fișierul comprimat din arhivă și îl va decomprima astfel încât să nu se distingă de fișierul original.
ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*
De data aceasta, putem vedea că gzip
a șters fișierul arhivă după extragerea fișierului original. Pentru a păstra fișierul de arhivă, trebuie să folosim din nou opțiunea -k
(păstrare), precum și opțiunea -d
(decomprimare).
ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

De data aceasta, gzip nu șterge fișierul arhivă.
RELATE: De ce fișierele șterse pot fi recuperate și cum le puteți preveni
Decomprimare și suprascriere
Dacă încercați să extrageți un fișier dintr-un director în care există fișierul original – sau un fișier diferit cu același –, gzip
vă va solicita să alegeți să abandonați extragerea sau să suprascrieți fișierul existent.
gzip -d text-file.txt.gz
Dacă știți dinainte că sunteți fericit să aveți fișierul din director suprascris de fișierul din arhivă, utilizați opțiunea -f (forțare).
gzip -df text-file.txt.gz
Fișierul este suprascris și veți reveni în tăcere la linia de comandă.
Comprimarea arborilor directoare
Opțiunea -r
(recursivă) face ca gzip
să comprima fișierele dintr-un întreg arbore de directoare. Dar rezultatul ar putea să nu fie cel așteptat.
Iată arborele de directoare pe care îl vom folosi în acest exemplu. Fiecare directoare conține un fișier text.
nivelul copacului1
Să folosim gzip
în arborele de directoare și să vedem ce se întâmplă.
gzip -r level1/
nivelul copacului1
Rezultatul este că gzip
a creat un fișier arhivă pentru fiecare fișier text din structura directoarelor. Nu a creat o arhivă a întregului arbore de directoare. De fapt, gzip
poate pune doar un singur fișier într-o arhivă.
Putem crea un fișier arhivă care conține un arbore de directoare și toate fișierele sale, dar trebuie să punem în joc o altă comandă. Programul tar
este folosit pentru a crea arhive ale multor fișiere, dar nu are propriile sale rutine de compresie. Dar, folosind opțiunile corespunzătoare cu tar
, putem determina tar
să împingă fișierul arhivă prin gzip
. Astfel obținem un fișier arhivă comprimat și o arhivă cu mai multe fișiere sau mai multe directoare.
tar -czvf level1.tar.gz level1
Opțiunile de tar
sunt:
- c : Creați o arhivă.
- z : Împingeți fișierele prin
gzip
. - v : Mod verbal. Imprimați în fereastra terminalului ce face
tar
. - f level1.tar.gz : Nume de fișier de utilizat pentru fișierul arhivă.
Aceasta arhivează structura arborelui de directoare și toate fișierele din arborele de directoare.
RELATE: Cum să comprimați și să extrageți fișiere folosind comanda tar pe Linux
Obținerea de informații despre arhive
Opțiunea -l
(listă) oferă câteva informații despre un fișier arhivă. Vă arată dimensiunile comprimate și necomprimate ale fișierului din arhivă, raportul de compresie și numele fișierului.
gzip -l level1.tar.gz
gzip -l text-file.txt.gz
Puteți verifica integritatea unui fișier arhivă cu opțiunea -t
(test).
gzip -t level1.tar.gz
Dacă totul este bine, veți reveni în tăcere la linia de comandă. Nicio veste nu este o veste bună.
Dacă arhiva este coruptă sau nu este o arhivă, vi se spune despre aceasta.
gzip -t not-an-archive.gz
Viteză versus compresie
Puteți alege să prioritizați viteza de creare a arhivei sau gradul de compresie. Faceți acest lucru oferind un număr ca opțiune, de la -1
până la top -9
. Opțiunea -1
oferă cea mai mare viteză la sacrificarea compresiei și -9
oferă cea mai mare compresie la sacrificarea vitezei.
Dacă nu furnizați una dintre aceste opțiuni, gzip folosește -6
.
gzip -1 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -9 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -6 calc-sheet.ods
ls -lh calc-sheet.ods.gz
Cu un fișier la fel de mic ca acesta, nu am văzut nicio diferență semnificativă în viteza de execuție, dar a existat o mică diferență de compresie.
Interesant este că nu există nicio diferență între utilizarea compresiei de nivel 9 și compresie de nivel 6. Puteți strânge doar atât de multă compresie din orice fișier și, în acest caz, acea limită a fost atinsă cu compresia de nivel 6. Pornirea lui până la 9 nu a adus nicio reducere suplimentară a dimensiunii fișierelor. Cu fișiere mai mari, diferența dintre nivelul 6 și nivelul 9 ar fi mai pronunțată.
Comprimat, neprotejat
Nu confunda compresia cu criptarea sau orice formă de protecție. Comprimarea unui fișier nu îi oferă nicio securitate sau confidențialitate îmbunătățită. Oricine are acces la fișierul dvs. poate folosi gzip
pentru a-l decomprima.
RELATE: Listați cele mai mari 10 fișiere sau directoare de pe Linux