Com comprimir o descomprimir fitxers des del terminal Linux

Els fitxers ZIP són un arxiu universal que s’utilitza habitualment en sistemes Windows, macOS i fins i tot Linux. Podeu crear un arxiu zip o descomprimir fitxers a partir d’un amb algunes ordres habituals del terminal Linux.

El format d'arxiu comprimit ZIP

Gràcies al domini del format ZIP a l’àmbit de Windows, els fitxers ZIP són probablement la forma d’arxiu comprimit més habitual del món.

Tot i que els fitxers .tar.gz i tar.bz2 són habituals a Linux, els usuaris de Windows probablement us enviaran un arxiu en format ZIP. I, si voleu arxivar alguns fitxers i enviar-los a un usuari de Windows, el format ZIP serà la solució més fàcil i compatible per a tothom.

RELACIONATS:Com extreure fitxers d'un fitxer .tar.gz o .tar.bz2 a Linux

zip, descomprimir i altres utilitats

Potser ja sabeu que els sistemes operatius similars a Linux i Unix, com ara macOS, tenen eines que us permeten crear fitxers ZIP i extreure’n fitxers, anomenats cremallera i descomprimir. Però hi ha tota una família d’utilitats relacionades, com ara cremallera, zipdetails, zipsplit , i zipinfo.

Hem comprovat algunes distribucions de Linux per veure si inclouen aquestes utilitats a la instal·lació estàndard. Totes les utilitats estaven presents a Ubuntu 19.04, 18.10 i 18.04. També van ser presents a Manjaro 18.04. Fedora 29 inclosa cremallera i descomprimir, però cap de les altres utilitats i aquest també va ser el cas de CentOS.

Per instal·lar els elements que falten a Fedora 29, utilitzeu l'ordre següent:

sudo dnf install perl-IO-Compress

Per instal·lar els elements que falten a CentOS 7, utilitzeu l'ordre següent:

sudo yum instal·la perl-IO-Compress

Si falta alguna de les utilitats zip en una distribució Linux que no s’ha esmentat anteriorment, utilitzeu l’eina de gestió de paquets de la distribució Linux per instal·lar el paquet requerit.

Com es crea un fitxer ZIP amb l'ordre zip

Per crear un fitxer ZIP, ho heu de dir cremallera el nom del fitxer d’arxiu i quins fitxers hi voleu incloure. No cal que afegiu l'extensió ".zip" al nom de l'arxiu, però no ho farà si ho feu.

Per crear un fitxer anomenat codi_font.zip que conté tots els fitxers de codi font i fitxers de capçalera del directori actual, utilitzeu aquesta ordre:

zip source_code * .c * .h

Cada fitxer apareix a mesura que s’afegeix. Es mostra el nom del fitxer i la quantitat de compressió aconseguida en aquest fitxer.

Si mireu el nou arxiu ZIP, podeu veure que l'extensió de fitxer ".zip" ha estat afegida automàticament per cremallera.

ls -l codi_font.zip

Si no voleu veure la sortida de cremallera a mesura que es crea el fitxer ZIP, utilitzeu el fitxer -q (silenciosa) opció.

zip -q codi font * .c * .h

Inclou els directoris als fitxers ZIP

Per incloure subdirectoris al fitxer ZIP, utilitzeu el fitxer -r (recursiva) i incloure el nom del subdirectori a la línia d'ordres. Per crear un fitxer ZIP com abans i incloure també el subdirectori d'arxiu, utilitzeu aquesta ordre.

zip -r -q arxiu de codi font / * .c * .h

Per tenir en compte la persona que extreurà els fitxers del fitxer ZIP que esteu creant, sovint és educat crear fitxers ZIP amb els fitxers que hi ha dins d’un directori. Quan la persona que rep el fitxer ZIP l'extreu, tots els fitxers es col·loquen perfectament dins d'un directori del seu equip.

A l'ordre següent, arxivarem el fitxer treballar directori i tots els subdirectoris. Tingueu en compte que aquesta ordre s'està emetent des de directori pare del treballar carpeta.

zip -r -q codi font treballa /

Configuració del nivell de compressió

Podeu definir la quantitat de compressió que s'aplica als fitxers a mesura que s'afegeixen a l'arxiu ZIP. L'interval és de 0 a 9, sense que 0 sigui cap compressió. Com més gran sigui la compressió, més temps es necessita per crear el fitxer ZIP. Per als fitxers ZIP de mida modesta, la diferència horària no suposa una penalització significativa. Però llavors, per als fitxers ZIP de mida modesta, la compressió per defecte (nivell 6) probablement sigui prou bona de totes maneres.

