Hlavní navigace

Syncthing: synchronizace přes P2P bez centrálního serveru

1. 7. 2016
Doba čtení: 5 minut

Sdílet

Syncthing je svobodná odpověď na podobný nástroj BitTorrent Sync. Synchronizuje na jedničku, ale absence nastavení práv a omezená podpora NASů použití softwaru značně omezují.

Cloudových úložišť už je dnes tolik a podobají se do takové míry, že nemá cenu se jimi příliš zabývat. Rozvíjejí se ale i podstatně zajímavější nástroje, které se také snaží synchronizovat soubory, ale jinou cestou. Už dříve jsme psali o nástroji BitTorrent Sync (dnes Resilio Sync), který pro posílání souborů a spojování uživatelů využívá technologie ze světa BitTorrentu. Dnes se podíváme na Syncthing, software postavený na podobném principu.

Syncthing vznikl v roce 2013 a právě BitTorrent Sync se autoři zřejmě inspirovali. Hlavní rozdíl je v tom, že Syncthing je svobodný. Nejen že sofware je samozřejmě open-source, také synchronizační protokol Block Exchange Protocol (BEP), vyvinutý autory Syncthingu, je plně otevřený. Resilio sice používá protokol BitTorrent, ale neveřejnou modifikovanou variantu.

Podporované platformy

Jak lze u svobodéného projektu očekávat, podpora platforem je vskutku široká. Samozřejmostí je Linux, Windows a macOS, přičemž na Linuxu jsou podporovány i architektury ARM a PowerPC. Zaujme také podpora unixových systémů jako Solaris a několika variant BSD. Repozitář je k dispozici pouze pro Debian/Ubuntu, ale na ostatních distribucích lze použít univerzální binárky, takže nic kompilovat nemusíte.

Horší je to na mobilech. Syncthing sice má povedenou aplikaci pro Android, ale u něj to končí. S podporou dalších systémů autoři nepočítají. Resilio lze velmi snadno rozběhnout na řadě NASů, což pro Syncthing neplatí. Členové komunity se sice Syncthing na NAS snaží dostat, ale výsledky jsou různé a proces není zrovna jednoduchý. Alespoň pro Synology je Syncthing snadno dostupný v oficiálním komunitním repozitáři.

Klient má kromě příkazového pouze webové rozhraní, které je však docela povedené a účelné. Spíš zamrzí, že chybí nějaký applet, ze kterého byste informace o stavu synchronizace získali okamžitě. Vyzkoušet ale můžete některý z appletů nebo grafických rozhraní vyvinutých komunitou. Z rozhraní pro desktop jsem nenarazil na žádné, které by opravdu stálo za to. Celkem pěkné a dostupné ale je Syncthing GTK. Vypadá skoro stejně jako to webové a navrch přidává applet.

Data se přenášejí po blocích a šifrovaně

Princip synchronizace je poměrně prostý. Synchronizované soubory jsou nasekány na 128 KB bloky, které jsou přenášeny v zašifrované podobě (AES-128). Rozdělení na bloky umožňuje soubor stahovat rychleji, protože můžete stahovat od více klientů zároveň. To dobře znáte z BitTorrentu. Od nejnovější verze 0.13 může klient sdílet i nekompletní soubor, což opět o něco zvyšuje potenciální rychlost. V případě peer-to-peer sdílení logicky platí: čím víc klientů, tím vyšší rychlost.

Ještě předtím se ale počítače nějak musí najít. To funguje tak, že klient pošle své ID, IP adresu a UPnP port na discovery server. Tam se ostatní klienti dozví, kde klienta s daným ID aktuálně zastihnou. Klient se samozřejmě také rozhlíží v lokální síti. Možnosti objevování dalších klientů lze podrobněji konfigurovat. Můžete nastavit, že klienta vždy zastihnete na stejné IP, aby se discovery server nepoužíval. A nebo můžete rozběhnout vlastní discovery server.

Užitečné jsou také relay servery – prostředníci. Těch se využije tehdy, pokud mezi klienty z nějakého důvodu nelze navázat přímé spojení. Rychlost těchto dobrovolně a bezplatně provozovaných serverů pochopitelně nebývá zrovna blesková, ale pokud zrovna nepřenášíte mnoho gigabajtů dat, bude vám stačit. Každopádně je to lepší, než nemít spojení a tedy žádnou možnost synchronizace.

