構成ファイルに次の設定があります:(/ 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
私は何が間違っているのですか?
考えられる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
rsnapshot構成ファイルはタブ区切りです。 backup_scrip、sshコマンド、およびバックアップストレージの間にtabs
が含まれていることを確認してください。それでも問題が解決しない場合は、rsnapshot configtest
を実行して問題を特定してみてください。
回答が更新されました
バックアップ行を次の形式に変換する方が便利です。
backup_script /dir/yourscript.sh backupdirectory/
中央のセクションをシェルスクリプトに配置し、実行可能にしてテストします。これに加えて、ssh [email protected]
は、パスワードなしで非対話的にリモートホストに接続する必要があります。
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/
問題はsshと関係があります。 sshのmanページから
sshは、リモートコマンドの終了ステータスで終了します。エラーが発生した場合は255で終了します。
Ssh -v [vv]を使用して、sshから詳細な出力を取得し、それが何を言っているかを確認する必要があります。
リモートホストでキー認証を設定しましたか、それともsshコマンドはパスワードをインタラクティブに入力することを期待していますか?
パスワードなしの認証を設定していない場合、sshコマンドは認証に失敗するため、エラーが返されます(255がエラーのデフォルトの戻り値のようです)。
スクリプト「パス」に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/