Portál AbcLinuxu, 4. května 2025 12:33

Synchronizace souborů s Unison

19. 9. 2012 | Luboš Doležel
Články - Synchronizace souborů s Unison  

Dříve byl člověk výjimečný, když měl počítač, dnes je – v řadách Ábíčkářů jistě – výjimečný už spíše ten, kdo má jen jediný počítač. S vlastnictvím více strojů přichází problém synchronizace dat a k tomu může dobře posloužit právě Unison, jenž si představíme.

Než to někdo napíše v diskuzi, tak ano, dnešní doba nahrává spíše cloudovým řešením úložišť. Data jsou takto uložena na jediném místě a problémy se synchronizací jednoduše odpadají. Šikovnější linuxák si takové centrální úložiště zařídí sám, ale co když chceme mít stejná data k dispozici stejně rychle i na odlehlých místech, kde jsme rádi i za „poloviční“ signál a EDGE? Právě tehdy se může šiknout obousměrná synchronizace dat.

Obsah

O Unisonu

link

Na Unison jsem narazil, když jsem hledal linuxovou alternativu k offline síťovým diskům z Windows, tedy cosi jako offline NFS. Takový pro mě ideální offline síťový disk by pro mě byl zcela transparentně dostupný vždy, ať už jsem online, nebo offline, a po opětovném připojení by nějak došlo k synchronizaci dat. Dobré řešení offline NFS jsem nenašel, Unison je mým požadavkům ale vcelku blízko.

Unison není nic nového. Jak se dozvíte na FAQ projektu, první podoba softwaru byla napsána už v roce 1995 „ve výzkumném jazyce Pict“. Od roku 1998 se vyvíjí současná podoba, taktéž v méně obvyklém jazyce: Objective Caml. K dispozici je pro všechny obvyklé systémy – kromě Linuxu a různých *BSD také na OS X, Solarisu nebo Windows. Na projektu se nadále aktivně pracuje – ještě relativně čerstvou novinkou je kupříkladu frontend v GTK+. Oficiální status sice o aktivnosti vývoje tvrdí něco jiného, ten ale berme spíše jako ujištění, že se jedná o vyzrálý produkt, kam už jen občas přibudou různé vychytávky.

Unison je v základu určen pro synchronizaci dvou umístění. Pokud máme umístění více, pak se logicky nevyhneme centrálnímu místu, kde se naše změny setkávájí – mohl by to být třeba domácí desktop. Je na nás se o vznik a údržbu takového centrálního místa „starat“, jde zkrátka o to všechna místa synchronizovat vůči hlavnímu umístění spíše než nahodile mezi sebou.

Unison versus rsync a VCS

link

Nejprve si fungování Unisonu porovnáme s rsync. Rsync je základním linuxovým nástrojem pro synchronizaci souborů, často slouží v různých mechanismech pro zálohu dat na jiné místo. Unison sice využívá synchronizačních technik z rsync, liší se však v tom, jakým směrem jsou data synchronizována. Rsync totiž vždy synchronizuje data z místa A do místa B (příp. opačně), kdy výsledkem operace je to, že na místě B máme stejná data jako na A.

A v tom je právě problém. Pokud mezitím upravíme soubory (nebo je dokonce přidáme) na místě B, dojde k odstranění těchto změn (v rsync je skutečnému mazání nutno dodatečně pomoci volbou --delete). Výborně nám tedy poslouží k odzálohování dat třeba na domácí server. Kdybychom ale měli třeba jeden velký notebook a jeden netbook a podle potřeby jsme pracovali na jednom nebo druhém stroji, museli bychom pečlivě rsyncovat na „konci pracovního dne“ na druhý stroj vždy ve správném směru. Opomenutí by snadno vedlo ke ztrátě dat.

Lépe jsou na tom systémy VCS, v našem příkladu se dvěma notebooky hlavně ty distribuované (Git, Bazaar, Mercurial...). Zda zvolit VCS či specializovaný nástroj jako Unison, to už nechám na vás. Osobně bych VCS použil například pro /etc na serveru, psát ještě popis commitu po úpravě dokumentu v LibreOffice by se mi ale asi nechtělo.

