RSS

Synchronizowanie katalogów przy użyciu rsync

25 Wrz

Rsync (z angielskiego remote synchronization – zdalna synchronizacja) to protokół synchronizacji plików przez sieć. Zwykłe systemy przesyłania różnic (takie jak popularny diff/patch) wymagają istnienia obu wersji po jednej stronie, na podstawie których tworzona jest lista różnic a następnie przesyłana przez sieć. Rsync działa w odmienny sposób – przez sieć wysyłany jest spis plików z hashami bloków (zwykle ok. 1 kB), po czym na drugiej maszynie program sprawdza, które z fragmentów już posiada. Daje to bardzo dobre rezultaty i umożliwia radzenie sobie z sytuacjami, które dla patch/diff byłyby trudne do realizacji, jak przeniesienia plików. Rsync umożliwia też dostęp na bieżąco, w przeciwieństwie do „raz na dzień” w przypadku patch/diff.
Źródło : http://pl.wikipedia.org/wiki/Rsync

Tyle teorii na wstępie. Rsync można używać do robienia kopii zapasowych danych lub synchronizacji katalogów użytkowników z innych maszyn. Ten wpis będzie miał na celu pokazać jak łatwo wdrożyć Rsync na swoim serwerze i na klientach.

Program jest częścią standardowej dystrybucji Linuksa więc procesu instalacji nie będę opisywał bo nawet w czystej instalacji systemu już on jest.

Konfiguracja rsync :
Tworzymy plik /etc/rsyncd.conf
# pico /etc/rsyncd.conf
i dodajemy w nim :
uid = root
[baza]
path = /home/baza
[dok]
path = /home/dokumenty
read only = false

Udział baza pozwala tylko i wyłącznie na łączenie się z nim i pobieranie katalogu baza jeżeli istnieją różnice. Udział dok pozwala na wymianę plikami w obie strony.

Startujemy serwis Rsync :
./rsync start && rsync --daemon

Synchronizacja plików z serwera :
rsync -avz 192.168.0.103::baza /home/bartek/baza
Ważne jest użycie :: między adresem serwera a nazwą udziału. /home/bartek/baza to miejsce docelowe ściąganych plików.
Powtórne wywołanie tej samej komendy spowoduje ściągnięcie tylko nowych i zmodyfikowanych plików a nie wszystkiego od nowa.
W poleceniu rsync -avz .. można pominąć parametr -v (bo to jest verbose) oraz -z (kompresja ‚w locie’). Parametr -a oznacza archiwizację z zachowaniem wszystkich atrybutów plików (uid/gid/rwx/typ pliku).

Synchronizacja na serwer :
rsync -avz /home/bartek/dokumenty 192.168.0.103::dok

Po zestawieniu tego z Cronem zyskujemy całkiem dobre narzędzie do wykonywania kopii danych.

Jeżeli spotkamy się z takim błędem podczas próby połączenia z serwerem :
sync: failed to connect to 192.168.0.103: Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]

To oznacza że nie wydaliśmy polecenia rsync –daemon podczas startowania serwera.

Reklamy
 
1 Komentarz

Opublikował/a w dniu Wrzesień 25, 2009 w it, linuks, Linux, ubuntu

 

One response to “Synchronizowanie katalogów przy użyciu rsync

  1. Maciek

    Wrzesień 26, 2009 at 11:50 am

    Ważne jest również aby serwer i klient były w miarę z tej samej wersji. Dokładnie wczoraj zdarzyło mi się w pośpiechu zainstalować najstarszą wersję serwera dla Win32 (cwRsync) a na Ubuntu działał klient z najnowszą wersją protokołu i… `connection refused` 3-4 razy aż do poprawnego połączenia :]

     

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

 
%d blogerów lubi to: