Missing trailing-‘ in remote-shell command.

Linux

問題

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>;

コメント