Warning: Memcache::addserver() expects parameter 2 to be long, string given in /usr/home/rpc/domains/rpc.one.pl/public_html/libraries/joomla/cache/storage/memcache.php on line 84 rsync - prosty backup z windows do linux
 
 
rsync - prosty backup z windows do linux Drukuj Email
Wpisany przez rpc   
wtorek, 06 kwietnia 2010 09:37

rsync - prosty backup z windows do linux

 

Rsync to protokół synchronizacji plików przez sieć. Za jego pomocą możemy w prosty sposób wykonać i odzyskać kopię dokumentów/plików. Rsync dzięki swej prostocie wykonując kopię przesyła tak naprawdę tylko zmienione pliki. Pierwsza kopia przeważnie trwa długo ( potrzeba transferu wszystkich plików) następne są już bardzo szybkie ( tylko transfer zmienionych plików ). Taki sposób robienia kopii ma też tę zaletę, iż na nośniku gdzie jest robiony backup trzymana jest pełna kopia wszystkich/aktualnych plików i kopia tylko starych zmienionych plików - czyli oszczędzamy na miejscu na dysku. Oczywiście jest to standardowa metoda co nie oznacza, iż nie możemy tego zmienić. Rsync jest bardzo elastycznym programem do robienia kopii z wieloma opcjami konfiguracyjnymi na wiele systemów operacyjnych.

Przedstawię poniżej konfigurację do robienia kopii z windows na linuxa.

Rsync może działać w dwóch trybach pracy:

  • pobiera dane z serwera(client rsync ssie dane z serwera rsync)
  • wysyła dane na serwer (client rsync wysyła dane do serwera rsync).

 

Instalacja w Windows

Pobieramy rsync w najnowszej wersji.  W tym momencie występują następujące wersje:
cwRsync_4.0.5_Installer.zip - client rsync dla windows
cwRsyncServer_4.0.6_Installer.zip - client/server dla windows

 

Instalacja w Debian

apt-get update
apt-get install rsync

 

Konfiguracja w Windows ( rsync jako server backup)

Instalujemy w windows program w wersji cwRsyncServer. W czasie instalacji program utworzy domyślnego użytkownika "SvcCWRSYNC" (oczywiście możemy podstawić własnego) z którym uruchamiany będzie rsync jako usługa systemowa. Domyślnie jest ustawione tak, iż nie uruchamia się w czasie startu. Jeśli chcemy to zmienić musimy przejść do:

Panel starowania -> Narzędzia administracyjne -> Usługi -> Rsync serwer

Należy przełączyć tryb uruchomienia z ręcznego na automatyczny.

Należy pamiętać również o uprawnieniach do plików i katalogów, które chcemy kopiować. Czyli np. użytkownika "SvcCWRSYNC" dodajemy do grupy Administratorzy.

Panel starowania -> Narzędzia administracyjne -> Zarządzanie komputerem -> Użytkownicy i grupy lokalne - Grupy

(Ps. Jeśli pliki są zaszyfrowane będzie problem z dostępem do plików. Niestety Windows ma możliwość tylko dodania innego usera do pliku nie do katalogu. Dlatego ten sposób będzie dobry do robienia kopii plików ale nieszyfrowanych. No chyba, że demon rsync będzie działał z uprawnieniami użytkownika do którego należą pliki zaszyfrowane.)

Edytujemy plik rsyncd.conf, który jest w katalogu domyślnym instalacji

C:\Program Files\ICW\rsyncd.conf

Zawartość pliku może wyglądać jak poniżej:

max connections = 10
use chroot = false
strict modes = false
hosts allow = *
lock file = /cygdrive/C/temp/rsyncd.lock
log file = /cygdrive/C/temp/rsyncd.log
pid file = /cygdrive/C/temp/rsyncd.pid

[Documents]
path = /cygdrive/c/users/jkowalski/documents
read only = true
transfer logging = yes
uid = 0
gid = 0
exclude = desktop.ini

[Desktop]
path = /cygdrive/c/users/jkowalski/desktop
read only = true
transfer logging = yes
uid = 0
gid = 0
exclude = desktop.ini *.lnk

[dysk_e]
path = /cygdrive/e
read only = true
tranfer logging = yes
uid = 0
gid = 0
exclude = desktop.ini  *.lnk  /RECYCLER  /System?Volume?Information  /Program?Files

