Fehler beim Verwenden von SCP: "Keine reguläre Datei"

73

Ich habe eine Weile gesucht und kann die Definition einer regulären Datei nicht finden. Mein Weg ist permanent (ich beginne bei /) und ich verbinde mich mit

scp root@IP: /path/to/picture.jpg

Ergibt eine Abfrage nach einem Passwort und dann ...

scp: .: not a regular file
JeffM
quelle

Antworten:

59

Eine reguläre Datei ist eine Datei, die kein Verzeichnis oder exotischere Arten von „speziellen“ Dateien wie Named Pipes, Geräten, Sockets, Türen usw. ist. Symbolische Verknüpfungen sind ebenfalls keine regulären Dateien, verhalten sich jedoch wie ihr Ziel, wenn sie vorhanden sind Eine Anwendung greift auf den Inhalt der Datei zu.

Sie haben root@IP:als Quelle der Kopie und /path/to/picture.jpgals Ziel übergeben. Die Quelle ist das Ausgangsverzeichnis des Benutzers rootauf dem Computer IP. Dies ist nützlich als Ziel, aber nicht als Quelle. Was Sie eingegeben haben, ist erforderlich, um ein Verzeichnis in eine Datei zu kopieren. scpEin Verzeichnis kann nur kopiert werden, wenn Sie nach einer rekursiven Kopie mit der -rOption gefragt werden (und es wird abgelehnt, eine vorhandene Datei mit einem Verzeichnis zu -rüberschreiben, wenn die Quelle eine reguläre Datei ist, wird jedoch eine reguläre Datei stillschweigend überschrieben).

Wenn /path/to/picture.jpges sich um den Pfad auf dem Remotecomputer der zu kopierenden Datei handelt, müssen Sie den Dateinamen an die Hostspezifikation halten. Es ist der Doppelpunkt :, der den Hostnamen vom Remote-Pfad trennt. Sie müssen auch ein Ziel angeben.

scp root@IP:/path/to/picture.jpg /some/destination

Wenn Sie die lokale Datei /path/to/picture.jpgauf den Remote-Host kopieren möchten , müssen Sie die Argumente austauschen. Unix-Kopierbefehle setzen die Quelle (n) an die erste Stelle und das Ziel an die letzte Stelle.

scp /path/to/picture.jpg root@IP:

Wenn Sie die entfernte Datei /path/to/picture.jpglokal an denselben Speicherort kopieren möchten , müssen Sie den Pfad wiederholen. Sie können dafür sorgen, dass Ihre Shell die Arbeit des Wiederholens für Sie erledigt (weniger Tippen, weniger Lesbarkeit).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
Gilles
quelle
2
Stellen Sie sicher, dass zwischen Hostname und Datei keine Leerzeichen stehen
chris
Ich fühle mich so unglaublich albern, nachdem ich das gelesen habe. Zielort! Duh!
Chaim Eliyah
112

Wenn Sie ein Verzeichnis kopieren, sollten Sie die folgende -rOption verwenden:

scp -r root@IP:/path/to/file /path/to/filedestination
user48435
quelle
1
Obwohl die akzeptierte Antwort die eigentliche Frage technisch beantwortet, ist diese Antwort höchstwahrscheinlich das, wonach Personen suchen, die auf diese Seite kommen.
Cgnorthcutt
4

Syntaxproblem - Entfernen Sie den Leerraum zwischen

root @ IP:

und

/Pfad

Lauerer
quelle
Aber dann hast du kein Ziel scpmehr.
Bernhard
Jep. Ich drückte die Eingabetaste zu schnell und es fehlt der Repräsentant, um es zu beheben. überrascht kann ich hier sogar kommentieren. Prost.
Lurker
2
Ich denke, Sie können Ihre eigenen Beiträge immer kommentieren, und ich dachte, Sie könnten sie auch immer bearbeiten?
Bernhard,
Ich glaube nicht, dass dies zu diesem Fehler führen kannnot a regular file
HISI
@hisi -rals scp-Argument verwenden.
Ankur Loriya
2

scp root@IP:/path/to/file /path/to/filedestination

Der obige Befehl kopiert eine Datei vom Remote-Server auf Ihren Computer. Wenn Sie nur tippen scp root@IP:, wird versucht, das Home-Verzeichnis von root (scp users home .) zu kopieren .

Sie müssen also den genauen Pfad zur Datei angeben

Manula Waidyanatha
quelle
Das hat funktioniert. Vielen Dank, Mann. Mach weiter!
JeffM
2

Diese Fehlermeldung wird angezeigt, weil Sie versuchen, einen Ordner und keine Datei zu kopieren. Daher sollten Sie Ihre Dateien mithilfe der -rOption rekursiv kopieren

Verwenden Sie den folgenden Befehl, wenn Sie Dateien vom Remote-Computer auf den lokalen Computer kopieren

scp -r root@RemoteIP:/path/to/file /path/to/filedestination

ODER

Beim Kopieren von Dateien vom lokalen Computer auf den Remotecomputer

scp -r /path/to/file root@RemoteIP:/path/to/filedestination
Yogesh Darji
quelle
0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Dies wird funktionieren (zumindest auf meinem Mac)

user253616
quelle