Problem beim sicheren Kopieren (scp) von Dateinamen mit Leerzeichen


9

Ich versuche, Dateien mit Secure Copy (SCP) zu kopieren. Ich versuche, den folgenden Befehl auszuführen, erhalte jedoch eine Fehlermeldung aufgrund des Leerzeichens im absoluten Pfad des Speicherorts des Verzeichnisses.

scp -r -P 8484 root@172.31.72.103:/media/New Volume/lj /home/pratheep

Ich erhalte die folgende Fehlermeldung:

scp: /media/New: No such file or directory  
scp: Volume/lj: No such file or directory

Ich habe versucht, mit dem gleichen Befehl einen zusätzlichen Schrägstrich wie zu setzen

scp -r -P 8484 root@172.31.72.103:/media/New\ Volume/lj /home/pratheep

aber ich bekomme immer noch den gleichen Fehler.

Kann mir jemand sagen, wie ich das korrigieren soll?

Antworten:


18

Sie sollten Ihren Dateinamen zweimal angeben, einen für die lokale Shell und einen für die Remote-Shell. Im einfachsten Fall können Sie einen der folgenden Schritte ausführen

scp -r -P 8484 root@172.31.72.103:"'/media/New Volume/lj'" /home/pratheep
scp -r -P 8484 root@172.31.72.103:'"/media/New Volume/lj"' /home/pratheep

oder mithilfe der Tab-Vervollständigung

scp -r -P 8484 root@172.31.72.103:/media/New\\\ Volume/lj /home/pratheep

3
Es ist hilfreich zu beachten , dass scpVerwendungen sshals Transport , das erklärt , warum es zwei Durchgänge von Shell Interpretation Geschehen ist.
Msw

1

scpund rsyncübergeben Sie entfernte Dateinamen an die entfernte Shell. Auf diese Weise können Sie Muster wie in übergeben

scp remotehost:'*.txt' .

Dies hat jedoch die schlimme Konsequenz, dass Sie zusätzliche Anführungszeichen benötigen, wenn Sie einen Remote-Dateinamen angeben.

Sie können die -sOption übergeben, rsyncum die Dateinamen vor der Erweiterung durch die Remote-Shell zu schützen. Dadurch wird jedoch die integrierte Platzhaltererweiterung von rsync aktiviert, sodass Sie immer noch ein Zitat erstellen müssen \[?*.

Eine Problemumgehung besteht darin, ein Archiv zu übertragen:

ssh -P 8484 root@172.31.72.103 'cd "/media/New Volume" && tar cf - lj' |
tar xf - -C /home/pratheep

Eine andere Methode besteht darin, das Remote-Dateisystem bereitzustellen und dann mit normalen Tools die Kopie durchzuführen.

mkdir mnt
sshfs -p 8484 root@172.31.72.103:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.