Je peux réussir à RSYNC sur SSH tant que les chemins ne contiennent pas d'espaces.
Lorsque le chemin contient des espaces, cela ne fonctionne pas. J'ai essayé des barres obliques, des guillemets et des guillemets doubles.
Lorsque j'utilise des barres obliques, la sortie indique que c'est un succès, mais je ne vois aucun fichier transféré.
rsync -avz /path\ with\ spaces/ user@remotelocation:/media/another\ path\ with/spaces/
Lorsque j'utilise des guillemets simples ou doubles, cela me dit que l'autorisation est refusée après la saisie de mon mot de passe
rsync -avz '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'
Que puis-je faire?
Je vous remercie.
En développant la réponse de rzr avec un exemple de code et de références, ajoutez simplement l'indicateur -s
, citez les chemins et ne craignez pas l'échappement d'espaces dans le chemin distant:
rsync -avzs '/path with spaces/' 'user@remotelocation:/media/another path with/spaces/'
Pour référence, les options spécifiées par l'OP:
Le paramètre supplémentaire nécessaire:
Vous devez échapper à des espaces dans les shell locaux et les shell distants. Essaye ça:
rsync -avz '/path with spaces/' 'user@remotelocation:/media/another\ path\ with/spaces/'
Le code source /path with spaces/
dans le shell local peut être échappé uniquement en y mettant des guillemets simples, c.-à-d. '/path with spaces/'
.
En revanche, dans le cas de la destination, le shell local est échappé en mettant des guillemets simples et les espaces sont échappés dans le shell distant en utilisant un caractère d'échappement (\
) devant les espaces.
examinez l'option rsync –protect-args (-s), aucune autre barre oblique n'est nécessaire