27.2. Výběr vhodného programu

Při výběru vhodného programu byste měli zvážit následující hlediska:

27.2.1. Klient-Server vs. Peer-to-Peer

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.

27.2.2. Přenositelnost

CVS, subversion a unison jsou dostupné také ve verzích pro jiné operační systémy včetně Unixu a Windows.

27.2.3. Interaktivní vs. automatický

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.

27.2.4. Konflikty: výskyt a řešení

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.

27.2.5. Výběr a vkládání souborů

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.

27.2.6. Historie

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

27.2.7. Objem dat a požadavky na diskový prostor

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.

27.2.8. GUI

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šší.

27.2.9. Uživatelská přívětivost

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

27.2.10. Bezpečnost

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.

27.2.11. Ochrana proti ztrátě dat

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

+

++/++

+

+