web-dev-qa-db-ja.com

rsync / ssh / rsnapshotバックアップ-リモートスクリプト実行

構成ファイルに次の設定があります:(/ etc/rsnapshot.conf)

スクリプト/ツール: http://www.rsnapshot.org/

backup_script   ssh     [email protected] "sh /home/user/backup_mysql.sh"     ./mysql

この例は次のことを示しています。

backup_script  ssh [email protected] "mysqldump -A > /var/db/dump/mysql.sql"    unused2

私が得るエラー:

ERROR: backup_script /usr/bin/ssh returned 255  

私は何が間違っているのですか?

6
Tiffany Walker

考えられる1つの方法は、ssh [email protected] "sh /home/user/backup_mysql.sh"をスクリプト(do_ssh.sh、here)に変換し、そのスクリプトを呼び出すことです。

何かのようなもの、

backup_script /path/to/do_ssh.sh ./mysql

また、コマンド全体を引用符で囲むことをお勧めします。

backup_script "ssh [email protected]" sh /home/user/backup_mysql.sh "" ./mysql

1
Nehal Dattani

rsnapshot構成ファイルはタブ区切りです。 backup_scrip、sshコマンド、およびバックアップストレージの間にtabsが含まれていることを確認してください。それでも問題が解決しない場合は、rsnapshot configtestを実行して問題を特定してみてください。

回答が更新されました

バックアップ行を次の形式に変換する方が便利です。

 backup_script    /dir/yourscript.sh    backupdirectory/

中央のセクションをシェルスクリプトに配置し、実行可能にしてテストします。これに加えて、ssh [email protected]は、パスワードなしで非対話的にリモートホストに接続する必要があります。

3
Daniel t.

rsnapshot.confの例では、実際にはbackup_execではなくbackup_scriptを使用しています。ただし、backup_scriptを使用して、sshで任意のコマンドを実行し、一時ディレクトリで生成されたファイルを同期することができます。使用するコマンドはすべて、絶対パスで参照する必要があります。これは、私のmysqlデータベースの1つで機能しました。

backup_script [tab] /usr/bin/ssh [email protected] "/usr/bin/mysqldump --single-transaction -u username dbname" > dbname.sql [tab] example.com/mysql/

2
mrtumnus

問題はsshと関係があります。 sshのmanページから

sshは、リモートコマンドの終了ステータスで終了します。エラーが発生した場合は255で終了します。

Ssh -v [vv]を使用して、sshから詳細な出力を取得し、それが何を言っているかを確認する必要があります。

1
user9517

リモートホストでキー認証を設定しましたか、それともsshコマンドはパスワードをインタラクティブに入力することを期待していますか?

パスワードなしの認証を設定していない場合、sshコマンドは認証に失敗するため、エラーが返されます(255がエラーのデフォルトの戻り値のようです)。

0
JKim

スクリプト「パス」にwere n'tタブがあることを確認することで、同様の問題が解決されました。

の代わりに

backup_script [tab] /bin/ssh [tab] [email protected] [tab] "/usr/bin/mysqldump -uroot --all-databases > ./mysqldump.sql" [tab] ./mysql/

試してみてください

backup_script [tab] /bin/ssh [email protected] "/usr/bin/mysqldump -uroot --all-databases > ./mysqldump.sql" [tab] ./mysql/
0