Připojte archiv jako běžný disk

Adam Štrauch 23. 7. 2010

Pokud potřebujete zálohovat například logovací soubory, e-maily nebo jiné dobře zkomprimovatelné soubory a nejlíp ještě všechno zautomatizovat, dokáže být program ArchiveMount velmi dobrým pomocníkem. Umí totiž připojit mnoho archivů jako běžný disk a zpřístupnit vám tak pohodlné čtení i zápis.

ArchiveMount sice nemá žádnou domovskou stránku, ale jeho zdrojové kódy si můžete stáhnout na cybernoia.de. Momentálně se nachází ve verzi 0.6.1, která se objevila přibližně před měsícem. Zdrojový kód není nějak složitý a má kolem 2500 řádek. Jedná se vlastně o rozhraní mezi libfuse a libarchive.

Libarchive je knihovna, která se pod jedno rozhraní snaží spojit hned několik kompresních formátů, takže krom klasického taru můžete ve svých programech pracovat třeba s formáty zip, xar, mtree a krom jiného je podporován i formát ISO9660, tedy můžete s ním připojit i iso obraz nějakého CD. Kompletní seznam najdete na stránkách projektu. To co tedy podporuje libarchive podporuje i ArchiveMount. Některé formáty jsou dostupné jen pro čtení, další jen pro zápis.

Libfuse komunikuje s jádrem a umožňuje napsat souborový systém pracující na úrovni uživatele, tedy kdy kód souborového systému běží jako kterýkoli jiný program. Společně s FUSE se začaly objevovat různé zajímavé použití, jako třeba mountování vzdálených SFTP a FTP přístupů, ale i SAMBY nebo Gmailu. S nadsázkou můžeme říct, že s FUSE můžeme připojit do adresářové struktury cokoli, kde je alespoň náznak nějaké struktury. A takto pracuje i program ArchiveMount.

Instalace

Bohužel v Ubuntu 10.04 a předpokládám že i v Debianu není ArchiveMount v repositářích, takže se budeme muset pustit do kompilace.

Jelikož zdrojový kód není nějak komplikovaný, není potřeba ani moc závislostí, pokud máte v počítači běžné balíčky pro kompilaci, bude vám chybět pravděpodobně jen libfuse a libarchive resp. jejich vývojové varianty. V distribucích s deb balíčky stačí, když použijete:

sudo apt-get install libarchive-dev libfuse-dev build-essential 

Teď je čas stáhnout zdrojové kódy. Jak jsem již psal, momentálně se ArchiveMount nachází ve verzi 0.6.1, ale určitě se přesvědčte, že máte tu nejnovější. Na kompilaci nepotřebujete práva roota a postačí vám k tomu váš uživatel. Nejprve si vytvoříme nějaké místo pro zdrojové kódy a pak je sem stáhneme a rozbalíme:

$ cd ~
$ mkdir src
$ cd src
$ wget http://www.cybernoia.de/software/archivemount/archivemount-0.6.1.tar.gz
$ tar xf archivemount-0.6.1.tar.gz
$ cd archivemount-0.6.1 

V rozbaleném adresáři najdete vše, co budete potřebovat. Teď stačí spustit magickou dvojici:

$ ./configure
$ make 

Pokud vám ještě chybí nějaká závislost, configure si o ní řekne a stačí ji doinstalovat. Make už by mělo proběhnout bez problémů. Teď je čas se rozhodnout, jestli výslednou binárku chcete začlenit do svého systému nebo ji jen nahrát do nějakého místa ve vašem adresáři a namířit tam proměnnou PATH, ve které jsou uložené cesty, kde systém hledá spustitelné soubory. Osobně preferuji druhou možnost, ale pokud chcete mít ArchiveMount uvnitř vašeho systému, použijte:

$ sudo make install 

V opačném případě si vytvořte nějaký adresář, já mám nejraději ~/bin, a do něj binárku nakopírujte:

$ mkdir ~/bin
$ cp archivemount ~/bin/ 

Nakonec ještě upravíme proměnnou PATH v ~/.bashrc:

$ echo export PATH="$PATH:~/bin" >> ~/.bashrc 

Teď když je všechno připravené, můžeme jít otestovat, co všechno ArchiveMount umí.

První připojený archiv

Po spuštění:

$ archivemount -h
[...]
archivemount options:
    -o readonly            disable write support
    -o nobackup            remove archive file backups
[...] 

Dostaneme vcelku vyčerpávající nápovědu, ale pouze tři řádky se týkají samotného ArchiveMount, všechno ostatní souvisí se FUSE. Pokud hodláte používat ArchiveMount každý den, určitě se vám bude hodit vypnutí záložního souboru, který se vytvoří z původního archivu před připojením.

