Synchronizace adresářů v domácí síti

Synchronizace adresářů v domácí síti
« kdy: 22. 01. 2012, 13:40:59 »
Chtěl bych se zeptat, jak řešíte synchronizaci dat mezi laptopem a desktopem v rámci domácí sítě (wifi/lan). Představoval bych si to tak, aby to fungovalo automaticky na pozadí v době, kdy jsou oba počítače ve stejné síti online. Nějaký applet signalizující synchronizaci v Gnome/KDE bych si už zvládl napsat sám, ale nebráním se hotovým řešením.


Mirek

Re:Synchronizace adresářů v domácí síti
« Odpověď #1 kdy: 22. 01. 2012, 13:55:29 »
Asi před desetil lety jsem používal groupware LotusNotes, tj. měl v jejich databázích totálně všechno (dokumenty, soubory, texty, maily). Z práce přinesl "práci" domů, zreplikoval na desktop server/klient (replikace je dost chytrá a specifická oboustr. synchronizace). Doma něco vytvořil, replikace na notebk, v autobuse dopisování v notebk,.. a postupně slíval, čistil, upravoval dohromady. Vše totálně zabezpečené. Jenže 1) jsou to licence za dost peněz 2) fungovalo to jen pro vložená data, nikoli filesystém a adresáře 3) těžkopádný kombajn na pouhý požadavek synchro. 4) jen způsobem peer2peer a pro jednu osobu.
Přeci jedna výhoda: data bezpečně (šifrovaná) uložená na 3 místech, kdykoli přístup i bez sítě (!). Dnes používám Tortoise CVS, což mi naprosto stačí pro nějaké to html, C, doc, .. bez aplikačních nadstaveb jako funkce diff a pod.

Zopper

  • *****
  • 713
    • Zobrazit profil
Re:Synchronizace adresářů v domácí síti
« Odpověď #2 kdy: 22. 01. 2012, 16:27:30 »
Unison - využívá algoritmy rsync, ale na rozdíl od rsync zvládá oboustrannou replikaci včetně odstranění smazaných souborů a dovede si poradit s vícesměrovými replikacemi (např. topologie hvězda).

gman

Re:Synchronizace adresářů v domácí síti
« Odpověď #3 kdy: 22. 01. 2012, 21:46:47 »
Cau,

mozes pozret https://github.com/gman0/fsync - zatial to vie posielat nove subory a mazat uz neexistujuce (na cielovom pc). Je to len jednosmerna synchronizacia ale samozrejme moze spustit server aj tam aj tam (na inom porte samozrejme). Planujem pridat este posielanie zmien zo suboru. Ak to teda budes chciet pouzit tak netreba instalovat libboost_thread pretoze to tam teraz nic nepouziva a asi pouzivat ani nebude takze vymaz z Makefile serveru (src/server/Makefile) -lboost_thread. Configy, logy a databazu uklada do ~/.fsync a este mozem ukazat nejaky "ukazkovy" config:

~/.fsync/server_config.conf
Kód: [Vybrat]
# path ID:/absolutna/cesta/ku/zlozke
# Toto priradi ku ID (cele kladne cislo) nejaku *absolutnu* cestu ku zlozke
# ID tu sluzi na to, ze klient bude mat v configu taktiez nadefinovanu nejaku
# cestu taktiez s tymto ID a bude posielat vsetky poziadavky na tuto zlozku.
# Cize ak mame nejaky subor ktory sa nachadza v /home/foo/test_server/bar
# tak jeho cesta je vlastne 1:bar a ked sa bude posielat ku klientovy tak sa
# 1 zameni za jeho (klientovu) definiciu cesty s ID 1
#
# mozes pozret https://github.com/gman0/fsync/blob/master/src/ConfigParser.h#L34
# tam je popisanych este par veci o konfiguracii ciest)
path 1:/home/foo/test_server

# path -ID:/relativna/cesta/ku/suboru/alebo/zlozke
# Tento subor/zlozka sa nebude synchronizovat. Vzdy musi najskor existovat
# ID (povedzme 1) aby sa ku nemu mohla vytvorit "exkludacia".
# Tj. mame nadefinovanu cestu 1:/home/foo/test_server a ak si nadefinujeme
# exkludacnu cestu -1 tak ta cesta za dvojbodkou je relativna ku ceste s ID 1.
# Trochu normalnejsie napisane: ak mame v /home/foo/test_server subor hmm
# tak sa nebude synchronizovat.
path -1:hmm

# zapne rekurzivne prechadzanie adresarov (defaultne je vypnute)
recursive_search true

# nastavi port serveru na 2000 (co je vychodzia hodnota cize ak nechces
# pouzit iny port tak toto tu ani netreba
port 2000

~/.fsync/client_config.conf
Kód: [Vybrat]
# nastavi ip adresu servera (ku ktorej sa bude pripajat)
host 192.168.1.2

# nastavi port servera
port 2000

# Ako som uz spominal vyssie, server ma nadefinovanu cestu s ID 1
# a z tadial sa budu prenasat/mazat subory do nasej klientskej cesty
# s ID 1.
path 1:/home/foo/test_client

Este by som dodal ze fsync je napisany v C++ takze treba g++ a taktiez to (ako je napisane v README), je to este stale work-in-progress takze mozu byt nejake bugy, este tam chyba mnoho funkcionality.

===
Je urcite vela nastrojov na synchronizaciu takze asi nie je dovod pouzivat takyto nedorobok :D.
Ak to teda budes chciet vyskusat tak este treba spomenut ze server si vytvara databazu suborov (db tu sluzi na kontrolu novych/zmenenych/vymazanych suborov) a na zaciatku oznaci vsetky tie subory za nove takze sa ich bude snazit poslat klientovy (tj. ak ich na klientovy uz mas tak by bola blbost ich tam znova posielat)...hadam nabuduci tyzden tam pridam prepinac aby to vytvorilo db ale neposielalo tie subory...alebo ak sa ti chce hrabat v zdrojaku tak https://github.com/gman0/fsync/blob/master/src/ConfigParser.h#L34 - vsetko v tejto funkcii (konstruktore) od toho riadku zakomentuj a pridaj tam
Kód: [Vybrat]
m_fileGatherer->updateDb();

potom len spusti server, vytvori db a vypne sa..TADAAAA!!! taktiez to na konci spadne koli tomu ze uvolnuje nealokovanu pamat (ale to ta zaujimat nemusi, ved predsa mas databazu!). Teraz to daj do povodneho stavu a mas:D

gman

Re:Synchronizace adresářů v domácí síti
« Odpověď #4 kdy: 22. 01. 2012, 21:50:51 »
%^#$...ku tomu hrabaniu sa v zdrojaku..poslal som nespravny link - mal tam byt https://github.com/gman0/fsync/blob/master/src/server/Server.cpp#L37


skipper

Re:Synchronizace adresářů v domácí síti
« Odpověď #5 kdy: 22. 01. 2012, 22:01:17 »
Dropbox