パスにスペースが含まれていない限り、SSHでRSYNCを正常に実行できます。
パスにスペースが含まれている場合、機能しません。スラッシュ、引用符、二重引用符を試しました。
スラッシュを使用すると、出力に成功と表示されますが、転送されたファイルは表示されません。
rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/
一重引用符または二重引用符を使用すると、パスワードを入力した後、許可が拒否されることがわかります
rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'
私に何ができる?
ありがとうございました。
サンプルコードとリファレンスを使用してrzrの答えを拡張し、-s
フラグを追加してパスを引用するだけで、リモートパスのスペースをエスケープする心配はありません。
rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'
参照用に、OPで指定されたオプション:
必要な追加パラメーター:
ローカルシェルとリモートシェルの両方でスペースをエスケープする必要があります。これを試して:
rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'
ソース、ローカルシェルの/path with spaces/
は、単一引用符で囲むことによってのみエスケープできます。つまり、'/path with spaces/'
です。
一方、宛先の場合、ローカルシェルは単一引用符を使用してエスケープされ、スペースはスペースの前にエスケープ文字(\
)を使用してリモートシェルでエスケープされます。
rsyncオプション–protect-args(-s)を見てください。余分なスラッシュは不要です