225 文字
1 分
Missing trailing-' in remote-shell command.

問題#

rsyncでバックアップを行っていて、バックアップ先のSSHポートが変更されたのでそれにあわせて対応したら以下のエラーが出た。

Missing trailing-' in remote-shell command.

バックアップの内容はシェルスクリプトで書いていて、SSHのオプションを以下のように渡していた。

Terminal window
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のポート指定のオプションを以下のように環境変数で与えるようにする。

Terminal window
export RSYNC_RSH="ssh -p3843"

その結果、バックアップスクリプトは以下のようになる。

Terminal window
export RSYNC_RSH="ssh -p3843"
RSYNC_COMMAND="nice -n 19 rsync -arRuz --delete-excluded --bwlimit=200"
$RSYNC_COMMAND <source1> <destination1>;
$RSYNC_COMMAND <source2> <destination2>;
Missing trailing-' in remote-shell command.
https://blog.teraren.com/posts/missing-trailing-in-remote-shell-command/
作者
Yuki Matsukura
公開日
2010-12-17
ライセンス
CC BY-NC-SA 4.0

コメント