Domů arrow Začátečníci arrow Příkazový řádek arrow Práce s archivy v příkazovém řádku

Práce s archivy v příkazovém řádku

PDF Tisk E-mail
Zhlédnutí: 2652
Hodnocení čtenářů: / 3
SlabéVynikající 
Napsal filbar   
Pondělí, 22 říjen 2007
Aktualizováno ( Čtvrtek, 18 říjen 2007 )

V tomto článku si ukážeme jak pracovat s archivy v příkazovém řádku. Lze zde pracovat se všemi běžnými typy archivů, od tar přes zipy až po archivy typu rar včetně nejnovějšího přírustku 7zip.

Archivy tar

Tyto archivy jsou v prostředí Linuxu bezpochyby nejpopulárnější. I když v případě archivu s příponou tar se nepoužívá komprimace. K tomu jsou určeny externí programy jako bzip2(výkonnější) a gzip. Komprimace bzip2 a gzip je to programu tar dokonce přímo zabudovaná. Možná se hodí poznamenat, že jméno programu tar-tape archiver je odvozeno z původního účelu tohoto pro zálohování prohramů na datové pásky.

Dost už bylo teorie, takže by se hodil i nějaký praktický příklad. Vytvoření archivu tar vypadá následovně:

 
tar cvf archiv.tar adresar1 soubor1 soubor2 adresar2

Význam přepínačů je následující:

  • c-create Vytvoření nového archivu
  • v-verbose Výpis podrobností(právě zpracovávaného souboru) během tvorby archivu
  • f-file Parametr pro zadání jména souboru

Všimněte si, že cílový archiv musí následovat hned za paramery. Poslední parametr f musíme uvádět prakticky skoro pokaždé. Za pozornost také stojí to, že před parametry není nutné uvádět typickou Linuxovou pomlčku. Pokud jste na ní, ale zvyklí, tak jí zde klidně uvádět můžete, význam je v obou případech naprosto stejný.

Další akci, kterou asi chceme provést je výpis obsahu archivu. K tomu je určet parametr t:

 
tar tf archiv.tar

Pokud zde neuvedeme parametr v, zobrazí se jednoduchý výpis souborů. S parametrem v, se výpis rozšíří o informace o právech, vlastníkovi, velikosti a datu poslední úpravy souboru. Archiv rozbalíme parametrem x(extract). Ne vždy ovšem potřebujeme rozbalit archiv celý. Někdy z něj jenom chceme získat specifické soubory. To provedeme tak, že je uvedeme s celou cestou za jméno archivu. Předpokládejme, že chceme získat soubor dulezite.txt, který se nachází v adresáři adresar1 v předchozím příkladě. Tento soubor získáme následovně:

 
tar xvf archiv.tar adresar1/dulezite.txt

Při extrakci se však vytvořil i adresář adresar1, což je v tomto případu možná zbytečné. Náprava vypadá velmi jednoduše. Pro program tar verze dřívější než 1.14.90, který se může nacházet v distribucích s dlouhým životním cyklem(serverové distribuce, jako CentOS, nebo Debian), musíme použít přepínač --strip-path pocet_adresaru. Pro aktuální verze tar(větší než 1.14.90) je určen přepínač --strip-components pocet_adresaru, kde pocet_adresaru znamená kolik adresářů se má přeskočit. V předchozím příkladu potřebujeme přeskočit jeden adresář, takže použijeme tvar:

 
tar --strip-components 1 xvf archiv.tar adresar1/dulezite.txt

Nyní se již v aktuálním adresáři objeví jenom soubor dulezite.txt. Program tar ovšem může sloužit i jako inteligentní náhrada příkazu cp. Myšlenka je to jednoduchá. Tar podporuje místo jména archivů -(pomlčku) jako starndardní vstup/výstup, který pošleme z jednoho taru do druhého pomocí roury. U druhého taru navíc ještě uvedeme parametr -C nazev_adresare, kde nazev_adresare, je cilový adresář, kam se mají soubory překopírovat:

 
tar cvf - adresar1 | tar xvf - -C adresar2

Parametr -C nazev_adresare je nutné uvést až jako poslední, jinak příkaz nebude fungovat. V této souvislosti lze zmínit ještě parametry:

  • -p - zajistí, že práva zůstanou zachována
  • --same-owner -zajistí, že vlastníci zůstanou zachováni
  • -P - neodstraňuje úvodní lomítko z názvu
  • -owner uzivatel - změní vlastníka souborů na uzivatel.
  • -mode opravneni - změní oprávnění souborů na opravneni

Dosud jsme se zabývali pouze pouze nekomprimovanými archivy. Skoro vždy však potřebujeme archivy komprimované. Jestliže už máme hotový archiv, tak jej můžeme zkomprimovat příkazem buď bzip2 archiv.tar, nebo gzip archiv.tar, kdy se v prvním případě přidá k souboru přípona bz2 a ve druhém gz. Komprimaci lze však provést v jednom kroku s archivací. K tomu existují v taru přepínače, pro komprimaci metodou bzip2 použijeme -j, pro gzip -z. Komprimovaný archiv vytvoříme nějak takto:

 
tar cjvf archiv.tbz adresar1 soubor1 soubor2 adresar2

