問題
rsyncでバックアップを行っていて、バックアップ先のSSHポートが変更されたのでそれにあわせて対応したら以下のエラーが出た。
Missing trailing-' in remote-shell command.
バックアップの内容はシェルスクリプトで書いていて、SSHのオプションを以下のように渡していた。
OP="\"ssh -p 3843'\"' RSYNC_COMMAND="nice -n 19 rsync -arRuz -e $OP --delete-excluded --bwlimit=200"
この書き方では、RSYNC_COMMANDに代入する段階でOP変数に設定した文字が展開されてしまう。
解決方法
man rsyncに以下のような記述がある。
You can also specify any remote shell you like, either by using the -e command line option, or by setting the
RSYNC_RSH environment variable.
よって、sshのポート指定のオプションを以下のように環境変数で与えるようにする。
export RSYNC_RSH="ssh -p3843"
その結果、バックアップスクリプトは以下のようになる。
export RSYNC_RSH="ssh -p3843" RSYNC_COMMAND="nice -n 19 rsync -arRuz --delete-excluded --bwlimit=200" $RSYNC_COMMAND <source1> <destination1>; $RSYNC_COMMAND <source2> <destination2>;
Comments