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é.