Použití v konzoli

link

Základní vlastností Unisonu je to, že kromě dat samotných si stranou uchovává také metadata o tom, v jakém stavu data byla po poslední synchronizaci. Ta mohou být časem trochu objemnější, proto se může hodit vědět, že si je zapisuje do ~/.unison .

Pokud máme na počátku data jen na jednom místě, můžeme je ručně okopírovat na druhé místo, případně to nechat na Unisonu, který nás upozorní na to, že za výchozí stav bude považovat, že nikde nebylo nic a všechny nalezené soubory jsou tedy nové. V této ukázce se omezíme na dva adresáře na stejném systému, vzdálený adresář lze ale snadno synchronizovat zadáním ssh://server/cesta.

# Vytvoříme si dvě místa, která budeme synchronizovat

mkdir -p /tmp/unison/desktop
mkdir -p /tmp/unison/laptop

# Vytvoříme na "desktopu" jeden soubor
cd /tmp/unison
echo "Hello world" > desktop/hello.txt

Nyní na naše dva adresáře spustíme Unison.

$ unison-2.45 desktop laptop
Contacting server...
Looking for changes
Warning: No archive files were found for these roots, whose canonical names are:
        /tmp/unison/desktop
        /tmp/unison/laptop
This can happen either
because this is the first time you have synchronized these roots, 
or because you have upgraded Unison to a new version with a different
archive format.  

Update detection may take a while on this run if the replicas are 
large.

Unison will assume that the 'last synchronized state' of both replicas
was completely empty.  This means that any files that are different
will be reported as conflicts, and any files that exist only on one
replica will be judged as new and propagated to the other replica.
If the two replicas are identical, then no changes will be reported.

If you see this message repeatedly, it may be because one of your machines
is getting its address from DHCP, which is causing its host name to change
between synchronizations.  See the documentation for the UNISONLOCALHOSTNAME
environment variable for advice on how to correct this.

Donations to the Unison project are gratefully accepted: 
http://www.cis.upenn.edu/~bcpierce/unison

Press return to continue.

Po odkývnutí počátečního varování už bude o těchto adresářích vědět a přejde k řešení rozdílů mezi adresáři.

Reconciling changes

desktop        laptop             
file     ---->            hello.txt  [f]

Zde nám ukazuje, že doporučovanou akcí je okopírovat soubor hello.txt z desktopu na laptop. [f] nám značí, že potvrzením se toto doporučení bude následovat (follow). Po odslouhlasení všech řešení (tentokrát jen jednoho) jsme dodatečně dotázání, zda operaci uskutečnit. Pak už se jde na věc.

Propagating updates


UNISON 2.45.4 started propagating changes at 21:35:13.37 on 18 Sep 2012
[BGN] Copying hello.txt from /tmp/unison/desktop to /tmp/unison/laptop
[END] Copying hello.txt
UNISON 2.45.4 finished propagating changes at 21:35:13.37 on 18 Sep 2012


Saving synchronizer state
Synchronization complete at 21:35:13  (1 item transferred, 0 skipped, 0 failed)

Tak a teď jsme začali pracovat na našem fiktivním laptopu a něco jsme do dokumento dopsali. Co na to Unison?

$ echo "Ahoj svete" >> laptop/hello.txt
$ unison-2.45 desktop laptop
Contacting server...
Looking for changes
Reconciling changes

desktop        laptop             
         <---- changed    hello.txt  [f] 

Proceed with propagating updates? [] y
Propagating updates


UNISON 2.45.4 started propagating changes at 21:37:06.45 on 18 Sep 2012
[BGN] Updating file hello.txt from /tmp/unison/laptop to /tmp/unison/desktop
[END] Updating file hello.txt
UNISON 2.45.4 finished propagating changes at 21:37:06.45 on 18 Sep 2012