Snadné použití, ale zmatek v oprávněních

Systém sdílení je trochu odlišný od Resilia. Zatímco u něj je hlavní jednotkou adresář, u Syncthing se prvně rozlišuje klient (zařízení) a až poté adresář. Klienty spojíte tak, že v jednom zadáte ID (56 znaků) toho druhého, který musí odsouhlasit, že se chce spojit. Poté už žádná čísla, kódy nebo klíče nepotřebujete. Zkrátka z jednoho klienta nabídnete tomu druhému sdílené určitého adresáře. Na druhé straně ho potvrdíte a nastavíte parametry lokálního adresáře.

Nastavení je docela dobré projít. Užitečná je možnost nastavit, v jakém pořadí se mají soubory stahovat (např. od nejnovějších). Syncthing také nabízí několik způsobů verzování souborů. V základu není aktivní žádný, ale můžete nastavit uchovávání smazaných souborů, uchovávání X předchozích verzích souborů nebo tzv. postupné verzování, kdy se uchovává hodně verzí z nedávné doby a čím dál méně verzí starších. Nezapomeňte ale, že nastavení se vždy týká pouze jednoho konkrétního klienta a lokálního adresáře.

Tím se dostáváme k možná největší nevýhodě Syncthingu, a to absenci klasických oprávnění – např. nemůžete nasdílet adresář pouze pro čtení. Namísto toho se používají dva typy adresáře, a to normální a master. Master nepřijímá změny od ostatních klientů a také má možnost přepsat obsah adresáře ostatních nemaster klientů do té podoby, kterou má u sebe. A co víc – master adresář není jen jeden, tento režim si může sám od sebe nastavit kterýkoliv klient.

Tento přístup možná není úplně špatný, když pouze jeden uživatel synchronizuje data více stanic. Ale pro sdílení mezi více uživateli to vhodné není. Způsobuje to zmatky a v případě nedostatečné znalosti fungování to může způsobit i ztrátu dat. Další nepříjemností je fakt, že se Syncthing musí při každé větší změně, třeba přidání adresáře, restartovat.

Aplikace pro Android: plnohodnotný klient

Jak už jsem zmínil, aplikace pro Android se opravdu povedla. Je přehledná a co je nejdůležitější, jde o plnohodnotný klient jako pro PC. Ve výchozím nastavení se sice chová trochu jinak (např. neběží na pozadí), ale to vše lze přenastavit a Syncthing rozběhnout v plné parádě. Určitě se hodí nastavit, aby se adresáře synchronizovaly jen přes Wi-Fi (dokonce můžete vybrat konkrétní sítě), popřípadě jen při nabíjení. Např. synchronizace hudby mezi PC a telefonem by se Syncthingem mohla fungovat skvěle.

root_podpora

Pokud byste v nastavení mobilní aplikace něco nenašli, i zde můžete spustit popisovanou webovou verzi a skutečně nastavit všechno, co na desktopu. Vytkl bych jen fakt, že Syncthing spotřebuje o něco víc energie, než jsme zvyklí třeba u Dropboxu. Ale to se celkem dá čekat, vzhledem k tomu, že se Syncthing neustále snaží o udržení spojení atp. Nejde ale o nic hrozného a využití energie se může lišit podle zařízení.

Závěr

Synthing je povedený kus svobodného softwaru. Během tří let se projekt rozvinul a stabilizoval a dnes už se pravděpodobně nesetkáte s mnoha problémy. Bohužel nemá tolik možností využití, jak by se na první pohled mohlo zdát. Kvůli absenci systému oprávnění je to nástroj jen pro vás, případně ještě rodinu nebo pár kamarádů. Moc si nedovedu představit, že by tento systém vyhovoval pro širší nasazení třeba ve firmě. Dalším nedostatkem je omezená podpora NASů. Jeden stále běžící server, kterým může být právě NAS, totiž podstatně usnadňuje použití těchto peer-to-peer nástrojů.

Byl pro vás článek přínosný?

Autor článku

Bývalý redaktor serveru Root.cz, dnes produktový manažer a konzultant se zaměřením na Bitcoin a kryptoměny.