Strona 1 z 1

Synchronizacja katalogów na dwóch serwerach

: 27 kwietnia 2010, 19:46
autor: ast89
Witam.
Mam mały problem.
Potrzebuję dokonywać synchronizacji plików z jednego folderu na dwóch serwerach.

Utworzyłem klucz poleceniem:

Kod: Zaznacz cały

ssh-keygen -t rsa
nie podając hasła na głównym serwerze gdzie stoi strona.

Dodałem zawartość:

Kod: Zaznacz cały

 /root/.ssh/id_rsa.pub
do:

Kod: Zaznacz cały

 /root/.ssh/authorized_keys
znajdującego się na drugim serwerze.

Do crontaba dodałem wpis:

Kod: Zaznacz cały

* * * * * /usr/bin/rsync -avz --no-owner --no-group -e ssh /var/www/virtual/xxxxxx.pl/auto/*pdf [EMAIL="root@xx.xx.xx.xx"]root@xx.xx.xx.xx[/EMAIL]:/root/pliki/pdf
Zamiast xx jest oczywiście adres IP, i niestety nie działa synchronizacja.

Edycja:
Jeśli uruchomię ręcznie:

Kod: Zaznacz cały

rsync -avz --no-owner --no-group -e ssh /var/www/virtual/xxxxxx.pl/auto/*pdf [EMAIL="root@xx.xx.xx.xx"]root@xx.xx.xx.xx[/EMAIL]:/root/pliki/pdf
To wyświetla się komunikat, czy chcę dokonać synchronizacji, jeśli wybiorę tak, to jest wykonywana.
Proszę o pomoc, jakieś wskazówki co robię źle.

: 27 kwietnia 2010, 21:24
autor: adasiek_j
1. plik z kluczem na masyznie docelowej powinien nazywać się: authorized_kesy2
2. w crontabie jest inna składnia - zapisz:

Kod: Zaznacz cały

01 23 * * * root /usr/local/bin/skrypt_do_kopii
3. w pliku /usr/local/bin/skrypt_do_kopii zrób sobie raczej

Kod: Zaznacz cały

#!/bin/sh
#
# kopia...
LOG="/var/log/kopia.log"
ERR="/var/log/kopia.err"
SIP="192.168.0.1"  #ip serwera docelowego
cd /var/www/virtual/xxxxxx.pl/auto
/usr/bin/rsync -auvz --no-owner --no-group --rsh=ssh [EMAIL="root@xx.xx.xx.xx"]root@${SIP}[/EMAIL]:/root/pliki/pdf .> $LOG 2>>$ERR
4. Na końcu wykonaj polecenia:

Kod: Zaznacz cały

chmod +x /usr/local/bin/skrypt_do_kopii
/etc/init.d/cron restart
I wtedy o 23:01 powinien się wykonać ten skrypt.

Adam

: 27 kwietnia 2010, 22:14
autor: lessmian2
Jakiś czepliwy dzisiaj jestem ;)
adasiek_j pisze:1. plik z kluczem na masyznie docelowej powinien nazywać się: authorized_kesy2
Na pewno? Defaultowo jest jednak authorized_keys - spójrz w konfig sshd.
adasiek_j pisze:2. w crontabie jest inna składnia
Zależy o której tablicy crona mówimy. Jeśli o tablicy globalnej, to i owszem. Ale przy tablicach użytkowników, to już nie bardzo.
adasiek_j pisze:

Kod: Zaznacz cały

/usr/bin/rsync -auvz --no-owner --no-group --rsh=ssh root@${SIP}:/root/pliki/pdf .> $LOG 2>>$ERR
I pliki się skopiują "w drugą stronę"? ]ast89[/b] chciał odwrotnie?

ast89, samo logowanie przez ssh za pomocą klucza działa? Jak dodawałeś wpis do crona? I jaki jest dokładnie komunikat potwierdzenia synchronizacji o którym piszesz?

: 27 kwietnia 2010, 23:05
autor: adasiek_j
@lessmian, tak z pamięci piszę, bo wszędzie używam authorized_keys2 i jakoś działa (lenny5 oraz openSUSE od 10.0 do 11.2) - ale patrzę w konfigi.

Kod: Zaznacz cały

cs:/etc/ssh# cat sshd_config | grep authorized_keys
#AuthorizedKeysFile    %h/.ssh/authorized_keys
cs:/etc/ssh# ls -l ~/.ssh/
razem 20
-rw-r--r-- 1 root root  638 kwi 26 12:42 00_rsa-keys.tgz
-rw------- 1 root root  687 kwi 26 12:42 authorized_keys2
-rw------- 1 root root 1675 kwi 26 12:42 id_rsa
-rw-r--r-- 1 root root  410 kwi 26 12:42 id_rsa.pub
-rw-r--r-- 1 root root  884 kwi 26 18:22 known_hosts
cs:/etc/ssh# 
I authorized_keys jest zakomentowane - nie chce mi się wgłębiać w źródła openSSH na Lennym ja używam authorized_keys2 i działa.

Co do składni odwróconej, to chylę czoła, trochę za dużo na raz robię.

Kod: Zaznacz cały

rsync -aukvz --rsh=ssh *.pdf root@${SIP}:/root/pliki/pdf
Co do crontaba - przyjąłem, że edytuje w /etc....

A komunikat potwierdzenia synchronizacji to sam jestem ciekaw, jak u niego wygląda?

Ps. CS to skrót od Cutty-Sark, nie od Counter-Strike, mój serwer nie jest do gier.
Adam

: 28 kwietnia 2010, 01:28
autor: ast89
Problem w pewnym stopniu już rozwiązałem. Należało najpierw ręcznie odpalić synchronizację, aby pozbyć się tego nieszczęsnego pytania : czy dokonać synchronizacji.
A co do samej synchronizacji to dokonywać się musi w maksymalnym odstępie 10minut, ze względu na częste aktualizacje plików.
Potrzebuję jeszcze aby po z synchronizowaniu katalogów, pliki z serwera głownego zostały skasowane.

Crontaba edytuję za pomocą wpisu

Kod: Zaznacz cały

crontab -e

: 28 kwietnia 2010, 18:08
autor: adasiek_j
W takim razie skrypt powinien wyglądać mniej więcej tak:

Kod: Zaznacz cały

#!/bin/sh
#
# kopia...
LOG="/var/log/kopia.log"
ERR="/var/log/kopia.err"
SIP="192.168.0.1"  #ip serwera docelowego
cd /var/www/virtual/xxxxxx.pl/auto
if (/usr/bin/rsync -auvz --no-owner --no-group --rsh=ssh *.pdf [EMAIL="root@xx.xx.xx.xx"]root@${SIP}[/EMAIL]:/root/pliki/pdf >$LOG 2>>$ERR )
then
# kasuje pliki tutaj...
rm *.pdf -f
fi
Adam