Linux:Nástroje pro archivaci: Porovnání verzí

Skočit na navigaci Skočit na vyhledávání
m
Robot: kosmetické úpravy
(<tt> -> <code>)
m (Robot: kosmetické úpravy)
Linuxové archivační nástroje jsou založeny na principu spojování více souborů do jednoho. Liší se způsobem jak to dělají a také tím, jakým způsobem zachovávají metainformace o archivovaných souborech.
 
= ar =
 
Formát archívů vytvářených utilitou '''ar''' nebyl nikdy standardizován. Od historických unixových dob '''ar''' postupně vystřídal několik navzájem odlišných formátů. V současné době se používají dvě varianty - BSD a GNU
# Od verze BSD 4.4 se začala používat úprava, která problém dlouhých názvů a mezer vyřešila, ale souběžně vznikla GNU verze, kterou dnes používá GNU/Linux
 
== Popis formátu ==
 
Archiv který byl vytvořen nástrojem '''ar''' začíná [[magickým řetězcem]] "!<arch>" následovaný znakem LF (Line Feed - zalomení řádku, neboli také "\n"). Zbytek archívu tvoří objekty. Každý objekt je složen z hlavičky souboru a jeho obsahu. Hlavička souboru obsahuje metainformace o souboru, které jsou v rámci unixu přenositelné (název souboru,nastavení práv, čas, velikost) a obsah souboru - je-li čitelný, je čitelný i když je v archívu.
Vzhledem k omezení velikosti polí v hlavičce bylo třeba vyřešit problém dlouhých názvů a ve způsobu řešení tohoto problémů se formáty pro BSD a GNU rozchází.
 
; BSD ar : to řeší tak, že místo názvu souboru uloží do pole pro název řetězec "#1/" následovaný informací o počtu znaků skutečného názvu souboru. Ten se pak "přilepí" na konec hlavičky.
 
; GNU ar : oproti BSD řešení do pole názvu vkládá znaky "//" které signalizují že název teprve bude následovat. Skutečný název souboru se pak na začátek datové části s obsahem souboru. A to tak, že datová část začne lomítkem, následovaným decimální hodnotou offsetu (posunu) začátku vlastního obsahu, vlastním názvem, který je opět ukončen lomítkem. Archívy které tvoří '''GNU ar''' také používají sekvenci lomítka následovaného mezerou ("/ ") která uvádí index, který ''' GNU ar''' používá pro rychlejší pohyb v rámci archívu.
 
== Použití ==
 
Dnes se '''ar''' používá převážně jenom pro vytváření a aktualizaci statických knihoven, které používá [[linker]], jako tedy je součástí balíčku [[binutils]] výjimkou je systém instalačních balíčků [[DEB]]
 
Příklad vytvoření statické knihovny z několika zkompilovaných souborů
 
ar rcs libclass.a class1.o class2.o class3.o
Pro použití při práci s deb balíčky viz [[Instalační balíčky]]
 
= cpio =
 
http://rightsock.com/~kjw/Ramblings/tar_v_cpio.html
* nemá žádné omezení délky názvu souborů
* zachovává časová razítka (timestamps)
* a díky kombinaci s utilitou [[ Linux:find | find ]] dává ohromné možnosti filtrování vstupních dat
 
Jeho nevýhodou je že..
* cpio je také platformně závislé
 
== Popis formátu ==
 
== Použití ==
 
'''cpio''' zpracovává archív podle předaného seznamu souborů k archivaci, proto na rozdíl od archivačního programu '''tar''', kterému stačí jako parametr předat cestu k adresáři vyžaduje při tvorbě archívu spolupráci s utilitou [[Linux:find]], která mu předává [[Linux:roura|rourou]] seznam souborů ke zpracování. Na druhou stranu tím však získává mocný nástroj pro tvorbu sofistikovaných filtrů.
 
user@stroj:~$ find ./cesta -depth -print | cpio -oaV > archiv.cpio
s využitím přesměrování standardního výstupu. Se stejným efektem lze také použít parametr '''-O'''
user@stroj:~$ find ./cesta -depth -print | cpio -oaV -O archiv.cpio
 
user@stroj:~$ cpio -it < archiv.cpio
user@stroj:~$ cpio -it -O archiv.cpio
:'''Využití archivační utility cpio ke zkopírování adresáře'''
user@stroj:~$ find cesta -depth -print | cpio -pamVd /cilovy/adresar
 
=== Použití cpio skrze [[Linux:ssh|ssh]] ===
 
:'''Kopírování lokálního adresáře <code>./cesta</code> na vzdálený počítač <code>host</code>'''
user@stroj:~$ ssh user@host "cpio -imVd < archiv.cpio" | cpio -pamVd
 
=== cpio a rpm ===
 
''cpio'' se používá také u instalačního systému [[RPM]]. Od RPM verze 4 je součástí instalačního balíku '''rpm''' utilita [[Linux:rpm2cpio]] která vytvoří z proudu dat vytaženého z rpm balíčku cpio archív, se ketrým lze dále skrze rouru pracovat.
user@stroj:~$ rpm2cpio finger-0.17-9.i386.rpm | cpio -imVd ./usr/share/man/man1/finger.1.gz
 