Pro otestování si vytvoříme testovací adresář, v něm vytvoříme prázdný archiv a připojíme ho:

$ cd
$ mkdir test
$ cd test
$ tar cjf test.tar.bz2 .
$ mkdir point
$ archivemount -o nobackup test.tar.bz2 point/ 

Archiv je připojený v adresáři ~/test/point a můžete s nim normálně pracovat, jako by to byl jakýkoli jiný adresář.

Co váš určitě zajímá nejvíc, je výkon.

Výkon

Pro testování výkonu jsem se rozhodl použít nástroj iozone, který byste měli mít v repositáři ve své distribuci. Ten nabízí velmi široké možnosti nastavení a otestujete s ním prakticky jakýkoli souborový systém po všech stránkách. Na výsledcích běžného souborového systému bez ArchiveMount se podepisovala hodně cache, takže hodnoty několikanásobně převýšily výsledky ArchiveMount, který musel navíc používat relativně náročnou bzip2 kompresi. Testování probíhalo na pěti souborech o velikosti přibližně 100 MB do nichž zapisovalo 5 procesů.

Bez ArchivMount S ArchiveMount
První zápis 59536,65 6919,174
Další zápis 248731,006 7266,804
První čtení 517894,124 98000,654
Další čtení 678499,418 101320,888
Čtení pozadu 567389,244 37242,068
Čtení v krocích 548323,218 85659,184
Náhodné čtení 574909,194 52820,984
Náhodné čtení/zápis 406066,538 17239,934
Náhodné zápis 289027,532 7227,64
Zápis uprostřed 62522,204 6916,824
Čtení uprostřed 145536,448 93349,464

Hodnoty jsou uvedeny v kB/sec.

Lepší představu než z tabulky si určitě uděláte z grafu:

Závěr

ArchivMount je jednoduchý program, který vám usnadní práci se složitějšími archivy ve vašich skriptech. Nejrychlejším souborovým systémem se asi nestane, ale na lámání rekordů není navržen. Pro běžnou práci je výkon dostačující. Testy byly prováděny na tbz2 archivu, což se na výkonu podepsalo také.

120na80.cz: Vyzrajte na návaly a pocení v přechodu

Vyzrajte na návaly a pocení v přechodu

Podnikatel.cz: Zaplatili jste složenku k dani z nemovitostí?

Zaplatili jste složenku k dani z nemovitostí?

Lupa.cz: Přenos hokeje padal kvůli útoku, tvrdí O2

Přenos hokeje padal kvůli útoku, tvrdí O2

DigiZone.cz: Šlágr TV: pokuta 100 tisíc za on-line

Šlágr TV: pokuta 100 tisíc za on-line

Vitalia.cz: Syndrom PC vidění: stačí dvě hodiny denně

Syndrom PC vidění: stačí dvě hodiny denně

Vitalia.cz: Muži kouří 24 cigaret denně, ženy o dost míň

Muži kouří 24 cigaret denně, ženy o dost míň

Podnikatel.cz: Proměny stavebnice Seva. Znáte ji?

Proměny stavebnice Seva. Znáte ji?

Vitalia.cz: Děti jsou sportem opotřebované

Děti jsou sportem opotřebované

Podnikatel.cz: Rošáda v živnostech. Týká se vás?

Rošáda v živnostech. Týká se vás?

DigiZone.cz: Konec geoblokace online médií?

Konec geoblokace online médií?

Podnikatel.cz: Přechod z OSVČ na firmu? Totální šok!

Přechod z OSVČ na firmu? Totální šok!

Lupa.cz: Válka e-shopů. Alza končí s Heurekou

Válka e-shopů. Alza končí s Heurekou

Vitalia.cz: Před, nebo po snídani? Kdy je lepší čistit si zuby

Před, nebo po snídani? Kdy je lepší čistit si zuby

Vitalia.cz: Taky ji kupujete? Je šizená

Taky ji kupujete? Je šizená

Vitalia.cz: 7 nemocí očí, které musíte léčit včas

7 nemocí očí, které musíte léčit včas

Lupa.cz: Kam si doma dáte internet věcí? Na polici?

Kam si doma dáte internet věcí? Na polici?

DigiZone.cz: ČT neskončí s nízkým rozlišením podle plánu

ČT neskončí s nízkým rozlišením podle plánu

Vitalia.cz: SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

SÚKL: vakcíny jsou bezpečné a s autismem nesouvisí

DigiZone.cz: Konec geoblokace? Ani náhodou…

Konec geoblokace? Ani náhodou…

Root.cz: Zákon o hazardu je v rozporu s ústavou

Zákon o hazardu je v rozporu s ústavou