Tímto jsme si ukázali i druhý tvar přípony archivu komprimovaného bzip2, pro gzip použijeme příponu .tgz. Při rozbalování souborů u novějších verzí taru přepínače j, nebo z již používat nemusíme. Tar kompresi a její typ rozpozná automaticky. Jestliže chceme archiv dekomprimovat ručně využijeme příkazů bunzip2, respektive gunzip.

Pozor si ovšem musíme dát na to, že přípona ne vždycky odpovídá typu archivu a tyto programy typ souboru určuji právě podle přípony. Pokud nám archiv nejde rozbalit, použijeme příkaz file archiv, který nám správný typ prozradí.. Poté stačí archivu přidat správnou příponu a můžeme jej rozbalit.

Zip,rar

Tyto tipy archivů nejsou pro Linux moc typické. Spíše se jedná o archivy hojně používané na konkuranční platformě. I přesto s nimi umí Linux docela dobře pracovat. Pro tvorbu archivu tipu zip použijeme stejnojmenný program. Jeho ekvivalent pro dekompresi nese název unzip. Archiv vytvoříme jednoduše následujícím zápisem:

 
zip -r archiv.zip adresar1 soubor1 adresar2

Parametr -r určuje, že se do archivu přidá i obsah podadresářů zadaných adresářů, nebo-li jenoduše řečeno komprimace se provede rekurzivně. Zadané soubory z archivu odstraníme parametrem -d a seznamem souborů, kde lze použít i znak *. U té si ovšem musíme dát pozor na expanzi příkazového řádku a proto před je před ní nutné přidat \.

Archiv lze samozřejmě také zajistit heslem. K tomu využijeme parametru -e. Při tvorbě archivu budeme vyzváni k zadání hesla.

Jak jsem již před chvilkou zmínil zip archiv rozbalíme příkazem unzip archiv.zip. Pokud chceme obsah archivu pouze vypsat přidáme parametr -l. Stejně jako u předchozích příkazů předáme jména souborů, pokud nechceme rozbalovat celý archiv, za jméno archivu. Lze však použít i opačnou metodu a po parametru -x uvést seznam souborů, které se nemájí rozbalovat, takže se rozbalí všechny soubory až na ty vyjmenované. Jako poslední lze uvést po parametru -d adresář, kam se mají soubory rozbalit. Jedná se tedy o exvivalent parametru -C u programu tar.

Při rozbalovaní archivu se může stát, že se přepíšou existující soubory. To však nemusí vždycky být naším přínáním. Abychom tomuto zabránili přidáme parametr -n.

Co se týče archivu rar, ty na Linuxu moc podporované nejsou. K dispozici je pouze dekompresní balíček unrar. Plná verze archivátoru je sice ke stažení na stránkách WinRARu, jedná se však pouze o trial verzi.

V tomto článku se z tohoto důvodu budeme věnovat pouze unraru, který je k dispozici zadarmo. Pokud jej vaše distribvuce neobsahuje, naleznete jej na stránkách http://www.rarlab.com/rar_add.htm. K dispozici je balíček se zdrojovými kódy, rpm(odkazující na repozitář Livna) a nezapomnělo se ani na distribuci Slackware. Kompilace ze zdrojových kódů se provází příkazem:

 
make -f makefile.unix

Po dokončení kompilace máme k dispozici spustitelný soubor unrar, který je nutné ručně nakopírovat do výsledného umístění. Použití programu je velmi jednoduché:

 
unrar e archiv.rar

L7zip

Jako poslední jsme si nechali nejnovější přírustek do rodiny komprimačních programů, který je nejvýkonnější. V linuxu je reprezentován programem 7z. Archiv vytvoříme příkazem:

 
7z a archiv.7z adresar1 soubor1 soubor2

kde parametr a, značí přidání souborů do archivu. Jestliže si chceme nechat vypsat obsah archivu použijeme parametr l. Pro rozbalení archivu je určeno x. Samozřejmostí je zaheslování archivu, které se provádí příkazem:

 
7z a -p -mhe archiv.7z adresar1 soubor1 soubor2

Po zadání příikazu jsme vyzvání k zadání hesla. V příkazu nesmíme zapomenou na parametr -mhe, bez nějž půjde archiv normálně rozbalit. Při kompresi si lze po parametru -t zadat typ achivu, který může být mimo 7z i tar, bzip2, gzip, nebo zip, ovšem otázkou je k čemu takovéto archivy vytvářet, když máme k dispozici tak skvělý nástroj, jakým 7.zip je.

Komentářů
Přidat Nový Hledat RSS
Přidat komentář
Jméno:
Email:
 
Website:
Název:
UBBKód:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Please input the anti-spam code that you can read in the image.

3.22 Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
< Předch.   Další >

Zapomenuté heslo
Nemáte účet? Vytvořte jej!
ICQ: 226785996
Skype: My status bartfil
Jabber: filbar@jabber.cz
TOPlist

Dostupnost podle Monitoring-serverů.cz

Doporučujeme

tiberiumleu_4_.jpg
Příběhy psů z útulků