Quando si utilizza SSH per connettere rsync a un server remoto, come si evitano spazi e simili nel percorso remoto? Una semplice barra rovesciata fuoriesce dallo spazio per il prompt di bash locale, ma sul computer remoto lo spazio viene quindi letto come un'interruzione nel percorso, segnando così la fine di quel percorso.
Quindi quando faccio rsync -avz /path/to/source/some\ dir/ user@host.tld:/path/to/dest/some\ dir/
quello che succede è che il server remoto lo sta leggendo come giusto /path/to/dest/some/
e poiché non riesce a trovare quella destinazione da remoto, perché la destinazione effettiva è "qualche dir" piuttosto che solo "un po '".
Se provo lo stesso comando ed esco dalla barra rovesciata e dallo spazio per superare il prompt bash locale e mantenere la barra rovesciata per il server remoto (tre barre rovesciate in totale:) /path/to/dest/some\\\ dir/
, in effetti invia la barra rovesciata al server remoto, ma al server remoto quindi interpreta il percorso come /path/to/dest/some\/
piuttosto che /path/to/dest/some\ dir/
spogliare ancora lo spazio e i personaggi dopo di esso.
Se provo a racchiudere il percorso tra virgolette, si comporta praticamente allo stesso modo, tagliando efficacemente il percorso nello spazio. Quindi funziona anche solo per superare il prompt bash locale.
Inizialmente stavo usando un percorso che conteneva un segmento "-" (spazio-trattino-spazio), e il server remoto stava restituendo un errore rsync: on remote machine: -: unknown option
che è ciò che ha dato il via a tutto questo sforzo di fuga dallo spazio.
Quindi cosa devo fare per farlo funzionare correttamente con il server remoto, senza dover rimuovere gli spazi o altri caratteri errati come trattini dal percorso remoto?
-s
indirizzi il problema senza la necessità di applicare doppio fuga manualmente.