Synchronizacja plików
Synchronizacja najogólniej polega na tym, że bierzemy dwie wersje tego samego katalogu znajdujące się w dwóch miejscach i przetwarzamy je tak, żeby stały się one swymi lustrzanymi odbiciami. Istotne jest, że ani miejsce A, ani B nie jest w żaden sposób uprzywilejowane - program może zdecydować, że część różnic będzie zniwelowana poprzez skopiowanie danych z A do B, a druga część - z B do A. O tym decydują dwa kryteria: czas wprowadzenia zmiany (przyjmujemy, że nowsze pliki zawierają aktualniejsze informacje) oraz czy dwie zmiany w tym samym pliku nie kolidują ze sobą. Proces synchronizacji prosi nas o pomoc tylko w przypadku takiej kolizji, czyli konfliktu. Taka definicja gwarantuje nam, że w codziennej pracy, gdy naprzemiennie używamy np. laptopa i stacjonarnego, cała nasza ingerencja sprowadza się do włączenia synchronizacji bez konieczności pamiętania, na której maszynie ostatnio dokonywaliśmy zmian oraz w których plikach. Wszystkim zajmie się komputer, zgłaszając dodatkowo wszystkie niekompatybilne ze sobą zmiany wprowadzone na obu maszynach i dając nam możliwość ich połączenia.
Zagadnieniem synchronizacji zainteresowałem się właśnie, gdy liczba moich maszyn przekroczyła 1, lecz długo nie przechodziłem z fazy projektu do czynu. Na wstępie odrzuciłem systemy kontroli wersji stosowane przy tworzeniu programów, tj. SVN czy CVS. Do synchronizacji zawartości dwóch komputerów nie nadają się, ponieważ wymagają obecności centralnego serwera, zostawiają własne śmieci w katalogach, a sam proces jest dość skomplikowany (m.in. jest tam możliwość... opisania zmian :)). Jest to bezsprzecznie wytaczanie kombajnu do skoszenia trawnika. Na drugi ogień poszedł rsync, standardowe narzędzie uniksowe stosowane do tego celu. Problem w tym, że tu musiałbym sobie napisać trochę własnych skryptów do automatyzacji całego procesu, by nie stukać wszystkiego ręcznie z linii komend. Kumpel, który wcześniej zajął się sprawą, aby synchronizować swoją kolekcję muzyki, pokazał mi program Unison wyposażony w prosty w użyciu graficzny interfejs.
Unison
Unison korzysta z tego samego algorytmu synchronizacji, co rsync, przesyłając jedynie zmienione części plików, co przyspiesza cały proces i nie obciąża zbytnio łącza. Możemy synchronizować zarówno dwa katalogi na tym samym komputerze, jak i zdalnie, poprzez ssh. Program działa nie tylko na Linuksie, ale także na innych platformach, w tym systemie Windows. Nie będę tu dokładnie rozpisywać się o jego instalowaniu i konfiguracji, ponieważ na tym blogu w związku z częstotliwością pojawiania się nowych wpisów mija się to trochę z celem. Za to artykuł jest jak najbardziej OK, a teraz dodam jedynie, że nie jest to trudne. Do zainstalowania potrzeba nam:
- OpenSSH
- Avahi (przydatne przy DHCP)
- Unison
Konfigurujemy OpenSSH, w Avahi tylko nakazujemy systemowi DNS korzystanie z tego, a reszta konfiguruje się sama i już możemy działać.






Napisał mik01aj w środę, 30 lipca 2008 o 21:47
Sam sobie to dzisiaj zainstalowałem - działa ładnie, tylko trochę wolno jak dla mnie. W każdym razie dzięki za info.