Skrypt bash i rsync - sypie b

Potrzebujesz pomocy z C, C++, perl, python, itp.
Awatar użytkownika
BlueMan
Posty: 57
Rejestracja: 03 marca 2007, 13:32
Lokalizacja: Sosnowiec

Skrypt bash i rsync - sypie błędami

Post autor: BlueMan »

Kod: Zaznacz cały

#!/bin/bash

OPTIONS="-avz --rsh='ssh -p 666'"
SERVER="user@user.tv"
DEST="public_html/users/blueman/heros_backup"

echo "Bazy danych (source):"
rsync $OPTIONS /var/lib/mysql/ $SERVER:$DEST/mysql_source/
Ale przy wywołaniu niestety mam błąd:

Kod: Zaznacz cały

root@matrix:~# ./rsync_code
Bazy danych (source):
Missing trailing-' in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(362) [sender=3.0.3]
Co jest nie tak?

Jak dałem:

Kod: Zaznacz cały

echo "rsync $OPTIONS /var/lib/mysql/ $SERVER:$DEST/mysql_source/"
I ręcznie skopiowałem to działa bez żadnych problemów.
snah
Beginner
Posty: 103
Rejestracja: 19 lutego 2008, 09:09

Post autor: snah »

Spróbuj

Kod: Zaznacz cały

rsync $'OPTIONS' /var/lib/mysql/ $SERVER:$DEST/mysql_source/
Awatar użytkownika
BlueMan
Posty: 57
Rejestracja: 03 marca 2007, 13:32
Lokalizacja: Sosnowiec

Post autor: BlueMan »

Nie działa

Kod: Zaznacz cały

Bazy danych (source):
ssh: connect to host user.tv port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(635) [sender=3.0.3]


[ Dodano: 2008-12-07, 14:24 ]
Rozwiązaniem mojego problemu jest:

Kod: Zaznacz cały

OPTIONSE="-e ssh -p 666"
OPTIONS="-avz"

rsync "$OPTIONSE" $OPTIONS ...
snah
Beginner
Posty: 103
Rejestracja: 19 lutego 2008, 09:09

Post autor: snah »

Mnie problem zaintrygował na tyle, że wymyśliłem inne rozwiązanie:

Kod: Zaznacz cały

bash -c "rsync $OPTIONS /var/lib/mysql/ $SERVER:$DEST/mysql_source/"
Jako, że nie używam rsync, to testowałem na programie cut:

Kod: Zaznacz cały

#!/bin/bash 

OPTIONS="-d' ' -f2"
bash -c "cat $1 | cut $OPTIONS"
Ciekawy jestem, czy w Twoim przypadku też zadziała?

Odnośnie mojej pierwszej propozycji, to była bardzo głupia - zauważyłem tylko, że nie wyrzuca tego samego błędu, nie zdając sobie sprawy, że $'OPTIONS' oznacza string 'OPTIONS', a nie ma nic wspólnego ze zmienną...

EDIT: Być może trzeba będzie zmienić jeszcze jedną linię:

Kod: Zaznacz cały

OPTIONS="-avz --rsh=$'ssh -p 666'"
Awatar użytkownika
BlueMan
Posty: 57
Rejestracja: 03 marca 2007, 13:32
Lokalizacja: Sosnowiec

Post autor: BlueMan »

Tak - Twój sposób tak pośrednio działa.
rsync łączy się z serwerem, ale właściwie nic nie robi. Proces się "zawiesza"

I tej jednej linijki nie trzeba było zmieniać :D
ODPOWIEDZ