next up previous contents
Vidare: vi. Uppåt: Att använda Slackware Linux. Tillbaka: Grundläggande nätverkskommandon.

Att arkivera filer.

I Slackware Linux finns flera program, som kan användas till att komprimera och arkivera filer. Dessa program kommer särskilt väl till pass, när man vill göra säkerhetskopieringar eller sända filer emellan maskiner i ett nätverk. Där ingår program för hantering av unixarkiv liksom för hantering av windowsarkiv.

gzip.

gzip(2) är GNU:s filkomprimeringsprogram. Det komprimerar enstaka filer var för sig. Kommandot användes på följande sätt:

   $ gzip <infil>
Den resulterande filen kommer att heta infil.gz och är vanligen mindre än infil. Lägg märke till, att infil.gz ersätter infil. Detta betyder, att infil inte längre finns kvar, om än det finns en gzippad kopia av denna fil. Vanliga textfiler komprimeras väl, medan jpeg-bilder, mp3-musikfiler och andra liknande filer inte går så bra att komprimera, eftersom de redan är komprimerade. Det grundläggande användningssättet går balansgång emellan kompressionsgrad och komprimeringstid. Största möjliga kompression ernås med följande kommando:

   $ gzip -9 <infil>
Nu tar det längre tid att komprimera filen, men den resulterande filen blir så liten, som gzip över huvud taget förmår göra den. Lägre värden på flaggan ger snabbare komprimering, men filen förminskas inte lika mycket.

Expanderandet av gzippade filer kan genomföras med endera av två kommandon, vilka egentligen är ett och samma program. gzip expanderar vilken som helst fil med igenkänd filnamnsändelse för komprimerade filer. En sådan filnamnsändelse är en av följande: .gz, -gz, .z, -z, .Z eller -Z. I första hand använder man kommandot gunzip(1) till att expandera en fil:

   $ gunzip infil.gz
Detta ger en expanderad version av infil i aktuell katalog, och filnamnsändelsen .gz är avlägsnad ifrån filnamnet.

Ett annat sätt att expandera en gzippad fil är att använda kommandot gzip med flaggan -d på filen:

   $ gzip -d infil.gz
Detta får samma verkan som föregående bruk av gunzip. Anledningen därtill är enkel: gunzip är bara en symbolisk länk till /bin/gunzip:

   $ cd /usr/bin
   $ ls -l gunzip
   lrwxrwxrwx   1 root  root  9 Feb  2 09:45 gunzip -> /bin/gzip

Att köra gunzip innebär således i själva verket endast att köra gzip under ett annat namn. Programmet kan självt avgöra, hur det har anropats, och vidtaga motsvarande, lämpliga åtgärder. I detta fall vet gzip, att man har kallat på det såsom gunzip och kommer följaktligen att expandera filen. Således kan man använda gzip eller gunzip till att expandera vilken som helst gzippad fil.

bzip2.

bzip2 är ett alternativt komprimeringsprogram, som medföljer Slackware Linux. Det använder en annan komprimeringsalgoritm än gzip, vilken ger några fördelar och några nackdelar. Den främsta fördelen för bzip2 är filstorleken. bzip2 komprimerar nästan alltid bättre än gzip I en del fall kan detta leda till dramatiskt förminskade filer. Detta kan vara till stor fördel för folk med långsamma modemförbindelser.

Nackdelen med bzip2 är den, att det i allmänhet är mer CPU-intensivt än gzip. Detta betyder, att det tar längre tid att bzippa en fil och att detta belastar CPU mer, än om man skulle gzippa samma fil. När man överväger vilket komprimeringsprogram, man skall använda, så måste man väga snabbhet emot kompression och avgöra vilketdera, som är viktigast.

bzip2 brukas på liknande sätt som gzip, så här skall inte spillas mycket tid på att diskutera detta. Man bzippar en fil på följande vis:

   $ bzip2 infil
Den resulterande filen blir vanligen mindre än infilen och kallas infil.bz2. Liksom i fallet gzip, så kommer infilen inte längre att finnas till, eftersom bzip2 ersätter infilen med en komprimerad kopia.

Man kan även använda en siffra till växel för att ange kompressionsgraden, liksom med gzip. Följande exempel visar, hur man skall uppnå maximal kompression genom bzip2 och avsevärd CPU-insats:

   $ bzip2 -9 infil
