2015-04-09 19 views
20

Mam problem z używaniem scp w systemie Linux, mówi "nie jest to zwykły plik". Patrzyłem na inne pytania/odpowiedzi na temat, ale nie mogę dowiedzieć się, co się stało ... pisałem:scp "nie jest zwykłym plikiem"

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

skopiować file.fits z [email protected], /home/pictures do bieżącego katalogu. Próbowałem też bez użycia /home/, ale to nie działało ani ...

Czy rozumiesz, co jest nie tak?

+2

Spróbuj: 'scp aa @ aa: ~/Zdjęcia/file.fits .' – ryekayo

+1

być może ścieżka jest błędna i powinna zawierać twoją nazwę użytkownika Linux./home//zdjęcia może? – Zoltan

+0

Tilda będzie twoim najlepszym przyjacielem w tym przypadku :). W tym przypadku nie należy rozszerzać ścieżki do katalogu. A teraz, kiedy o tym myślę, twoje polecenie i tak nie zadziała. Gdyby dodać cały katalog, wyglądałoby to tak: 'scp aa @ aa: /home/aa/pictures/file.fits. ' – ryekayo

Odpowiedz

48

Właśnie przetestowane i stwierdzono co najmniej 3 sytuacje, w których SCP powróci not a regular file:

  1. Plik jest w rzeczywistości katalogu
  2. plik jest nazwany potok (aka FIFO)
  3. plik jest plik urządzenia

Przypadek # 1 wydaje się najbardziej prawdopodobny. Jeśli chcesz przenieść całą strukturę katalogów za pomocą scp, użyj opcji -r, aby wskazać kopię rekurencyjną.

+11

Występuje również, jeśli nie jesteś jeszcze obudzony, a twoje źródło i miejsce docelowe jest odwrócone i próbujesz skopiować nieistniejący plik z miejsca docelowego do źródła ... – BenAlabaster

+0

Oznacza to czytanie stdin i pisanie stdout, jak w 'sftp -b <(echo get file/dev/fd/1)' – ceving

+0

Mam do czynienia z problemem z dowiązaniami symbolicznymi. – codewandler

15

"/home/pictures/file.fits" musi wskazywać rzeczywisty obiekt systemu plików na zdalnym serwerze. Jeśli nie, scp dałby inny komunikat o błędzie.

Widzę, że FITS to an image format. Przypuszczam, że "/home/pictures/file.fits" to nazwa katalogu na zdalnym serwerze, zawierającego pliki FITS lub coś w tym stylu.

Aby skopiować katalog z scp, trzeba dostarczyć „-r” flag

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

To naprawdę mi pomogło: "Aby skopiować katalog z SCP, musisz podać flagę" -r "" – wruckie

4

Jednym ze sposobów może wystąpić ten błąd jest, jeśli mają miejsce przed pierwszym ścieżki jak poniżej:

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

Aby naprawić, wystarczy skorzystać z miejsca na zewnątrz:

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

To nie działa, ponieważ potrzebna jest dokładna nazwa kopiowanego pliku; więc użyć tego polecenia takiego:

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

Można zmienić nazwę pliku też tak:

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

To jest nieprawidłowe, miejscem docelowym może być folder. – Tim

Powiązane problemy