PIB - 20200915: rsync - ssh で空白を含むファイル名

状況

rsync で ssh でリモートにファイルを転送する際
target="foo bar"
rsync "$target" $REMOTE:"$target"
のようにすると "foo bar" が $REMOTE の "foo" にコピーされてしまう。

解法

rsync ssh filename space」でググったら以下のページを見つけた。
リモートに送るパスにダブルクォーテーションを含めておくと良いらしい。
例えば、以下のような感じ。
rsync "$target" $REMOTE:\""$target"\"
環境依存(Mac だと駄目)って話もあるようなのだが -s, --protect-args オプションを付けるって手もあるらしい。
rsync -s "$target" $REMOTE:"$target"
少なくとも Linux 同士なら問題なさそうだった。

関連