2015-04-09 9 views
20

Ich habe ein Problem, wenn Sie scp unter Linux verwenden, es sagt "keine normale Datei". Ich schaute auf andere Fragen/Antworten darüber, aber ich kann nicht herausfinden, was los ist ... schrieb ich:scp gibt "keine normale Datei"

scp [email protected]:/home/pictures/file.fits . 

file.fits von [email protected], /home/pictures in das aktuelle Verzeichnis zu kopieren. Ich habe auch versucht, ohne /home/ zu verwenden, aber es hat auch nicht funktioniert ...

Verstehen Sie, was los ist?

+2

Versuchen: 'scp aa @ aa: ~/Bilder/file.fits .' – ryekayo

+1

vielleicht die Pfad ist falsch und sollte Ihren Linux-Benutzernamen enthalten./home//Bilder vielleicht? – Zoltan

+0

Tilda wird in diesem Fall dein bester Freund sein :). Erweitern Sie in diesem Fall nicht Ihren Verzeichnispfad. Und jetzt, wo ich darüber nachdenke, wird dein Befehl sowieso nicht funktionieren. Wenn du das ganze Verzeichnis hinzufügen würdest, würde es ungefähr so ​​aussehen: 'scp aa @ aa: /home/aa/pictures/file.fits. ' – ryekayo

Antwort

48

ich das gerade getestet und mindestens 3 Situationen, in denen scp gefunden not a regular file zurück:

  1. Datei ist eigentlich ein Verzeichnis
  2. Datei ein Named Pipe ist (auch bekannt als FIFO)
  3. Datei ist ein Gerätedatei

Fall # 1 scheint am wahrscheinlichsten. Wenn Sie eine komplette Verzeichnisstruktur mit scp übertragen möchten, verwenden Sie die Option -r, um eine rekursive Kopie anzugeben.

+11

Es tritt auch auf, wenn Sie noch nicht wach sind und Ihre Quelle und das Ziel invertiert sind und Sie versuchen, eine nicht existierende Datei von Ihrem Ziel zu Ihrer Quelle zu kopieren ... – BenAlabaster

+0

Dies bedeutet das Lesen von stdin und das Schreiben von stdout wie in 'sftp -b <(echo get file/dev/fd/1)' – ceving

+0

Ich bin mit dem Problem auch mit Symlinks konfrontiert. – codewandler

15

"/home/pictures/file.fits" muss ein tatsächliches Dateisystemobjekt auf dem Remote-Server benennen. Wenn nicht, hätte scp eine andere Fehlermeldung gegeben.

Ich sehe, dass FITS ist an image format. Ich nehme an, "/home/pictures/file.fits" ist der Name eines Verzeichnisses auf dem Remote-Server, das FITS-Dateien oder ähnliches enthält.

Um ein Verzeichnis mit scp zu kopieren, haben Sie die „-r“ Flagge liefern:

scp -r [email protected]:/home/pictures/file.fits . 
+1

Das hat mir wirklich geholfen 'Um ein Verzeichnis mit scp zu kopieren, müssen Sie das" -r "Flag angeben. – wruckie

4

Eine Möglichkeit, dieser Fehler auftreten kann, ist, wenn Sie ein Leerzeichen vor dem ersten Pfad wie unten haben:

scp [email protected]: /path/to/file /path/to/new/file       ^

zu beheben, um, nehmen Sie nur den Raum aus:

scp [email protected]:/path/to/file /path/to/new/file 
0

Es funktioniert nicht, weil Sie den genauen Namen der kopierten Datei benötigen; So diesen Befehl wie folgt verwenden:

scp [email protected]:/home/pictures/file.fits ./file.fits 

Sie Ihre Datei wie folgt benennen können:

scp [email protected]:/home/pictures/file.fits ./newNameFile.fits 
+0

Das ist falsch, das Ziel kann ein Ordner sein. – Tim