Při výběru vhodného programu byste měli zvážit následující hlediska:
Pro distribuci dat se používají dva odlišné modely. V prvním modelu všichni klienti synchronizují data s centrálním serverem, který musí být alespoň čas od času pro klienty dostupný. Tento model používá subversion, CVS a WebDAV.
Druhou možností je synchronizace dat mezi klienty navzájem. Tak pracuje např. unison. Program rsync obvykle pracuje v klientském režimu, ale každý klient může fungovat i jako server.
CVS, subversion a unison jsou dostupné také ve verzích pro jiné operační systémy včetně Unixu a Windows.
V programech subversion, CVS, WebDAV a unison synchronizaci spouští uživatelé ručně. Mají nad ní tak větší kontrolu. Pokud však uživatelé synchronizují v příliš dlouhých intervalech, zvyšuje se pravděpodobnost konfliktu.
Konflikty jsou v CVS a subversion vzácné i v případě spolupráce velkého množství lidí na rozsáhlém projektu. Je to díky tomu, že změny v souborech jsou slučovány po jednotlivých řádcích. Když konflikt přeci jen nastane, je postižen pouze jeden klient. Konflikty se v CVS i subversion dají obvykle snadno řešit.
Unison oznamuje konflikty a umožňuje vyjmout postižené soubory ze synchronizace. Slučování změn je však obtížnější než v aplikacích subversion a CVS.
Na rozdíl od subversion či CVS, ve kterých lze přijmout změny v případě konfliktu alespoň částečně, přijme WebDAV změny pouze pokud je vše v pořádku.
Aplikace rsync se o konflikty vůbec nestará. Uživatel je zodpovědný za ruční řešení veškerých konfliktů a za to, aby omylem nepřepsal žádné soubory. Na druhou stranu lze dodatečně zapojit systém správy verzí, jako např. RCS.
Ve standardní konfiguraci synchronizuje unison celý adresářový strom. Nové soubory přidané do adresářového stromu jsou automaticky synchronizovány.
V subversion nebo CVS
musí být nové soubory explicitně přidány příkazem
svn add či
cvs add.
Znamená to větší uživatelskou kontrolu nad synchronizací, ale na druhou
stranu se nové soubory často přehlédnou, zejména v případě, kdy je souborů
mnoho a otazníky ve výstupu příkazů
svn update a
svn status nebo
cvs update nejsou
uživatelem zpozorovány.
Další funkcí subversion a CVS je možnost rekonstrukce starých verzí. Ke každé změně je možno doplnit krátkou poznámku. Vývoj všech souborů lze později snadno vysledovat na základě záznamů o změně obsahu a poznámek. To je neocenitelná pomoc zejména v případě vědeckých prací a zdrojových programových kódů.
Při synchronizaci je nutné mít na všech klientech dostatek místa pro data. V případě subversion a CVS budete navíc potřebovat místo na serveru pro repositář. Historie souborů je také uložena na serveru a vyžaduje další prostor. U textových souborů se ukládají pouze pozměněné řádky. Binární soubory se ukládají celé, pro uložení každé změny tedy vyžadují tolik místa, kolik zabírá celý soubor.
Unison nabízí pro zobrazení navrhovaného postupu synchronizace grafické uživatelské prostředí. Můžete v něm návrh přijmout či vyjmout jednotlivé soubory ze synchronizace. V textovém režimu lze interaktivně přijímat jednotlivé procedury.
Zkušení uživatelé obvykle pracují se subversion či CVS přes příkazovou řádku. Pro Linux však k těmto programům existují i grafická prostředí, jako např. cervisia. V jiných operačních systémech existují podobné programy, např. wincvs. Mnoho vývojářských nástrojů, jako např. kdevelop, a textových editorů, jako např. emacs, podporuje CVS či subversion. Řešení konfliktů je s těmito nástroji obvykle o poznání jednodušší.
Programy unison a rsync se používají poměrně snadno a jsou vhodné pro
začátečníky. CVS a subversion jsou poněkud obtížnější. Vyžadují, aby
uživatel pochopil vztah mezi repositářem a lokálně umístěnými daty. Změny
by nejprve měly být sloučeny s repositářem lokálně pomocí příkazu
cvs update nebo
svn update.
Pak musí být data odeslána zpět do repositáře příkazem
cvs commit nebo
svn commit.
Pokud uživatel pochopí tento princip, bude pro něj i použití CVS či
subversion snadné.
Data by během přenosu měla být chráněna proti nedovolené manipulaci. Unison, subversion, CVS i rsync lze používat spolu s ssh (Secure Shell). Pokud chcete svým datům zajistit maximální bezpečnost, vyhněte se používání rsh (Remote Shell). V nedůvěryhodných nebo otevřených sítích nepoužívejte s CVS pserver. Program subversion použitý spolu se serverem apache již obsahuje bezpečnostní mechanizmy.
CVS je vývojáři používán velmi dlouho a je extrémně stabilní. Protože ukládá historii projektu, je CVS chráněn i proti chybám uživatelů jako je např. nechtěné smazání souboru. Ačkoliv není subversion tak rozšířená jako CVS, je již běžně nasazována do produkčního prostředí, například sama při svém vývoji.
Unison patří k novějším programům, ale vyznačuje se vysokou stabilitou. Je však mnohem citlivější na chyby uživatelů. Např. smazaný soubor nelze po synchronizaci obnovit.
Tabulka 27.1. Funkce synchronizačních nástrojů: -- = velmi nízká, - = nízká nebo žádná, o = střední, + = dobrá, ++ = výborná, x = dostupná
unison | CVS/subv. | rsync | mailsync | |
|---|---|---|---|---|
Klient/server | rovnocenné | C-S/C-S | C-S | rovnocenné |
Přenositelnost | Lin,Un*x,Win | Lin,Un*x,Win | Lin,Un*x,Win | Lin,Un*x |
Interaktivita | x | x/x | x | - |
Rychlost | - | o/+ | + | + |
Konflikty | o | ++/++ | o | + |
výběr soub. | adresář | výběr/soub., adr. | adresář | mailbox |
Historie | - | x/x | - | - |
Místo na disku | o | -- | o | + |
GUI | + | o/o | - | - |
Obtížnost | + | o/o | + | o |
Útoky | +(ssh) | +/+(ssh) | +(ssh) | +(SSL) |
Ztráta dat | + | ++/++ | + | + |