Det finns två kommandon till att expandera filer med .bz2-ändelsen, liksom i fallet med gzip; man kan använda bzip2 eller bunzip2(1) till att expandera bzippade filer. När man använder bzip2, kräver detta en växel:

   $ bzip2 -d infil.bz2
Detta expanderar den bzippade filen och ersätter den med en expanderad kopia. Denna resulterande fil saknar även ändelsen .bz2. På liknande sätt kan man använda bunzip2 till att expandera filen:

   $ bunzip2 infil.bz2
Man får samma uppförande i bägge fallen, tack vare en symbolisk länk. Om vi kontrollerar /bin/bunzip2, så visar det sig vara en symlänk till /bin/bzip2. Det utnyttjar samma knep, som gzip. Man skall upptäcka, att detta är ett älsklingsknep för linuxprogrammerare, att man kan kalla på ett och samma program men med olika namn för att få olika uppförande.

$ cd /bin
$ ls -l bunzip2
lrwxrwxrwx   1 root  root      5 Feb  2 09:45 /bunzip2 -> bzip2

tar.

tar(1) är GNU tape archiver. Den tar flera filer eller kataloger och skapar av dem en enda stor fil. Detta gör det möjligt att komprimera ett helt katalogträd, vilket är omöjligt med bruk av gzip eller bzip2 enbart. tar har många växlar, vilka förklaras på dess manualsida. Detta avsnitt skall endast behandla några av de vanligaste användningarna.

Det vanligaste sättet att använda tar är att expandera och packa upp ett paket, som man har laddat ner ifrån nätet. De flesta paketfiler har ändelsen .tar.gz. De är allmänt kända såsom »tarballs«. Detta betyder, att flera filer har arkiverats med tar till en fil, som sedan komprimerats med gzip. Man kan även få se ändelsen .tar.Z. Det betyder samma sak, men denna ändelse ser man vanligen på äldre unixsystem.

Eller också får man se en fil med ändelsen .tar.bz2 någonstans. Källkoden till linuxkärnan distribueras på så vis, eftersom det blir mindre filer att ladda ner. Man gissar sig till, att detta är flera filer, som arkiverats med tar och därefter komprimerats med bzip2.

Man kan få ut alla filer ur ett sådant arkiv genom att använda tar och några växlar. Om man skall packa upp en komprimerad tarboll, behöver man använda -z-flaggan, som anger, att filen först skall expanderas med gunzip. Det vanligaste sättet att packa upp en sådan »tjärboll« är detta:

   $ tar -xvzf hejaz.tar.gz
Det var en hel del växlar. Vad betyder de? Flaggan -x betyder extrahera. Detta är viktigt, ty det talar om för tar precis vilken åtgärd, det skall vidtaga med den inmatade filen. I detta fall skall vi dela upp den i alla de filer, den skapats ur. Flaggan -v innebär, att det skall ske verbose (ordrikt). Detta gör, att en lista över filerna rullar upp efter hand som de packas upp. Man kan mycket väl låta bli detta val, om än det vore en smula tråkigt. Eller också skulle man kunna välja -vv för att tar skall vara very verbose och skriva ut ännu mer information om varenda uppackad fil. Flaggan -z anger, att filen före uppackning skall expanderas med gzip. Slutligen anger växeln -f, att nästkommande textsträng är namnet på den fil, som skall behandlas.

Det finns flera olika sätt att skriva detta kommando. På äldre system utan GNU tar kan man få se det skrivet så här:

   $ gzip -dc hejaz.tar.gz | tar -xvf -
Detta zippar upp filen och skicka utmatningen till tar. Eftersom gzip skriver sin utmatning till standard out om man befaller det, så skriver detta kommando den expanderade filen till standard out. Rörledningen sänder det vidare till tar att packas upp. Bindestrecket till sist betyder, att tar skall arbeta med standard input. Det packar upp den dataström, som kommer ifrån gzip, och skriver utmatningen till disk.

Ett annat sätt att skriva den första kommandoraden är att utelämna bindestrecket före flaggorna, så här:

   $ tar xvzf hejaz.tar.gz
Man kan också stöta på ett bzippat arkiv. Den version av tar, som medföljer Slackware Linux, kan hantera dem på samma sätt som gzippade arkiv. I stället för -z skall man då använda -y:

   $ tar -xvyf foo.tar.bz2
