2015-04-09 13 views
20

Ho un problema quando uso scp su Linux, dice "non è un file normale". Ho guardato in altri domande/risposte su questo, ma non riesco a capire cosa c'è che non va ... ho scritto:scp fornisce "non un file normale"

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

per copiare file.fits da [email protected], /home/pictures nella directory corrente. Ho anche provato senza usare /home/, ma non ha funzionato neanche ...

Capisci cosa c'è che non va?

+2

Prova: 'SCP aa @ aa: ~/Immagini/file.fits .' – ryekayo

+1

forse il il percorso è sbagliato e dovrebbe contenere il nome utente di Linux./home//foto forse? – Zoltan

+0

Tilda sarà il tuo migliore amico in questo caso :). Non estendere il percorso della directory in questo caso. E ora che ci sto pensando, il tuo comando non funzionerà comunque. Se si dovesse aggiungere l'intera directory, sarebbe simile a: 'scp aa @ aa: /home/aa/pictures/file.fits .' – ryekayo

risposta

48

Ho appena provato questo e ha trovato almeno 3 situazioni in cui SCP tornerà not a regular file:

  1. file è una directory
  2. File è una named pipe (aka FIFO)
  3. file è un file di dispositivo

Il caso n. 1 sembra molto probabile. Se intendevi trasferire un'intera struttura di directory con scp usa l'opzione -r per indicare la copia ricorsiva.

+11

Si verifica anche se non sei ancora sveglio e hai la tua sorgente e destinazione invertita e stai cercando di copiare un file inesistente dalla tua destinazione alla tua fonte ... – BenAlabaster

+0

Ciò implica leggere lo stdin e scrivere stdout come in 'sftp -b <(echo get file/dev/fd/1)' – ceving

+0

Anche io sto affrontando il problema con i collegamenti simbolici. – codewandler

15

"/home/pictures/file.fits" deve denominare un oggetto file system sul server remoto. Se così non fosse, scp avrebbe dato un messaggio di errore diverso.

Vedo che FITS è an image format. Suppongo che "/home/pictures/file.fits" sia il nome di una directory sul server remoto, contenente i file FITS o qualcosa del genere.

Per copiare una directory con scp, è necessario fornire il flag "r":

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

Questo mi ha davvero aiutato 'Per copiare una directory con scp, devi fornire il flag" -r " – wruckie

4

Un modo questo errore può verificarsi è se si dispone di uno spazio prima del primo percorso come di seguito:

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

Per risolvere, basta prendere lo spazio fuori:

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

Non funziona perché è necessario il nome preciso del file copiato; Così utilizzare questo comando in questo modo:

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

È possibile rinominare il file anche in questo modo:

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

Questo non è corretto, la destinazione può essere una cartella. – Tim