Aconseguir cremallera per utilitzar un nivell de compressió específic, passeu el número com a opció a la línia d'ordres, amb un "-", així:

zip -0 -r -q codi font treballa /

El nivell de compressió per defecte és 6. No cal proporcionar el fitxer -6 opció, però no farà cap mal si ho feu.

zip -r -q codi font treballa /

El nivell màxim de compressió és el nivell 9.

zip -9 -r -q codi font treballa /

Amb la selecció de fitxers i directoris arxivats aquí, la diferència entre cap compressió (nivell 0) i la compressió per defecte (nivell 6) és de 400K. La diferència entre la compressió predeterminada i el nivell més alt de compressió (nivell 9) és només de 4K.

Pot ser que això no sembli molt, però per als arxius que contenen centenars o fins i tot milers de fitxers, la petita quantitat de compressió addicional per fitxer sumaria un estalvi d’espai que valgui la pena.

Addició de contrasenyes als fitxers ZIP

Afegir fàcilment les contrasenyes als fitxers ZIP. Utilitzar el -e (xifrar) i se us demanarà que introduïu la vostra contrasenya i que la torneu a introduir per verificar-la.

zip -e -r -q treball de codi font /

Com descomprimir un fitxer ZIP amb l’ordre Unzip

Per extreure els fitxers d'un fitxer ZIP, utilitzeu l'ordre descomprimir i proporcioneu el nom del fitxer ZIP. Tingueu en compte que vosaltres fer heu de proporcionar l'extensió ".zip".

descomprimiu codi font.zip

A mesura que s'extreuen els fitxers, es mostren a la finestra del terminal.

Els fitxers ZIP no contenen detalls sobre la propietat dels fitxers. Tots els fitxers que s’extreuen tenen el propietari establert a l’usuari que els extreu.

Igual que cremallera, descomprimir-q (silenciosa), de manera que no cal que vegeu la llista de fitxers a mesura que s’extreuen els fitxers.

descomprimir -q source_code.zip

Extracció de fitxers a un directori de destinació

Per extreure els fitxers en un directori específic, utilitzeu el fitxer -d (directori) i proporcioneu el camí d'accés al directori al qual voleu extreure l'arxiu.

unzip -q source_code.zip -d ./development

Extreu fitxers ZIP protegits per contrasenya

Si s’ha creat un fitxer ZIP amb una contrasenya, descomprimir us demanarà la contrasenya. Si no proporcioneu la contrasenya correcta,descomprimir no extreurà els fitxers.

descomprimir -q source_code.zip