Det är viktigt att lägga märke till, att tar packar upp filer i förhandenvarande katalog. Om vi skulle ha ett arkiv i /tmp, som vi ville expandera i hemkatalogen, så finns två möjligheter. För det första skulle man kunna flytta filen till hemkatalogen och sedan köra den igenom tar. Eller också skulle man kunna ange sökvägen till arkivfilen på kommandoraden:

   $ tar -xvzf /tmp/bar.tar.gz
Om då hemkatalogen är aktuell katalog, så packas arkivet upp i hemkatalogen, medan den ursprungliga komprimerade filen finns kvar i /tmp.

På andra plats bland vanligt bruk av tar kommer skapandet av arkivfiler; det behövs bara några andra växlar till det.

För att skapa ett komprimerat tar-arkiv av alla filer i aktuell katalog (inberäknat underkataloger med filer), så skulle man använda tar som så:

   $ tar -cvzf arkiv.tar.gz .
På denna kommandorad användes flaggan -c som direktiv till tar att skapa (create) ett arkiv, medan -z får arkivet att komprimeras med gzip. archive.tar.gz är den fil, man vill skapa. Man kan kalla den vad man vill och om man anger en fullständig sökväg, så hamnar arkivet i angiven katalog. Här är ett exempel på det:

   $ tar -cvzf /tmp/arkiv.tar.gz .
Arkivet hamnar då i /tmp. Man kan även räkna upp alla filer och kataloger, som skall ingå i arkivet, direkt efter kommandot. I detta fall använder vi punkten . till att beteckna aktuell katalog, som skall arkiveras. Denna punkt skulle kunna ersättas med en lista över olika filer, eller vad man nu vill arkivera.

zip.

Slutligen finns två tillbehör, som kan användas på zipfiler. Sådana är mycket vanliga i windowsvärlden, så att linuxprogram måste kunna hantera dem. Komprimeringsprogrammet kallas zip(1), och motsvarande expanderingsprogram kallas unzip(1).

Att komprimera en fil är lätt:

   $ zip foo *
Detta skapar filen foo.zip, som innehåller alla filer i aktuell katalog. zip lägger av sig själv till ändelsen .zip, så man behöver inte ange det i filnamnet. Man kan även göra en rekursiv arkivering genom katalogen och dess underkataloger:

  $ zip -r foo *
Det är lika lätt att packa upp och expandera:

   $ unzip foo
Detta packar upp och expanderar filerna i arkivfilen foo.zip, inberäknat alla kataloger i arkivet.

Ziptillbehören har flera avancerade växlar för att skapa självuppackande arkiv, utelämna filer, styra filstorleken, skriva ut vad som händer och mycket mer. Se manualsidorna för zip och unzip.

Sammanfattning.

Detta kapitel har behandlat de program, som användes till att komprimera och expandera arkivfiler. Man bör nu veta, vad en arkivfil är, hur man skapar en sådan med tar och hur man väljer komprimeringsprogram; hur man expanderar ett arkiv och hur man hanterar windowsarkiv. Vid nästan alla upp- och nerladdningar kommer man i kontakt med arkiv, så att detta är viktiga kunskaper och färdigheter.


next up previous contents
Vidare: vi. Uppåt: Att använda Slackware Linux. Tillbaka: Grundläggande nätverkskommandon.


Denna översättning ifrån engelskan är utförd av Erik Jonsson <[email protected]> efter Slackware Linux Essentials, officiell handbok för Slackware Linux.

Denna översättning tillhandahålles liksom engelskspråkiga originalet enligt villkoren i GNU General Public License (GPL).
Uppgifterna om författarnas och översättarens namn får ej avlägsnas, utplånas eller eljest göras oläsliga.
Förvaras åtkomligt.
Bäst före: senaste ändringsdatum.
Äldre versioner bör förstöras.
Senast ändrad Tue Oct 24 09:36:13 CEST 2000

Hela boken finns här även beredd för utskrift i PDF-filen slwhbk.pdf.

http://www.slackware.com/http://www.sslug.dk/Ser bra ut i vilken vävläsare som helst.


Generaldepoten — Emil Tusens Kulturpalats.
Om goda kagor och torra kakor (»cookies«).

Innehåll:

Litteraturförteckning

Om goda kagor och torra kakor (»cookies«).