= afio =
 
Uvedené nedostatky zálohovací utility '''cpio''' měla odstranit '''afio''', ovšem poslední vydaná verze je z 21. prosince 2003, tudíž je otázkou jak je to s jeho dalším vývojem. '''afio''' má také některá omezení z hlediska délky názvů souborů, aj. '''afio''' se od '''cpio''' liší mj. tím, že do archívů přidává navíc takzvané kontrolní soubory, díky kterým lze pak rozbalit i poškozený archiv.
 
== Popis formátu ==
 
== Použití ==
 
= tar =
 
Archivační nástroj '''tar''' byl původně navržen jako obslužný program pro archivaci velkého množství souborů a celách adresářů na magnetickou pásku. Z toho byl také odvozen jeho název ('''T'''ape '''AR'''chiver). V linuxu se používá verze programu vyvinutá v rámci projektu [[GNU]] která obsahuje spoustu nejrůznějších voleb a modifikátorů.
 
První stabilní verze archivační utility '''tar''' 1.0 se objevila v červnu 1989.
* Od verze 1.11.2 ( 26. března 1993 ) začal tar používat místo kompresní utility místo '''compress''' '''gzip'''
* Od verze 1.13.18 ( 29. října 2000 ) podporuje '''bzip2''' kompresi přes parametr ''-j''
* Od verze 1.20 ( 14. dubna 2008 ) podporuje '''lzma''' kompresi přes parametr ''--lzma''
* Od verze 1.22 ( 5. března 2009 ) podporuje vícevláknovou '''xz''' kompresi přes parametr ''-J'' který má stejný efekt jako ''--xz''
 
== Popis formátu ==
 
Tar je schopen sloučit do jednoho velkého souboru několik souborů i včetně adresářové struktury a přístupových práv. Tento archivní soubor má velikost jako součet velikostí souborů v něm obsažených, plus režie (názvy souborů apod.). Nejedná se o kompresní program jen spojuje více souborů do jednoho většího. Ke komprimaci výstupního archivu využívá externích [[ Linux:Kompresní utility | komprimačních utilit ]] .
 
 
== Použití ==
 
tar '''volby''' ['''modifikátory'''] ['''seznam-souborů''']
 
=== Volby ===
V příkazovém řádku lze použít jednu z následujících voleb, která specifikují typ operace. Každou operaci lze modifikovat pomocí tzv. ''modifikátorů.''
 
;--append (-r): Po zadání volby '''-r''' se soubory uvedené v seznamu '''seznam-souborů''' zařadí na konec archivního souboru. Původní soubory zůstanou nedotčeny, proto hrozí, že v archívu bude uloženo několik duplicitních kopií jednoho souboru. Při obnově se jako aktuální extrahuje poslední kopie.
 
;--create (-c): Po uvedení volby '''-c''' se soubory uvedené v seznamu uloží do nového archivního souboru. Pokud soubor již soubor se stejným názvem existuje, bude nejdříve zrušen. Pokud argument '''seznam-souborů''' jméno adresáře, '''tar''' provede rekurzivní kopírování všech souborů, včetně podadresářů, z tohoto adresáře.
 
;--extract nebo --get (-x): Po zadání této volby program provede extrakci všech souborů z archívu. Každý existující soubor se stejným jménem bude přepsán. Pokud se neuvede argument '''seznam-souborů''', budou budou extrahovány všechny soubory z archívu. Jestliže argument '''seznam-souborů''' obsahuje jméno adresáře, provede '''tar''' extrakci všech souborů z tohoto adresáře včetně jeho podaresářů. '''Tar''' se snaží zachovávat všechny atributy souborů. Když '''tar''' přečte tentýž soubor vícekrát, pak novější verze vždy přepíše starší.
Pozn.: Nejedná se zdaleka o všechny volby. Popis se zabývá jen těmi nejčastěji používanými.
 
=== Modifikátory ===
Za každou volbou je možné specifikovat jeden nebo více '''modifikátorů'''. Jestliže je použit jednoznakový zástupce pro modifikátor, není třeba před něj psát pomlčku. Přesto je doporučeno pomlčky používat.
 
;--compress nebo --uncompress (-Z): Při yvtváření archívu se použije komprimace a při obnově se použije dekomprimace.
 
;--directory directory (-C): Před zpracováním archívu se změní pracovní adresář podle hodnoty argumentu '''''directory'''''.
 
;--gzip nebo --gunzip (-z): Po zadání této volby se bude archív během svého vytváření komprimovat a při obsluze dekomprimovat. Při dekomprimaci '''tar''' určí, zda byl archív komprimován obslužným programem '''compress'''. Pokud ano, bude k dekomprimaci použit program '''uncompress''' a ne [[gzip|'''gunzip''']].
''Pozn.: Opět se nejedná o všechny možné modifikátory. Viz:'' <code>$ tar --help</code>
 
= pax =
 
== Popis formátu ==
 
== Použití ==
 
= Další zdroje =
 
[[Kategorie:Linux|Nástroje pro archivaci]]
2 768

editací

Navigační menu