scp copy hat fehler "mehrdeutiges ziel"

40

Ich versuche, Dateien von einem Linux-Computer (Ubuntu) auf eine externe Festplatte zu kopieren, die auf einem Mac installiert ist, erhalte jedoch eine Fehlermeldung:

scp: ambiguous target

Was ich getan habe ist, ich bin auf einem Mac, ssh auf dem Linux-Rechner, auf dem sich die Dateien befinden. Dann benutze den folgenden Befehl:

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

Was habe ich falsch gemacht ? Was ist der gute Befehl, um in diesem Fall zu verwenden?

Bob
quelle
Ist mir passiert, als ich einen zusätzlichen Parameter ( -teinen Rest eines vorherigen sshBefehls) in der Argumentliste hatte; anscheinend wird es nicht von unterstützt, scpaber der Fehler, den ich bekam, war ambiguous target:(
Janaka Bandara

Antworten:

61

Wenn ein Pfad Leerzeichen enthält, müssen Sie die Zeichen durch doppelte umgekehrte Schrägstriche \\und Anführungszeichen umschließen:

scp myfile.txt [email protected]:"/file\\ path\\ with\\ spaces/myfile.txt"
Atnaize
quelle
3
ja das ist es ! Ich habe es zuerst mit double \\ versucht, aber es hat nicht funktioniert. Dann habe ich versucht, "" mit \\ um meinen Pfad herum einzufügen. Das macht den Job. Vielen Dank.
Bob
1
Das Einschließen des Remote-Pfads in Anführungszeichen war für mich der Schlüssel
sam452
2
Einfache Anführungszeichen und einfache Backslashes funktionieren genauso gut.
Andrew Lorien
1
Triple Backslashes ohne Anführungszeichen funktionieren auch.
Pizzapants184
2
Auch doppelte Anführungszeichen in einfachen Qoutes ohne Leerzeichen funktionieren ( scp myfile.txt [email protected]:'"/file path with spaces/myfile.txt"'). Tatsächlich müssen Sie den Dateinamen zweimal maskieren: beim ersten Mal in der lokalen Shell und beim zweiten Mal in der entfernten Shell.
mik
0

Sie müssen Anführungszeichen setzen, damit Leerzeichen nicht falsch interpretiert werden. Anstatt es zu tun scp file Server:/folder\ location/, solltest du es tunscp file "Server:/folder\ location/"

Dr_Hope
quelle