Si no us interessa que la vostra contrasenya la vegin altres persones, ni que s’emmagatzemi a l’historial d’ordres, podeu proporcionar la contrasenya a la línia d’ordres amb -P (contrasenya) opció. (Heu d'utilitzar una "P." majúscula)

descomprimiu -P cinquanta.treacle.cutlass -q codi_font.zip

Excloent fitxers

Si no voleu extreure un fitxer concret o un grup de fitxers, utilitzeu el fitxer -x (excloure) opció. En aquest exemple, volem extreure tots els fitxers a part dels que acaben en una extensió ".h".

descomprimir -q codi_font.zip -x * .h

Sobreescrivint fitxers

Suposem que heu extret un arxiu però heu suprimit alguns dels fitxers extrets per error.

Una solució ràpida per a això seria extreure els fitxers una vegada més. Però si intenteu extreure el fitxer ZIP al mateix directori que abans, descomprimir us demanarà una decisió sobre la sobreescriptura dels fitxers. S'espera una de les respostes següents.

A part del r (canvia el nom) de la resposta, aquestes respostes distingeixen entre majúscules i minúscules.

  • y: Sí, sobreescriviu aquest fitxer
  • n: No, no sobreescriviu aquest fitxer
  • A: Tot, sobreescriviu tots els fitxers
  • N: Cap, sobreescriviu cap dels fitxers
  • r: Canvieu el nom, extreu aquest fitxer però doneu-li un nom nou. Se us demanarà un nom nou.

Forçar descomprimir per sobreescriure qualsevol fitxer existent utilitzeu el fitxer -o (sobreescriure) opció.

descomprimir -o -q codi_font.zip

La forma més eficient de substituir els fitxers que falten seria tenir descomprimir només extreu els fitxers que hi hagi a l'arxiu no al directori de destinació. Per fer-ho, utilitzeu el fitxer -n (mai sobreescriure) opció.

descomprimir -n codi_font.zip

Mirant dins d'un fitxer ZIP

Sovint és útil i instructiu veure una llista dels fitxers d’un fitxer ZIP abans d’extreure’l. Podeu fer-ho amb -l opció (arxiu de llista). Es passa a través de canonades menys perquè la sortida sigui manejable.

descomprimir -l codi_font.zip | menys

La sortida mostra els directoris i fitxers del fitxer ZIP, la seva longitud i la data i hora que es van afegir a l'arxiu. Premeu "q" per sortir menys.

Hi ha altres maneres d’observar un fitxer ZIP que ofereixen diferents tipus d’informació, com veurem.

Afegiu una contrasenya amb l'ordre zipcloak

Si heu creat un fitxer ZIP però heu oblidat afegir una contrasenya, què podeu fer? Podeu afegir ràpidament una contrasenya al fitxer ZIP mitjançant el fitxer cremallera comandament. Passeu el nom del fitxer ZIP a la línia d'ordres. Se us demanarà una contrasenya. Heu de verificar la contrasenya introduint-la una segona vegada.

zipcloak source_code.zip

Veure els detalls del fitxer amb l'ordre zipdetails

El zipdetails l'ordre us mostrarà un molt d'informació relativa al fitxer ZIP. L'única manera assenyada de gestionar la quantitat de sortida que pot donar aquesta ordre és introduir-la menys .

zipdetails source_code.zip | menys

Tingueu en compte que la informació inclourà noms de fitxer encara que el fitxer ZIP estigui protegit amb contrasenya. Aquest tipus d'informació s'emmagatzema al fitxer ZIP com a metadades i no forma part de les dades xifrades.

Cerqueu dins del fitxer amb l'ordre zipgrep

El zipgrep La comanda us permet cercar dins dels fitxers en un fitxer ZIP. A l'exemple següent, volem saber quins fitxers del fitxer ZIP contenen el text "keyval.h".

zipgrep keyval.h source_code.zip

Podem veure que els fitxers argot.c i getval.c conté la cadena "keyval.h". També podem veure que hi ha dues còpies de cadascun d'aquests fitxers en diferents directoris del fitxer ZIP.

Veure informació amb l'ordre zipinfo

El zipinfo La comanda us ofereix una altra forma de mirar dins d'un fitxer ZIP. Com abans, passem per la sortida menys.

zipinfo source_code.zip | menys

D'esquerra a dreta la sortida mostra:

  • Els permisos del fitxer
  • La versió de l'eina utilitzada per crear el fitxer ZIP
  • La mida original del fitxer
  • Un descriptor de fitxers (descrit a continuació)
  • El mètode de compressió (deflació, en aquest cas)
  • Les dades i el segell de temps
  • El nom del fitxer i de qualsevol directori

El descriptor de fitxers està format per dos caràcters. El primer caràcter serà una "t" o una "b" per indicar un fitxer de text o binari. Si es tracta d’una lletra majúscula, el fitxer es xifra. El segon personatge pot ser un dels quatre caràcters. Aquest caràcter representa quin tipus de metadades s’inclouen per a aquest fitxer: cap, capçalera local ampliada, un “camp addicional” o tots dos.

  • -: Si no n'hi ha cap, el caràcter serà un guionet
  • l: si hi ha una capçalera local ampliada però no hi ha cap camp addicional
  • x: si no hi ha cap capçalera local ampliada però hi ha un camp addicional
  • X: si hi ha una capçalera local ampliada i hi ha un camp addicional

Dividiu el fitxer amb l'ordre zipsplit

Si necessiteu enviar el fitxer ZIP a una altra persona, però hi ha restriccions de mida o problemes amb la transmissió del fitxer, podeu utilitzar el zipsplit ordre per dividir el fitxer ZIP original en un conjunt de fitxers ZIP més petits.

El -n L'opció (mida) us permet establir una mida màxima per a cadascun dels fitxers ZIP nous. En aquest exemple, dividim el codi_font.zip dossier. No volem que cap fitxer ZIP nou superi els 100 KB (102400 bytes).

zipsplit -n 102400 source_code.zip

La mida que trieu no pot ser inferior a la mida de cap fitxer del fitxer ZIP.

Mitjançant aquestes ordres, podeu crear els vostres propis fitxers ZIP, descomprimir els fitxers ZIP que rebeu i realitzar diverses altres operacions sense haver de sortir mai del terminal Linux.