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

Z Wikiknih
Smazaný obsah Přidaný obsah
Woodcraft (diskuse | příspěvky)
m →‎cpio: příklady použití
Řádek 49: Řádek 49:


===Použití===
===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

Vytvářený archív lze dále předávat - opět [[Linux:roura|rourou]] - k dalšímu zpracování komprimační aplikaci a tím dosáhnout redukované velikosti vytvořeného archívu.

user@stroj:~$ find ./cesta -depth -print | cpio -oaV | gzip -c > archiv.cpio.gz

:'''Rozbalení cpio archívu'''
user@stroj:~$ cpio -imVd < archiv.cpio
user@stroj:~$ cpio -imVd -O archiv.cpio
:'''Výpis obsahu z cpio archívu'''
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:~$ find ./cesta -depth -print | cpio -oaV | ssh user@host 'cpio -imVd'

:'''Obnovení zálohy ze vzdáleného počítače <code>host</code> na lokální <code>stroj</code>'''

user@stroj:~$ ssh user@host "find cesta -depth -print | cpio -oaV" | cpio -pamVd

Pro vytvoření archívu stačí přidat přesměrování do souboru <code>archiv.cpio</code>:

user@stroj:~$ find ./cesta -depth -print | cpio -oaV | ssh user@host 'cpio -oaV -O archiv.cpio'

a pro jeho obnovení z něj naopak číst:

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.

'''Výpis obsahu z rpm balíčku'''

user@stroj:~$ rpm2cpio finger -0.17-9.i386.rpm | cpio -it
./usr/bin/finger
./usr/share/man/man1/finger.1.gz
...

'''Extrakce souboru z rpm balíčku'''

user@stroj:~$ rpm2cpio finger -0.17-9.i386.rpm | cpio -imVd

V případě že chcemez tohoto balíčku extrahovat pouze jeden určitý soubor, pak předáme pouze jeho cestu, získanou předchozím příkazem:

user@stroj:~$ rpm2cpio finger-0.17-9.i386.rpm | cpio -imVd ./usr/share/man/man1/finger.1.gz


==afio==
==afio==

Verze z 16. 2. 2007, 13:41

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.

Přehled nástrojů

ar

Formát archívů vytvářených utilitou ar nebyl nikdy standartizová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

  1. na 16bitových strojích se používal formát s hlavičkou o pěti polích z nichž každé mohlo obsahovat max. 8 znaků
  2. ten nahradil formát pro 16 i 32bitové stroje s hlavičkou o šesti polích přičemž počet znaků již byl 14
  3. od BSD verze 4.0 následoval formát bezprostředně předcházející současným formátům, ovšem bez podpory dlouhých názvů (pouze 16 znaků) a mezer.
  4. 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.

Hlavičku tvoří šest polí různé délky , vzájemně oddělených dvouznakovým oddělovačem:

  • název souboru v ASCII (16 znaků)
  • čas poslední změny souboru (12 znaků)
  • UID vlastníka (6 znaků)
  • GID skupiny (6 znaků)
  • nastavení práv souboru (8 znaků)
  • velikost souboru (10 znaků)

Číselné hodnoty polí jsou v desítkové soustavě (decimální) s výjimkou pole s nastavením práv souboru, které je v soustavě osmičkové (oktálové). Oddělovač tvoří apostrof následovaný zalomením řádku - "`\n". Hlavička je od vlastního obsahu oddělena znakem "\012"

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

Při kompilaci aplikace, která závisí na třídách class1.o, class2.o a class3.o pak již není nutné přidávat zkompilované třídy jednotlivě, ale stačí pouze přidat vytvořenou statickou knihovnu:

cc main.c libclass.a

Wikipedia:en:Ar_(Unix)

Pro použití při práci s deb balíčky viz Instalační balíčky

cpio

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á 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

Vytvářený archív lze dále předávat - opět rourou - k dalšímu zpracování komprimační aplikaci a tím dosáhnout redukované velikosti vytvořeného archívu.

user@stroj:~$ find ./cesta -depth -print | cpio -oaV | gzip -c > archiv.cpio.gz
Rozbalení cpio archívu
user@stroj:~$ cpio -imVd < archiv.cpio
user@stroj:~$ cpio -imVd -O archiv.cpio
Výpis obsahu z cpio archívu
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 ssh

Kopírování lokálního adresáře ./cesta na vzdálený počítač host
user@stroj:~$ find ./cesta -depth -print | cpio -oaV | ssh user@host 'cpio -imVd'
Obnovení zálohy ze vzdáleného počítače host na lokální stroj
user@stroj:~$ ssh  user@host "find cesta -depth -print | cpio -oaV" | cpio -pamVd

Pro vytvoření archívu stačí přidat přesměrování do souboru archiv.cpio:

user@stroj:~$ find ./cesta -depth -print | cpio -oaV | ssh user@host 'cpio -oaV -O archiv.cpio'

a pro jeho obnovení z něj naopak číst:

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.

Výpis obsahu z rpm balíčku

user@stroj:~$ rpm2cpio finger -0.17-9.i386.rpm | cpio -it
./usr/bin/finger
./usr/share/man/man1/finger.1.gz
...

Extrakce souboru z rpm balíčku

user@stroj:~$ rpm2cpio finger -0.17-9.i386.rpm | cpio -imVd

V případě že chcemez tohoto balíčku extrahovat pouze jeden určitý soubor, pak předáme pouze jeho cestu, získanou předchozím příkazem:

user@stroj:~$ rpm2cpio finger-0.17-9.i386.rpm | cpio -imVd ./usr/share/man/man1/finger.1.gz

afio

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 (Tape ARchiver).

Popis formátu

Použití

pax

Popis formátu

Použití

Další zdroje

Wikipedia:en:Archive formats