Ao usar o SSH para conectar o rsync a um servidor remoto, como você evita espaços e outras coisas no caminho remoto? Uma barra invertida simples escapa do espaço para o prompt do bash local, mas na máquina remota o espaço é lido como uma interrupção no caminho, marcando assim o final desse caminho.
Então, quando eu faço o rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
que acontece, o servidor remoto está lendo isso como justo /path/to/dest/some/
e uma vez que não consegue encontrar esse destino remotamente, porque o destino real é "alguns dir" em vez de apenas "alguns".
Se eu tentar o mesmo comando e escapar da barra invertida e do espaço para passar pelo prompt do bash local e manter a barra invertida do servidor remoto (três barras invertidas no total :) /path/to/dest/some\\\ dir/
, ela enviará a barra invertida para o servidor remoto, mas o servidor remoto depois interpreta o caminho como /path/to/dest/some\/
ao invés de /path/to/dest/some\ dir/
ainda remover o espaço e os caracteres após ele.
Se eu tentar quebrar o caminho com aspas, ele se comportará da mesma maneira, cortando efetivamente o caminho no espaço. Por isso, também funciona apenas para passar pelo prompt do bash local.
Inicialmente, eu estava usando um caminho que continha um segmento "-" (espaço-hífen-espaço) e o servidor remoto estava retornando um erro rsync: on remote machine: -: unknown option
que foi o que deu início a todo esse esforço de escape de espaço.
Então, o que devo fazer para que isso funcione corretamente com o servidor remoto, sem precisar remover os espaços ou outros caracteres incorretos, como hífens, do caminho remoto?
-s
problema é resolvido sem a necessidade de aplicar escape duplo manualmente.