Hur Zip eller packa upp filer från Linux-terminalen
- Dave McKay
@TheGurkha
- Uppdaterad 28 maj 2019, 5:15pm EDT
zip-filer är ett universellt arkiv som vanligtvis används på Windows, MacOS och till och med Linux-system. Du kan skapa ett zip-arkiv eller packa upp filer från en med några vanliga Linux-terminalkommandon.
ZIP-komprimerat arkivfilformat
tack vare dominansen av ZIP-formatet i Windows-riket är ZIP-filer förmodligen den vanligaste formen av komprimerat arkiv i världen.
medan .tjära.GZ-och tar.bz2-filer är vanliga på Linux, Windows-användare skickar förmodligen ett arkiv i ZIP-format. Och om du vill arkivera några filer och skicka dem till en Windows-användare är ZIP-formatet den enklaste, mest kompatibla lösningen för alla.
relaterat: hur man extraherar filer från en .tjära.gz eller .tjära.bz2-fil på Linux
zip, unzip och andra verktyg
Du kanske redan vet att Linux och Unix-liknande operativsystem som macOS har verktyg som låter dig skapa ZIP-filer och extrahera filer från dem, kalladezip
ochunzip
. Men det finns en hel familj av relaterade verktyg som zipcloak
zipdetails
zipsplit
och zipinfo
.
vi kontrollerade några Linux-distributioner för att se om de inkluderade dessa verktyg i standardinstallationen. Alla verktyg var närvarande i Ubuntu 19.04, 18.10 och 18.04. De var också närvarande i Manjaro 18.04. Fedora 29 inkluderade zip
och unzip
, men inget av de andra verktygen och det var också fallet för CentOS.
för att installera de saknade elementen på Fedora 29, använd följande kommando:
sudo dnf install perl-IO-Compress
för att installera de saknade elementen på CentOS 7, använd följande kommando:
sudo yum install perl-IO-Compress
om något av zip-verktygen saknas från en Linux-distribution som inte nämnts ovan, använd den Linux-distributionens pakethanteringsverktyg för att installera det önskade paketet.
så här skapar du en ZIP-fil med zip-kommandot
för att skapa en ZIP-fil måste du berätta zip
namnet på arkivfilen och vilka filer som ska inkluderas i den. Du behöver inte lägga till”.zip ” förlängning till arkivnamnet, men det gör ingen skada om du gör det.
för att skapa en fil som heter source_code.zip
innehåller alla C-källkodsfiler och rubrikfiler i den aktuella katalogen, skulle du använda det här kommandot:
zip source_code *.c *.h
varje fil är listad som den läggs till. Namnet på filen och mängden komprimering som uppnåddes på den filen visas.
om du tittar på det nya ZIP-arkivet kan du se att ”.zip ” filtillägg har lagts till automatiskt av zip
.
ls -l source_code.zip
Om du inte vill se utmatningen från zip
när ZIP-filen skapas använder du -q
(tyst) alternativ.
zip -q source_code *.c *.h
inklusive kataloger i ZIP-filer
om du vill inkludera underkataloger i ZIP-filen använder du alternativet -r
(rekursivt) och inkluderar namnet på underkatalogerna-katalog på kommandoraden. För att skapa en ZIP-fil som tidigare och även inkludera arkivunderkatalogen, använd det här kommandot.
zip -r -q source_code archive/ *.c *.h
för att vara hänsynsfull mot den person som kommer att extrahera filerna från ZIP-filen du skapar är det ofta artigt att skapa ZIP-filer med filerna inuti den i en katalog. När personen som tar emot ZIP-filen extraherar den placeras alla filer snyggt i en katalog på sin dator.
i följande kommando ska vi arkivera katalogen work
och alla underkataloger. Observera att detta kommando utfärdas från den överordnade katalogen för mappen work
.
zip -r -q source_code work/
ställa in komprimeringsnivån
Du kan ställa in hur mycket komprimering som ska tillämpas på filerna när de läggs till i ZIP-arkivet. Intervallet är från 0 till 9, med 0 som ingen komprimering alls. Ju högre komprimering, desto längre tid tar det att skapa ZIP-filen. För måttligt stora ZIP-filer är tidsskillnaden inte ett betydande straff. Men då, för måttligt stora ZIP-filer, är standardkomprimeringen (nivå 6) förmodligen tillräckligt bra ändå.
för att fåzip
för att använda en viss komprimeringsnivå, skicka numret som ett alternativ på kommandoraden, med en ”-”, så här:
zip -0 -r -q source_code work/
standardkomprimeringsnivån är 6. Det finns inget behov av att ange alternativet -6
, men det gör ingen skada om du gör det.
zip -r -q source_code work/
den maximala komprimeringsnivån är Nivå 9.
zip -9 -r -q source_code work/
med valet av filer och kataloger som arkiveras här är skillnaden mellan ingen komprimering (nivå 0) och standardkomprimeringen (nivå 6) 400K. Skillnaden mellan standardkomprimeringen och den högsta komprimeringsnivån (nivå 9) är bara 4K.
det kanske inte verkar mycket, men för arkiv som innehåller hundratals eller till och med tusentals filer skulle den lilla mängden extra komprimering per fil lägga till en värdefull platsbesparing.
att lägga till lösenord till ZIP-filer
att lägga till lösenord till ZIP-filer är enkelt. Använd alternativet -e
(kryptera) och du uppmanas att ange ditt lösenord och ange det igen för verifiering.
zip -e -r -q source_code work/
så här packar du upp en ZIP-fil med unzip-kommandot
för att extrahera filerna från en ZIP-fil, använd kommandot unzip och ange namnet på ZIP-filen. Observera att du behöver tillhandahålla ”.zip ” förlängning.
unzip source_code.zip
När filerna extraheras listas de till terminalfönstret.
ZIP-filer innehåller inte detaljer om filägande. Alla filer som extraheras har ägaren inställd på användaren som extraherar dem.
precis somzip
unzip
har ett-q
(tyst) alternativ, så att du inte behöver se fillistan när filerna extraheras.
unzip -q source_code.zip
extrahera filer till en målkatalog
för att få filerna extraherade i en specifik katalog, använd alternativet -d
(katalog) och ange sökvägen till katalogen du vill att arkivet ska extraheras till.
unzip -q source_code.zip -d ./development
extrahera lösenordsskyddade ZIP-filer
om en ZIP-fil har skapats med ett lösenord kommer unzip
att be dig om lösenordet. Om du inte anger rätt lösenord kommerunzip
inte att extrahera filerna.
unzip -q source_code.zip
Om du inte bryr dig om att ditt lösenord ses av andra—inte heller om att det lagras i din kommandohistorik—kan du ange lösenordet på kommandoraden med -P
(lösenord) alternativ. (Du måste använda ett kapital ” P.”)
unzip -P fifty.treacle.cutlass -q source_code.zip
exklusive filer
om du inte vill extrahera en viss fil eller grupp av filer, använd alternativet -x
(exclude). I det här exemplet vill vi extrahera alla filer förutom de som slutar i en ”.h ” förlängning.
unzip -q source_code.zip -x *.h
skriva över filer
anta att du har extraherat ett arkiv men du har tagit bort några av de extraherade filerna av misstag.
en snabb lösning för det skulle vara att extrahera filerna igen. Men om du försöker extrahera ZIP-filen i samma katalog som tidigare, kommer unzip
att be dig om ett beslut om att skriva över filerna. Det kommer att förvänta sig ett av följande svar.
bortsett frånr
(Byt namn) svar, dessa svar är skiftlägeskänsliga.
- y: ja, Skriv över den här filen
- n: Nej, skriv inte över den här filen
- A: ALLA, Skriv över alla filer
- N: None, Skriv över ingen av filerna
- R: Byt namn, extrahera den här filen men ge den ett nytt namn. Du kommer att bli uppmanad till ett nytt namn.
för att tvingaunzip
för att skriva över befintliga filer använd alternativet-o
(Skriv över).
unzip -o -q source_code.zip
det mest effektiva sättet att ersätta de saknade filerna skulle vara att ha unzip
bara extrahera filer i arkivet som inte finns i målkatalogen. För att göra detta, använd alternativet -n
(skriv aldrig över).
unzip -n source_code.zip
titta inuti en ZIP-fil
det är ofta användbart och lärorikt att se en lista över filerna i en ZIP-fil innan du extraherar den. Du kan göra detta med alternativet -l
(listarkiv). Den leds genom less
för att göra utgången hanterbar.
unzip -l source_code.zip | less
utgången visar kataloger och filer i ZIP-filen, deras längd och tid och datum de Lades till i arkivet. Tryck på ”q”för att avsluta från less
.
det finns andra sätt att kika in i en ZIP-fil som ger olika typer av information, som vi ska se.
Lägg till ett lösenord med zipcloak-kommandot
Om du har skapat en ZIP-fil men glömt att lägga till ett lösenord, vad kan du göra? Du kan snabbt lägga till ett lösenord till ZIP-filen med kommandotzipcloak
. Passera namnet på ZIP-filen på kommandoraden. Du kommer att bli ombedd att ange ett lösenord. Du måste verifiera lösenordet genom att ange det en andra gång.
zipcloak source_code.zip
Visa filinformation med kommandot zipdetails
kommandot zipdetails
visar dig mycket information om ZIP-filen. Det enda förnuftiga sättet att hantera mängden utgång som detta kommando kan ge är att pipa det genom less
.
zipdetails source_code.zip | less
Observera att informationen kommer att innehålla filnamn även om ZIP-filen är lösenordsskyddad. Denna typ av information lagras i ZIP-filen som metadata och ingår inte i krypterad data.
Sök inuti filen med zipgrep-kommandot
zipgrep
– kommandot låter dig söka i filerna i en ZIP-fil. I följande exempel vill vi veta vilka filer i ZIP-filen som har texten ”keyval.h ” i dem.
zipgrep keyval.h source_code.zip
Vi kan se att filerna slang.c
och getval.c
innehåller strängen ”keyval.h”.Vi kan också se att det finns två kopior av var och en av dessa filer i olika kataloger i ZIP-filen.
visa Information med kommandot zipinfo
kommandotzipinfo
ger dig ännu ett sätt att titta inuti en ZIP-fil. Som tidigare rör vi utmatningen genom less
.
zipinfo source_code.zip | less
från vänster till höger visar utmatningen:
- filbehörigheterna
- versionen av verktyget som används för att skapa ZIP-filen
- den ursprungliga filstorleken
- en fil deskriptor (beskrivs nedan)
- metoden för komprimering (deflation, i detta fall)
- data och tidsstämpel
- namnet på filen och någon katalog
filen och en katalog deskriptor består av två tecken. Det första tecknet kommer att vara en ”t” eller en ”b” för att indikera en text eller binär fil. Om det är en stor bokstav är filen krypterad. Det andra tecknet kan vara en av fyra tecken. Detta tecken representerar vilken typ av metadata som ingår för den här filen: ingen, en utökad lokal rubrik, ett ”extra fält” eller båda.
- -: om det inte finns något, kommer tecknet att vara ett bindestreck
- l: om det finns en utökad lokal rubrik men inget extra fält
- x: om det inte finns någon utökad lokal rubrik men det finns ett extra fält
- X: om det finns en utökad lokal rubrik och det finns ett extra fält
dela filen med zipsplit-kommandot
om du behöver skicka ZIP-filen till någon annan men det finns storleksbegränsningar eller problem med överföringen av filen kan du använda zipsplit
kommando för att dela upp den ursprungliga zip-filen i en uppsättning mindre zip-filer.
alternativet-n
(storlek) låter dig ställa in en maximal storlek för var och en av de nya ZIP-filerna. I det här exemplet delar vi upp filen source_code.zip
. Vi vill inte att någon av de nya ZIP-filerna ska vara större än 100 KB (102400 byte).
zipsplit -n 102400 source_code.zip
storleken du väljer kan inte vara mindre än storleken på någon av filerna i ZIP-filen.
med hjälp av dessa kommandon kan du skapa dina egna ZIP-filer, packa upp ZIP-filer du får och utföra olika andra operationer på dem utan att någonsin lämna Linux-terminalen.
Dave McKay använde först datorer när stansat pappersband var på modet, och han har programmerat sedan dess. Efter över 30 år i IT-branschen är han nu en heltidsteknikjournalist. Under sin karriär har han arbetat som frilansprogrammerare, chef för ett internationellt mjukvaruutvecklingsteam, projektledare för IT-tjänster och senast som dataskyddsombud. Dave är en Linux evangelist och öppen källkod förespråkare.Läs hela Bio ”
Leave a Reply