přejít na obsah přejít na navigaci

Linux E X P R E S, Unison

Unison

Pavel Císař objevil nástroj pro synchronizaci souborů


Pokud pracujete na více počítačích nebo v týmu, neobejdete se bez vhodného nástroje pro synchronizaci souborů. Ve světě svobodného softwaru postaveného na kolektivním vývoji je pak takový nástroj naprostou nezbytností. Není tedy žádný div, že je k dispozici celá řada open-source nástrojů určených právě k tomuto účelu, a každá linuxová distribuce jich typicky obsahuje hned několik. Přesto se může stát, že vašim potřebám nevyhoví žádný z běžně užívaných nástrojů. V takovém případě vám může pomoci právě Unison.

Nástroje vhodné pro synchronizaci souborů mezi více počítači lze obecně rozdělit do dvou skupin:

  • nástroje pro "zrcadlení" adresářových struktur, např. mirror, rsync;
  • nástroje pro správu verzí souborů, např. cvs, subversion.

Běžné nástroje pro "zrcadlení" provádějí pouze jednosměrnou synchronizaci, tedy propagaci změn z hlavní adresářové struktury do její kopie. Jsou tedy vhodné např. pro distribuci souborů, nebo pokud soubory měníte pouze na jediném místě. Výhodou těchto nástrojů je velice snadné použití, protože se v podstatě jedná o více či méně inteligentní nástroje pro hromadné kopírování.

Pokud ovšem potřebujete nezávisle měnit jednotlivé kopie souboru a tyto nezávislé změny později sjednotit a přenést na ostatní kopie, jsou běžné nástroje pro "zrcadlení" nepoužitelné. V takové situaci se nejčastěji používají nástroje pro správu verzí, které jsou určeny pro kolektivní práci se soubory, a jsou tedy pro detekci a následné sjednocení změn z různých kopií souboru náležitě vybaveny.

Nástroje pro správu verzí toho ovšem umožňují mnohem více, a pokud potřebujete pouze sjednocování a distribuci změn, je jejich instalace i používání oproti nástrojům pro "zrcadlení" zbytečně komplikované. A právě tuto mezeru mezi oběma kategoriemi zaplňuje program Unison.

K dalším zajímavým vlastnostem Unisonu patří:

  • Odolnost proti chybám. Unison je navržen tak, aby havárie nebo ztráta spojení v kterémkoliv okamžiku jeho práce nepoškodila zpracovávané soubory nebo jeho interní struktury.
  • Minimální zatěžování sítě. Unison se snaží přenášet pouze nezbytné části souborů (používá podobný protokol jako rsync) a pracuje velmi efektivně i na pomalých linkách, což ocení obzvláště majitelé mobilních zařízení a vytáčeného spojení.
  • Unison je schopen synchronizovat jak lokální, tak vzdálené repliky. Komunikace může probíhat přes socket, rsh nebo ssh.
  • Unison pracuje na mnoha platformách (včetně Windows) a je schopen provádět synchronizaci souborů mezi různými platformami.
  • K dispozici je jak verze CLI, tak GUI (postavená na GTK).

Unison je distribuován pod licencí GPL.

Instalace

Unison je součástí mnoha linuxových distribucí a zcela určitě jej naleznete v distribucích Red Hat, SUSE, Mandrake a Debian. Pokud vaše oblíbená distribuce Unison neobsahuje, případně pokud chcete verzi pro jiný operační systém, musíte si Unison stáhnout z Internetu (viz rámeček).

Pokud se nerozhodnete pro instalaci ze zdrojových textů, je instalace Unisonu více než jednoduchá. Bez ohledu na platformu nebo typ uživatelského rozhraní je Unison tvořen jediným spustitelným souborem, který stačí umístit do libovolného adresáře, nejlépe ve vyhledávací cestě.

Základní vlastnosti a koncept práce

Podobně jako jiné nástroje provádí Unison synchronizaci mezi dvěma kolekcemi souborů označovanými jako replika a identifikovanými svým kořenem (root). Specifikaci kořenu tvoří absolutní nebo relativní cesta a volitelná specifikace komunikačního protokolu (socket, ssh, rsh) ve formátu:

[protocol:]//[user@][host][:port][/path]

Například následující řetězec specifikuje kořen repliky na serveru SourceForge, se kterým bude Unison komunikovat pomocí protokolu ssh:

ssh://pcisar@shell_sourceforge_net/firebird

Při první synchronizaci si Unison vytváří katalog souborů pro každou repliku. Tento katalog je vytvářen na počítači, na kterém je replika umístěna ve speciálním domovském adresáři Unisonu. Pokud není uživatelem specifikováno jinak, jde o adresář .unison v domovském adresáři uživatele.