Saving synchronizer state
Synchronization complete at 21:37:06  (1 item transferred, 0 skipped, 0 failed)

Jak vidíte, Unison změnu zaznamenal a automaticky doporučil překopírování na druhou stranu. Teď Unison pozlobíme trochu víc a uděláme změny v obou souborech:

$ echo "12345" >> laptop/hello.txt
$ echo "54321" >> desktop/hello.txt
$ unison-2.45 desktop laptop
Contacting server...
Looking for changes
Reconciling changes

desktop        laptop             
changed  <-?-> changed    hello.txt  []

Stiskem otazníku se nám zobrazí jednotlivé možnosti řešení. Nejdůležitější volby:

U posledních dvou voleb bych rád zdůraznil, že úpravy na cílové straně jsou ztraceny. Pokud vybereme m(erge) ve výchozím nastavení, tak operace selže, protože nemáme nastaven žádný nástroj pro vícecestný merge. Slučování je operace specifická pro konkrétní formáty dat, proto žádný default. Slučováním se tu zabývat nebudeme, obsáhlý popis najdete v dokumentaci.

Volby a profily

link

Unisonu se dá předávat velké množství voleb. Všechny si snadno rozbrazíte příkazem unison --help, mezi ty základní patří -auto pro automatické přijetí doporučovaných akcí (jinak se potvrzuje klávesou f), -fat pro automatické nastavení voleb vhodných pro synchronizaci se souborovým systémem FAT, -ignore pro přeskočení některých souborů/adresářů nebo -path pro zvolení konkrétních cest mezi dvěma kořeny, které se synchronizovat mají. Volby, u kterých to dává smysl (například poslední dvě zmíněné), lze opakovat.

Zadávat pokaždé ty samé volby by byla otrava, a proto má Unison takzvané profily. Ty se nacházejí v souborech ~/.unison/název_profilu.prf, přičemž výchozí profil je pojmenován default. Jednoduchý profil pro synchronizaci dvou adresářů by mohl vypadat takto:

root = /tmp/unison/desktop
root = /tmp/unison/laptop

