リモートSSH接続でrsyncを使用する場合のリモートパス内のスペースのエスケープ
SSHを使用してrsyncをリモートサーバーに接続する場合、リモートパスのスペースなどをどのようにエスケープしますか?単純なバックスラッシュは、ローカルのbashプロンプトのスペースをエスケープしますが、リモートマシンでは、スペースはパスの区切りとして読み取られるため、そのパスの終わりを示します。 つまり、実際に宛先が「一部」ではなく「一部のディレクトリ」であるため、rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/リモートサーバーが/path/to/dest/some/その宛先をリモートで読み取っているので、宛先をリモートで見つけることができません。 同じコマンドを試してバックスラッシュとスペースをエスケープしてローカルのbashプロンプトを通過し、リモートサーバーのバックスラッシュを維持すると(合計3つのバックスラッシュ:)/path/to/dest/some\\\ dir/、実際にリモートサーバーにバックスラッシュが送信されますが、リモートサーバー次に、パスとその後のスペースと文字を削除するの/path/to/dest/some\/ではなく、パスを解釈します/path/to/dest/some\ dir/。 パスを引用符でラップしようとすると、パスはほぼ同じように動作し、パスをスペースで効果的に切り離します。したがって、ローカルのbashプロンプトを通過するためにのみ機能します。 最初は "-"(スペース-ハイフン-スペース)セグメントが含まれるパスを使用していましたが、リモートサーバーがエラーrsync: on remote machine: -: unknown optionを返していましたが、そもそもこのスペースをエスケープする作業全体が開始されました。 では、リモートパスからスペースやハイフンなどの誤った文字を削除せずに、これをリモートサーバーで正しく機能させるにはどうすればよいですか。