D
Deleted member 15017
Guest
Witam wszystkich Forumowiczów.
Od dłuższego czasu walczę ze skryptem tworzącym kopie zapasowe. Skrypt w pierwszym kroku ciągnie dane ze zdalnej lokalizacji za pomocą rsync przez ssh i tworzy kopię lustrzaną na NAS a potem kopię przyrostową za pomocą rdiff-backup tego co zostało zrsyncowane. Zdalny host to win xp na którym działa serwer ssh na który loguje się kluczem. Wszystko działa tak jak zaplanowałem (poza detekcją zdalnego hosta dlatego jest odkomentowane ale z tego mogę zrezygnować) ale tylko przy wywołaniu skryptu ręcznie czy to przez użytkownika yy czy admina - nie ma problemu z ssh. Zależy mi na uruchamianiu skryptu cronem a tu występuje problem. Sam skrypt jest uruchamiany ale wykonuje się tylko rsync. Polecenie rdiff-backup nie jest wykonywane. Skrypt wykonywany ręcznie czy przez admina czy usera działa. Z crona nie chce. Zauważyłem, że cron nie chciał uruchomić skryptu jeśli wskazałem użytkownika yy który jako jedyny może się połączyć przez ssh ze zdalnym hostem, dlatego wpis w cron nie ma zdefiniowanego użytkownika, a admin korzysta z klucza użytkownika yy.
Model TS-212p, Firmwere 4.3.3.0238, Optware 0.99.163
A to sam skrypt:
Najdziwniejsze jest to, że skrypt z palca działa, a z crona tylko w części polecenie rync działa, rdiff-backup nie, nie tworzy się kopia przyrostowa, nie pojawiają się żadne kopie przyrostowe po sprawdzeniu rdiff-backup -l. Będę wdzięczny za wszelkie sugestie. Co jest źle?
Od dłuższego czasu walczę ze skryptem tworzącym kopie zapasowe. Skrypt w pierwszym kroku ciągnie dane ze zdalnej lokalizacji za pomocą rsync przez ssh i tworzy kopię lustrzaną na NAS a potem kopię przyrostową za pomocą rdiff-backup tego co zostało zrsyncowane. Zdalny host to win xp na którym działa serwer ssh na który loguje się kluczem. Wszystko działa tak jak zaplanowałem (poza detekcją zdalnego hosta dlatego jest odkomentowane ale z tego mogę zrezygnować) ale tylko przy wywołaniu skryptu ręcznie czy to przez użytkownika yy czy admina - nie ma problemu z ssh. Zależy mi na uruchamianiu skryptu cronem a tu występuje problem. Sam skrypt jest uruchamiany ale wykonuje się tylko rsync. Polecenie rdiff-backup nie jest wykonywane. Skrypt wykonywany ręcznie czy przez admina czy usera działa. Z crona nie chce. Zauważyłem, że cron nie chciał uruchomić skryptu jeśli wskazałem użytkownika yy który jako jedyny może się połączyć przez ssh ze zdalnym hostem, dlatego wpis w cron nie ma zdefiniowanego użytkownika, a admin korzysta z klucza użytkownika yy.
Model TS-212p, Firmwere 4.3.3.0238, Optware 0.99.163
A to sam skrypt:
Kod:
#!/bin/bash -xv
RHOST="xx.xx.xx.xx"
OPTIONS="-azrv --verbose --stats --progress --exclude 'Pobrane' --delete"
CEL="/share/HDB_DATA/homes/yy/.archiwum"
DATE=`date +'%Y.%m.%d.%H:%M'`
#sprawdzanie dostępnosci RHOST
PING="/bin/ping"
#$PING -c 3 -t 300 $RHOST >/dev/null 2>&1
#R1=$1
#if [ $R1 -eq1 ];
#then
#echo "HOST nie jest dostepny przerywam wykonywanie kopi" > /$CEL/ERROR_$DATE.log
#exit 0
#else
#echo "OST jest dostepny robie kopie"
#fi
# prosty mechanizm lock'a by uniemożliwić wielokrotne uruchomienie
# skryptu, np. w sytuacji gdy nie zdąży wykonać się pełny backup
if [ -f "/share/HDB_DATA/homes/yy/server_sync" -o -f "/share/HDB_DATA/homes/yy/server_sync_block" ]; then
echo "Another sync is still running!"
exit 1
fi
touch /share/HDB_DATA/homes/yy/server_sync
#kopia lustrzna zasobow
#SB4
rsync $OPTIONS -e "ssh -p 1234 -l user -i /share/HDB_DATA/homes/admin/.ssh/id_rsa" $RHOST:/cygdrive/f/SB4 \
$CEL/current --log-file=/$CEL/1.log
#dane
rsync $OPTIONS --exclude 'Pobrane' --exclude 'Pobieranie' -e "ssh -p 1234 -l user -i /share/HDB_DATA/homes/admin/.ssh/id_rsa" $RHOST:/cygdrive/f/dane \
$CEL/current --log-file=/$CEL/2.log
# sprawdzenie czy synchronizacja się udała
# jeśli się nie udała to możemy chcieć skasować niedokończony
# jeśli się nie udała to możemy chcieć skasować niedokończony
# backup by kolejny nie musiał być "prawie pełnym"
# plik /tmp/server_sync_block trzeba skasować ręcznie
if [ $? -ne 0 -a $? -ne 24 ]; then
echo "Something was wrong becase rsync return $?"
touch /share/HDB_DATA/homes/yy/server_sync_block
exit 2
fi
#utworzenie kopii przyrostowej
rdiff-backup -v5 --preserve-numerical-ids --print-statistics /share/HDB_DATA/homes/yy/.archiwum/current /share/HDB_DATA/homes/yy/.archiwum/rdiff_backup
cat /$CEL/1.log /$CEL/2.log /$CEL/rdiff_backup/rdiff-backup-data/backup.log > /$CEL/log.log
mv /$CEL/log.log /$CEL/$DATE.log
rm -f $CEL/?.log
rm /$CEL/rdiff_backup/rdiff-backup-data/backup.log
# zwalnianie lock'a
rm -f /share/HDB_DATA/homes/yy/server_sync
Najdziwniejsze jest to, że skrypt z palca działa, a z crona tylko w części polecenie rync działa, rdiff-backup nie, nie tworzy się kopia przyrostowa, nie pojawiają się żadne kopie przyrostowe po sprawdzeniu rdiff-backup -l. Będę wdzięczny za wszelkie sugestie. Co jest źle?