Przykładowe zastosowanie:
Codziennie wykonuję backup moich dokumentów z laptopa na QNAPa. Rozważałem różne możliwości backupu. W sieci LAN to nie problem - można skopiować pliki ręcznie, użyć FTP lub np za pomocą jakiegoś ulubionego programu do backupu danych.
Podstawowym problemem jednak była wielkośc katalogu który kopiuję - zawiera on w tej chwili ponad 16tys plików, prawie 3Gb danych.
Nawet w sieci LAN wysyłanie takiej ilości plików trwa długo. Pomyślałem o programie zewnętrznym który zajmie się backupem. Ale po co płacic, skoro mamy narzędzie o nazwie rsync.
Jak to działa
Kopiowane są tylko pliki nowe oraz te które uległy zmianie. Jeśli jakiś plik skasowano na komputerze z którego robimy backup - zniknie on i na QNAPie. Takich ustawień używam w moim przypadku. Efekt jest rewelacyjny - zamiast kopiować załość lub pamiętać które pliki zmieniałem/dodałem uruchamiam rsync i po chwili wszystko na QNAPie jest idealną kopią mojego katalogu. Chcesz poczytać o rsync - zapraszam na http://rsync.samba.org
OK, fajnie. Tak działa rsync ale w czym był problem?
Rsync pięknie działa w sieci LAN ale ja chciałbym mieć możliwość backupu także przez Internet. Nie mogę otworzyć po prostu portu rsyncd do serwera bo jest to zbyt niebezpieczne. Pojawiła się także potrzeba robienia takich backupów przez innych użytkowników.
Urządzenia QNAP mają jedną dość irytującą wadę - bezpieczne logowanie po SSH może się odbyć tylko dla konta administratora. Trzeba więc było obejść tę niedogodność.
Instalujemy OpenSSH
Zakładam że mamy zainstalowane Optware. Zalecam instalację przez QPKG. Stosowne HOWTO jest na forum.
Instalujemy paczkę OpenSSH
Instalacja trochę potrwa - zwłaszcza tworzenie kluczy.
Mamy już ssh które przyjmie każdego z użytkowników QNAP. Odpalamy SSH:
gdzie XX to nowy numer portu. Tę wersję SSH używam tylko do replikacji plików.
Teraz trzeba sprawdzić czy na QNAPie działa demon rsync
Jeśli nie ma takiego procesu uruchamiamy demona w następujacy sposób:
Konfiguracja klientów
Do replikacji na systemach z rodziny linux zazwyczaj nic nie trzeba instalować. Większość dystrybucji ma ssh, rsync od razu zainstalowane.
Ja używam do pracy systemy Windows i spod niego chcę wykonywać replikację plików.
Potrzebujemy paczki rsync działającej pod Windows: http://itefix.no/cwrsync/
Z linii poleceń uruchamiamy w katalogu gdzie zainstalował się rsync polecenie:
rsync.exe -v -rlt -z --delete --rsh="ssh -l nazwauzytkownika -p XX" --progress --stats --no-whole-file "/cygdrive/nazwadysku/sciezka/" "nazwauzytkownika@adresIP_QNAPa:/share/Backup/sciezka/"
składnia jest następująca - nazwa użytkownika to nazwa usera QNAP na którego chcemy się zalogować, XX - port na którym nasłuchuje nasz OpenSSH na serwerze. Ścieżka zaczynająca się od cygdrive to ścieżka do katalogu który chcemy replikować. Ostatnia ścieżka - docelowe miejsce gdzie dane skopiowane mają wylądować.
W moim przypadku polecenie kopiujące z dysku D cały katalog Dokumenty do QNAPa do /share/Backup wygląda tak:
To tyle. Odpalamy i gotowe. Pierwsza replikacja będzie trwać - przesyłane są wszystkie pliki. Kolejne replikacje to już mgnienie oka -przesyłamy tylko to co uległo zmianie. Oczywiście przy pierwszym uruchomieniu połączenia zapisane zostaną klucze SSH na komputerze klienta.
Ważne
Należy też pamiętać o przeforwardowaniu portu XX (daemon openssh) jeśli QNAP znajduje się za NATem. Inaczej się z nim nie połączymy.
Konfiguracja którą opisałem działa do pierwszego restartu. Należy więc zmodyfikować plik autostart.sh i zadbać o to aby demon OpenSSH startował razem z systemem. U mnie rsyncd startuje automatycznie - nie musiałem więc dodawać go do autostart. Odpowiedni HOWTO jest na forum.
Pozostaje też zabawa z użytkownikami - otworzyliśmy im wejście po SSH na serwer. Miło by było zatem aby zadbać o to by nie mogli za dużo gmerać w shellu.
Codziennie wykonuję backup moich dokumentów z laptopa na QNAPa. Rozważałem różne możliwości backupu. W sieci LAN to nie problem - można skopiować pliki ręcznie, użyć FTP lub np za pomocą jakiegoś ulubionego programu do backupu danych.
Podstawowym problemem jednak była wielkośc katalogu który kopiuję - zawiera on w tej chwili ponad 16tys plików, prawie 3Gb danych.
Nawet w sieci LAN wysyłanie takiej ilości plików trwa długo. Pomyślałem o programie zewnętrznym który zajmie się backupem. Ale po co płacic, skoro mamy narzędzie o nazwie rsync.
Jak to działa
Kopiowane są tylko pliki nowe oraz te które uległy zmianie. Jeśli jakiś plik skasowano na komputerze z którego robimy backup - zniknie on i na QNAPie. Takich ustawień używam w moim przypadku. Efekt jest rewelacyjny - zamiast kopiować załość lub pamiętać które pliki zmieniałem/dodałem uruchamiam rsync i po chwili wszystko na QNAPie jest idealną kopią mojego katalogu. Chcesz poczytać o rsync - zapraszam na http://rsync.samba.org
OK, fajnie. Tak działa rsync ale w czym był problem?
Rsync pięknie działa w sieci LAN ale ja chciałbym mieć możliwość backupu także przez Internet. Nie mogę otworzyć po prostu portu rsyncd do serwera bo jest to zbyt niebezpieczne. Pojawiła się także potrzeba robienia takich backupów przez innych użytkowników.
Urządzenia QNAP mają jedną dość irytującą wadę - bezpieczne logowanie po SSH może się odbyć tylko dla konta administratora. Trzeba więc było obejść tę niedogodność.
Instalujemy OpenSSH
Zakładam że mamy zainstalowane Optware. Zalecam instalację przez QPKG. Stosowne HOWTO jest na forum.
Instalujemy paczkę OpenSSH
Bash:
ipkg install openssh
Mamy już ssh które przyjmie każdego z użytkowników QNAP. Odpalamy SSH:
Bash:
/opt/sbin/sshd -p XX
Teraz trzeba sprawdzić czy na QNAPie działa demon rsync
Bash:
ps | grep rsyncd
Bash:
rsyncd --daemon --sever-type=0
Konfiguracja klientów
Do replikacji na systemach z rodziny linux zazwyczaj nic nie trzeba instalować. Większość dystrybucji ma ssh, rsync od razu zainstalowane.
Ja używam do pracy systemy Windows i spod niego chcę wykonywać replikację plików.
Potrzebujemy paczki rsync działającej pod Windows: http://itefix.no/cwrsync/
Z linii poleceń uruchamiamy w katalogu gdzie zainstalował się rsync polecenie:
rsync.exe -v -rlt -z --delete --rsh="ssh -l nazwauzytkownika -p XX" --progress --stats --no-whole-file "/cygdrive/nazwadysku/sciezka/" "nazwauzytkownika@adresIP_QNAPa:/share/Backup/sciezka/"
składnia jest następująca - nazwa użytkownika to nazwa usera QNAP na którego chcemy się zalogować, XX - port na którym nasłuchuje nasz OpenSSH na serwerze. Ścieżka zaczynająca się od cygdrive to ścieżka do katalogu który chcemy replikować. Ostatnia ścieżka - docelowe miejsce gdzie dane skopiowane mają wylądować.
W moim przypadku polecenie kopiujące z dysku D cały katalog Dokumenty do QNAPa do /share/Backup wygląda tak:
Kod:
rsync.exe -v -rlt -z --delete --rsh="ssh -l nazwauzytkownika -p XX" --progress --stats --no-whole-file "/cygdrive/D/Dokumenty/" "nazwausytkownika@adresserwera:/share/Backup/Dokumenty/"
To tyle. Odpalamy i gotowe. Pierwsza replikacja będzie trwać - przesyłane są wszystkie pliki. Kolejne replikacje to już mgnienie oka -przesyłamy tylko to co uległo zmianie. Oczywiście przy pierwszym uruchomieniu połączenia zapisane zostaną klucze SSH na komputerze klienta.
Ważne
Należy też pamiętać o przeforwardowaniu portu XX (daemon openssh) jeśli QNAP znajduje się za NATem. Inaczej się z nim nie połączymy.
Konfiguracja którą opisałem działa do pierwszego restartu. Należy więc zmodyfikować plik autostart.sh i zadbać o to aby demon OpenSSH startował razem z systemem. U mnie rsyncd startuje automatycznie - nie musiałem więc dodawać go do autostart. Odpowiedni HOWTO jest na forum.
Pozostaje też zabawa z użytkownikami - otworzyliśmy im wejście po SSH na serwer. Miło by było zatem aby zadbać o to by nie mogli za dużo gmerać w shellu.