[dysk_g]
path = /cygdrive/g
read only = true
tranfer logging = yes
uid = 0
gid = 0
exclude = /Grupy/*/Kosz ~*.*  Thumbs.db  /profiles/*/WinXP/* /profiles/*/WinXP/Dane?aplikacji/* /profiles/*/Win95/*
include = /profiles/*/WinXP/ WinXP/Moje?dokumenty WinXP/Pulpit /profiles/*/WinXP/Dane?aplikacji/ WinXP/Dane?aplikacji/Thunderbird

Udostępniamy do zrobienia kopii dwa katalogii użytkownika "jkowalski". Zwracam uwagę na uid i gid - jest to wymagane pod windows.
Ponieważ ta wersja rsync bazuje na bibliotekach cygwin wymagane jest podawanie ścieżek ze słowem początkowym cygdrive np.

c:\windows\system -> /cygdrive/c/windows/system
c:\Program files\Avast -> /cygdrive/c/program files/avast

Małe wyjaśnienie do include i exclude:
* - dowolny znak lub ilość znaków
? - dowolny jeden znak
spacja oddziela poszczególne warunki.
Dlaczego jedne warunki zaczynają się od "/" a drugie nie ? Otóż ze slash "/" szukamy katalogu/pliku zaczynając od korzenia folderów zdefiniowanego w na końcu ścieżki path. Jeśli zaś nie podamy "/" to szukamy dokładnego ciągu znajdującego się gdzieś w drzewie katalogów
np. WinXP/Dane?aplikacji/Thunderbird oznacza, iż szukamy wystąpienia dokładnie takiej składni katalogów w takiej kolejności gdzieś na dysku.

Po więcej informacji odsyłam do dokumentacji:
manual rsync
info cygwin

 

Konfiguracja linuxa ( linux jako client rsync dla windows)

Tworzymy plik tekstowy np. rc.backup o zawartości:

#!/bin/sh

IP=192.168.1.100
kat_pwd=`pwd`
kat=$kat_pwd/jkowalski
kat_date=`date +%Y-%m-%d`

OPTIONS="-aEvrltz --delete --force --ignore-errors --backup"

kat_doc=Documents
kat_arch=$kat/Archive/$kat_doc/$kat_date
rsync $OPTIONS --backup-dir=$kat_arch rsync://$IP/$kat_doc $kat/$kat_doc

kat_doc=Desktop
kat_arch=$kat/Archive/$kat_doc/$kat_date
rsync $OPTIONS --backup-dir=$kat_arch rsync://$IP/$kat_doc $kat/$kat_doc

 

Jak uruchomimy to wykona się kopia plików z windows:

c:\Users\jkowalski\Desktop
c:\Users\jkowalski\Documents

do katalagu wskazanego na linux czyli do:

jkowalski/Documents
jkowalski/Desktop

Ten skrypt tak naprawdę utworzy jeszcze jeden katalog

jkowalski\Archive\RRRR-MM-DD   #gdzie ostatni katalog to data bieżąca

do tego katalogu zostaną przesunięte zmienione pliki i katalogi tak aby można łatwo było je później odtworzyć

 

Ps. Ten skrypt możemy przedstawić następująco w jednym wierszu:

rsync -aEvrltz --delete --force --ignore-errors --backup --backup-dir=jkowalski/Archive/Desktop/2010-04-06 rsync://192.168.1.100/Desktop jkowalski/Desktop

 



 

Wykonywanie kopii plików np. na innym NAS z rsync poprzez ssh

Mamy zainstalowaną wersję "cwRsync" w windows.  Edytujemy plik

C:\Program Files\cwRsync\cwrsync.cmd

dopisujemy na końcu pliku w jednym wierszu np.

rsync.exe  -v -rlt -z --delete --rsh="ssh -l user_ssh -p 22" --progress --stats --no-whole-file "/cygdrive/c/users/jkowalski/Documents/Dokumentacje PDF" "user_ssh/@192.168.1.100:/home/user_ssh/rsync"

Teraz jak uruchomimy cwrsync.cmd, podamy hasło usera do ssh to zrobimy backup plików z windows na linuxa na podanej ścieżce poprzez ssh.

Wiersz powyżej wykona kopię plików z katalogu

c:\Users\jkowalski\Document\Dokumentacje PDF

Czyli na linux po zalogowaniu się poprzez ssh w istniejącym katalogu usera "/home/user_ssh" rsync utworzy nowy katalog "rsync/Dokumentacje PDF" i tam przekopiuje wskazane pliki.

Można to zautomatyzować. Trzeba wrzucić do Harmonogramu windows i skorzystać z kluczy RSH zamiast hasła.

Pod windows plik known_hosts i authorized_keys domyślnie trzymane są w katalogu usera:

c:\Users\jkowalski\.ssh

 

.



Podziel się tą informacja z innymi:
Poprawiony: środa, 22 września 2010 11:13