la copie scp contient l'erreur «cible ambiguë»

40

J'essaie de copier des fichiers d'une machine Linux (Ubuntu) sur un disque dur externe monté sur un Mac, mais j'ai reçu un message d'erreur:

scp: ambiguous target

Ce que j'ai fait, c'est que je suis sur un mac, ssh vers la machine Linux où se trouvent les fichiers. Utilisez ensuite la commande suivante:

scp fileToCopy myMacUser@myMacMachine:/Volumes/MyExternalDrive/targetDirectory

Qu'ai-je fait de mal ? Quelle est la bonne commande à utiliser dans ce cas?

bob
la source
Cela m'est arrivé quand j'avais un paramètre supplémentaire ( -t; un reste d'une sshcommande précédente ) dans la liste arg; apparemment, il n'est pas pris en charge par scpmais l'erreur que j'ai eue était ambiguous target:(
Janaka Bandara

Réponses:

62

Si vous avez un espace blanc dans un chemin, vous devez échapper les caractères en utilisant des doubles barres obliques inverses \\et en mettant le chemin entier entre guillemets:

scp myfile.txt [email protected]:"/file\\ path\\ with\\ spaces/myfile.txt"
Atnaize
la source
3
Oui c'est ça ! J'ai d'abord essayé avec double \\ mais je n'ai pas fonctionné, puis j'ai essayé d'ajouter "" autour de mon chemin avec \\. Cela fait l'affaire. Merci.
bob
1
Envelopper le chemin distant entre guillemets était la clé pour moi
sam452
2
Les guillemets simples et les barres obliques inverses simples fonctionnent tout aussi bien.
andrew lorien
1
Les barres obliques inverses triples sans guillemets fonctionnent également.
pizzapants184
2
Les guillemets doubles dans des qoutes simples sans espaces d'échappement fonctionnent également ( scp myfile.txt [email protected]:'"/file path with spaces/myfile.txt"'). En fait, vous devez échapper le nom de fichier deux fois: la première fois depuis le shell local et la deuxième fois depuis le shell distant.
mik
0

Vous devez mettre des guillemets pour que les espaces ne soient pas mal interprétés. Au lieu de faire, scp file Server:/folder\ location/vous devriez fairescp file "Server:/folder\ location/"

Dr_Hope
la source