Tento katalog je pro činnost Unisonu klíčový, protože mu umožňuje identifikovat všechny později provedené změny v dané replice. S tím je spojena jedna ze zvláštností Unisonu, na kterou je třeba stále pamatovat. Pokud smažete soubor z repliky A, pak při následné synchronizaci s replikou B není tento soubor opětovně přenesen do repliky A, ale dojde k jeho výmazu rovněž z repliky B. Pokud se nad tím zamyslíte, je toto chování naprosto logické, protože pro Unison je výmaz souboru změna jako každá jiná. Nicméně toto chování je zcela odlišné od jiných nástrojů pro zrcadlení adresářů a může vést k nežádoucí ztrátě dat. Pokud tedy potřebujete provést kompletní reinicializaci z jiné repliky, nesmíte zapomenout vedle výmazu souborů provést i výmaz katalogu repliky z domovského adresáře Unisonu.

Riziko nechtěné propagace výmazu souborů vám ovšem nemusí dělat těžkou hlavu, pokud využijete možnosti Unisonu uchovávat záložní kopie souborů. Pokud neurčíte jinak, uchovává Unison standardně pouze jedinou záložní kopii každého souboru.

Součástí repliky mohou být soubory, adresáře a symbolické odkazy. Interně je každý takový objekt Unisonem identifikován pomocí cesty v rámci adresářové struktury repliky. Jednou z mnoha vlastností, která činí Unison tak praktickým, je jeho schopnost pracovat s cestami k replikovaným objektům (nejen) pomocí regulárních výrazů. Jednotlivé objekty v replice lze dle libosti vyřazovat nebo naopak zařazovat do procesu synchronizace, určit jim zvláštní zpracování, zahrnout do seznamu zálohovaných souborů apod.

Pokud je některý ze souborů změněn v obou replikách, dojde při synchronizaci ke konfliktu. Unison umožňuje vedle standardních možností řešení konfliktu přepsáním jedné kopie verzí z druhé repliky i možnost sloučení změn (merge), a to jak metodou dvoucestného, tak i trojcestného slučování. Sloučení změn ovšem neprovádí přímo Unison, ale k tomu určený externí nástroj. Tímto nástrojem může být například diff3 nebo emacs.

Unison nabízí opravdu velké množství praktických konfiguračních parametrů a je téměř jisté, že mnoho z nich využijete. Specifikovat tyto parametry na příkazovém řádku je poněkud nepraktické, a proto Unison poskytuje možnost vytvářet tzv. profily. Profil je textový soubor obsahující na každém řádku jeden z konfiguračních parametrů, přičemž kterýkoliv z parametrů použitelných z příkazové řádky je možné použít i v profilu. Vytvořením vhodného profilu (nebo profilů) si tedy můžete značně zjednodušit každodenní práci. Profily lze samozřejmě kombinovat s parametry zadanými z příkazové řádky, nebo i s jinými profily.

Možnosti Unisonu jsou opravdu široké a kolekce konfiguračních parametrů bohatá, takže vám zajisté přijde vhod kompletní dokumentace plně integrovaná do programu (jak v GUI, tak i CLI verzi!).

Průběh synchronizace

Synchronizovat lze buď lokálně, nebo se vzdálenou replikou. Pokud je replika na vzdáleném počítači, je nutné specifikovat i některý komunikační protokol. Pokud na vzdáleném počítači neběží Unison, je nutné specifikovat příkaz, kterým je možné ho na vzdáleném počítači spustit.

Unison pomocí katalogu vyhodnotí změny v každé replice a následně vyhodnotí seznam kroků nutných pro jejich vzájemnou synchronizaci. Tento seznam poté předloží k finálnímu posouzení, přičemž každou operaci je možné vyřadit ze zpracování nebo v případě potřeby upravit. Teprve po konečném schválení je provedena samotná synchronizace.

Unison lze samozřejmě předprogramovat na plně automatickou práci pomocí parametrů.

Nahoru

Odkazy

Příspěvky

Re: Unison
26. 01. 2007, 22:25:29
Odpovědět  Odkaz 
Bylo by mozne pouzit unison na synchronizaci mezi vyvojovym a ostrym serverem? Obcas je nutne udelat zmenu na ostrem serveru a tu pak potrebuji dostat zpet. A daji definovat vyjimky, napr. ze nechci prenaset konfiguracni soubor?

Přidat názor

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Pavel Císař

Pavel Císař (*1968) pracuje v oboru IT již více než patnáct let. Je znám především komunitě vývojářů používajících Borland Delphi a díky svým aktivitám na poli Open Source. Od září roku 2001 se výhradně věnuje podpoře uživatelů Firebirdu a InterBase, práci v rámci projektu Firebird a zastupování firmy IBPhoenix na území ČR. Ve volném čase čte sci-fi a užívá si rodinného života.