fat = true
# Nesynchronizovat otravné *~ soubory
ignore = Name *~
# Nesynchronizovat ani další zálohy
ignore = Path */backups/*

Synchronizaci v souladu s vybraným profilem pak provedeme takto:

$ unison-2.45 můj_profil

Zálohy

link

Unison nám může udržovat zálohy předchozích verzí souboru pro případ, že by se nám nějaké sloučení nepovedlo nebo pokud bychom něco někde umazali a pak tomu nasadili korunu tím, že bychom umazaná data nechali sesynchronizovat na druhé místo. Zálohy mohou být uchovávány buď centrálně (tedy v ~/.unison, je to výchozí způsob) nebo lokálně (tedy přímo v adresáři s daty). Zálohu všech souborů lokálně zapneme takto:

backup = Name *
backuplocation = local

Šikovná je volba maxbackups, kterou změníme počet uchovávných starých verzí.

Grafické rozhraní

link

Protože věřím, že jsem případné zájemce nalákal natolik, aby si všechny další schopnosti Unisonu nastudovali sami z kvalitní dokumentace, podíváme se už jen zběžně na grafické rozhraní. To se po spuštění zeptá na profil, který chceme používat:

Unison

V editoru profilů můžeme nastavit volby profilu (jako jsme si ukázali výše). Na výběr jsou po zobrazení dialogu jen ty nejpoužívanější, jedním klikem se nám pak ukážou úplně všechny. Ke každé volbě je uveden popis, takže nemusíme pokaždé hledat online manuál.

Unison

Po výběru (resp. vytvoření) profilu se dostaneme do hlavního okna, kde je zobrazen aktuální stav rozdílů mezi oběma místy. U jednotlivých změn si případně vybereme, co se má udělat, a operace odsouhlasíme kliknutím na Go. I zde si můžeme například naklikat, které soubory se mají ignorovat a tak podobně.

Unison

To je všechno. Přeji vám co nejméně konfliktů při synchronizaci!

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

19.9.2012 00:27 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Odpovědět | Sbalit | Link | Blokovat | Admin

Unison uz nekolik let k plne spokojenosti pouzivam.

Je docela skoda, ze na bou stranach musi byt stejne verze unisonu, proto napr. aktualni Ubuntu obsahuje celkem 2 verze: 2.27.57, 2.32.52. S tim byvaji dost problemy. V clanku je uvedena verze 2.45.4, takze jich bude jeste mnohem vic :-(

Dalsi problem, na ktery jsem narazil je Unison vcetne GUI pod Windows - temer 100% to po stazeni a spusteni exe souboru nebude fungovat. Takze si stahnete z Pidginu GTK+ knihovnu, kdyz se vam za pul hodiny podari ji nakopirovat do spravneho umisteni a nastavit systemove promenne, zjistite ze si Unison nerozumi s SSH :-( Probezneho uzivatele nepouzitelne.
Docela by se hodil navod...

Marián Kyral avatar 19.9.2012 07:33 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Těch verzí je trochu více. Ale pokud je na všech počítačích stejný OS, tak to není problém ;-)
[I] net-misc/unison
     Available versions:  
        (2.13)  (~)2.13.16-r1
        (2.27)  2.27.57-r1 (~)2.27.157
        (2.32)  (~)2.32.52
        (2.40)  (~)2.40.65
        (2.45)  (~)2.45.4
Taktéž používám unison už docela dlouho na zálohování fotek z NB na NAS a na další počítač. V posledních verzích konečně došlo na přepracování GUI. Předchozí GUI se sice dalo používat, ale nebylo to ono. Neexistovala třeba možnost smazat nepoužívané profily.

Ještě bych zmínil, že pokud se v rámci profilu změní cesta k datům (například po přesunu synchronizovaných dat na větší disk), unison bude chtít dělat novou synchronizaci. To může u objemných dat trvat i pěkných pár hodin. Jednoduchý symbolický link nepomůže. Jedině si nové umístění připojit přes "mount -o bind" do starého adresáře. V dokumentaci jsou i další postupy, ale ty mi nějak nefungovaly.

NAS mám připojen přes NFS, pro unison se to tváří jako lokální disk. Dle dokumentace je lepší mít unison i na NAS, synchronizace by pak měla být rychlejší - nedochází ke kopírování dat sem a tam (nejprve se zapíší a pak se ověří opětovným přečtením). Bohužel na mou NSA210 jsem unison ještě nedostal :-(
Cohen avatar 19.9.2012 22:01 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Ještě bych zmínil, že pokud se v rámci profilu změní cesta k datům (například po přesunu synchronizovaných dat na větší disk), unison bude chtít dělat novou synchronizaci. To může u objemných dat trvat i pěkných pár hodin. Jednoduchý symbolický link nepomůže. Jedině si nové umístění připojit přes "mount -o bind" do starého adresáře. V dokumentaci jsou i další postupy, ale ty mi nějak nefungovaly.
Teď už to nikde aktivně použité nemám, ale jednu dobu jsem používal v manuálu uváděnou možnost relokace rootu
rootalias = //new-hostname//new-path -> //old-hostname/old-path
a fungovalo to bez problémů. (Něco si matně vzpomínám, že jsem se tuším musel nějak poprat s normálními versus převrácenými lomítky jako oddělovači adresářů v těch cestách, ale možná si to pletu s něčím jiným.)
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
Marián Kyral avatar 20.9.2012 07:09 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Mně to bohužel nějak nefungovalo. Tak jsem to vyřešil tím bindem, A později stejně udělal nový scan (když se změnil i druhý mount point). Detaily si už bohužel nepamatuji.

Hodila by se přímá podpora v GUI. Možná to zkusím zadat do bugzilly (jestli ji mají).
Cohen avatar 19.9.2012 21:54 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Pokud je nerozuměním si s SSH myšleno nerozumění si Unison s Windows SSH klientem PuTTY, tak to mám vyřešené přes wrapper pro překlad parametrů okolo PuTTY plink.exe následovně:

– Mám wrapper ssh2plink.bat (není to moje dílo, kdysi jsem to vygooglil) s tímto obsahem:
@echo off
rem	fix ssh args to be compatible with plink (putty)
rem	Required for Unison synchronisation over ssh.
rem	Following options are probably compatible:
rem	-l name, -[1246AaCiNstTvVxX]
rem	incompatible:
rem	-p nnn (replaced by P); -e none (no equivalent)

setlocal

rem	Edit this to point to your location for plink.exe
set PLINKEXE="C:/Program Files (x86)/PuTTY/PLINK.EXE"

set ARGLIST=-ssh -agent -C

:nextarg

if "x%1" == "x" goto doneargs

if NOT "%1" == "-p" goto checkesc
	rem plink uses upper case P to flag port number
	set ARGLIST=%ARGLIST% -P %2
	shift
	shift
	goto nextarg

:checkesc

if NOT "%1" == "-e" goto useit
	rem unison likes to include "-e none" which plink does not support.
	shift
	shift
	goto nextarg

:useit

	set ARGLIST=%ARGLIST%  %1
	shift
	
goto nextarg

endlocal

:doneargs

%PLINKEXE%  %ARGLIST%
– Mám Unison profilové soubory tvořené v tomto duchu:
# Unison preferences file

include common-settings

label = SVN repositář

sshcmd = C:\Users\<login>\.unison\ssh2plink.bat

root = ssh://<login>@example.com//home/<login>/Documents/Projekts/SVN
root = D:\Users\<login>\Documents\Projekts\SVN

force = ssh://<login>@example.com//home/<login>/Documents/Projekts/SVN

perms = 0

ignore = Path {XXX-working-copy}

ignore = Path {XXX-r*-working-copy-snapshot.tar.gz}
ignore = Path {XXX-working-copy-snapshot.tar.bz2}
– Sdílené nastavení pro všechny profily je v tom odkazovaném souboru common-settings:
fastcheck = true
times = true
log = false
Tímto způsobem tedy přes SSH synchronizuji počítač s Windows se vzdáleným počítačem s Linuxem. Unison tedy spouštím vždy na tom Windows počítači, opačně by to vyžadovalo minimálně SSH server na Windows, což jsem zatím neměl potřebu rozbíhat. Jedinou podmínkou je autentizovat se SSH klíčem a ten na tom Windows počítači mít už předem odemčený v SSH agentovi. Alespoň myslím, že je to nutné, že není možné nechat se doptat na heslo v tom Unisonem otevíraném terminálu.
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
19.9.2012 23:07 Zopper | skóre: 15
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Já když jsem naposled unison na windows zkoušel, tak to fungovalo, byť všechno trvalo o něco delší dobu, než na linuxu. Ale je to to už taky chvíle zpátky.
"Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2
Marián Kyral avatar 20.9.2012 07:21 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
19.9.2012 08:28 JM
Rozbalit Rozbalit vše rsync pod windows
Odpovědět | Sbalit | Link | Blokovat | Admin
Já potřebuji program plňující následující podmínky, ale žádný nemůžu najít: 1. rsync klient pro windows 2. GUI pro naklikání kdy se má spouštět (např. denně v 10 hodin) 3. free pro domáci použití

U sebe doma mám server, který služí pro skladování dat a k němu přistupují ostatní moje počítače. Tento server potřebuji zálohovat. Proto jsem vymyslel, že do počítače u babičky strčím disk a budu rsyncovat. Ale nic jednoduchého jsem nenašel.

Poradíte mi? Díky
19.9.2012 08:39 AA
Rozbalit Rozbalit vše Re: rsync pod windows
prvni odkaz z googlu neni dobry?: http://www.rsync.net/resources/howto/windows_rsync.html
19.9.2012 09:12 tuxmartin | skóre: 39 | blog: tuxmartin | Jicin
Rozbalit Rozbalit vše Re: rsync pod windows
2. GUI pro naklikání kdy se má spouštět (např. denně v 10 hodin) Díky
Pro Windows se da stahnout CRON.
MaT avatar 20.9.2012 17:11 MaT | skóre: 28
Rozbalit Rozbalit vše Re: rsync pod windows
A na co cron do Windows, když Windows má vlastní řešení? A dokonce klikací... Jmenuje se to snad Scheduler, nebo v českých lokalizacích něco jako Plánovač úloh...
Open source software for open minded people. :-)
Jiří Svoboda avatar 19.9.2012 09:23 Jiří Svoboda | skóre: 37 | blog: cat /dev/mind | Prostějov
Rozbalit Rozbalit vše Re: rsync pod windows
1. rsync pro windows existuje, sám ho v práci používám. Na problémy jsem nenarazil.

2. GUI má být pro linux nebo windows? Ne, že bych o nějakém věděl, ale přijde mi to už jen jako detail (i kdybych ho měl pro Linux napsat v shellu s pomocí zenity).

3. rsync je GPL.

Jinak kolegové Windowsáři hojně používají SyncToy, zkus se podívat, jestli by se ti nehodil.
19.9.2012 16:14 crown
Rozbalit Rozbalit vše Re: rsync pod windows
Mne osobne rsync pod windows nefungoval, kdyz nazev uzivatele (a tedy jeho adresare s profilem) obsahoval neanglicke znaky.

Pokud byl uzivatel bez hacku a carek, tak to jelo dobre.
19.9.2012 19:25 Zopper | skóre: 15
Rozbalit Rozbalit vše Re: rsync pod windows
Háčky a čárky do profilu nedávám zásadně nikdy, už jsem zažil, že i samotný systém (Windows XP sp2) měl problémy - z neznámého důvodu XP zmrvily diakritiku v cestě profilu (starý adresář zůstal, ale vytvořil se nový paskvil).
"Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2
19.9.2012 21:23 manena
Rozbalit Rozbalit vše Re: rsync pod windows
To vše umí deltacopy.
Cohen avatar 19.9.2012 22:08 Cohen | skóre: 21 | blog: Drobnosti | Brno
Rozbalit Rozbalit vše Re: rsync pod windows
Jestli to má být na zálohování, tak doporučuji prohlédnout si rdiff-backup (který funguje protokolem obdobným jako rsync, je free a měl by běžet i na Windows).

Požadavek na GUI moc nechápu, to je přece přímo ve Windows – jmenuje se to Plánovač úloh.
OpenPGP key fingerprint: 489C 5EC8 0FD6 2BE8 9E59 B4F7 19C1 3E8C E0F5 DB61 (https://www.fi.muni.cz/~xruzick7/pgp-klic/)
20.9.2012 09:24 Jiří Lisický | skóre: 31 | blog: JIL_blog | Olomouc
Rozbalit Rozbalit vše Re: rsync pod windows
A já k tomu ještě dodám, že mám v bookmarkách http://www.nongnu.org/jbackpack/ Což by měl být multiplatformní GUI klient pro rsync-backup.
19.9.2012 19:36 Zopper | skóre: 15
Rozbalit Rozbalit vše Re: Synchronizace souborů s Unison
Odpovědět | Sbalit | Link | Blokovat | Admin
Taky Unison používám - i když ani ne tak k přímé synchronizaci, ale ve hvězdové topologii s centrálním serverem. O verzování se mi pak na serveru stará btrfs se snapshoty a všechno se ještě zálohuje na další disk přes rsync - samozřejmě, všechno je nacpané do cronu.

Funguje to dobře, jediný problém bylo zjistit, jakou verzi unison použít, aby to fungovalo všude.

Do budoucna ale přemýšlím, že si udělám pořádné řešení (i s GUI), které by šlo snadno nasadit kdekoliv - a pustím ho ven.
"Dlouho ještě chcete soudit proti právu, stranit svévolníkům?" Ž 82,2

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.