Errore durante l'utilizzo di SCP: "non un file normale"


73

Sto cercando da un po 'e non riesco a trovare la definizione di un file normale. Il mio percorso è permanente (inizio da /) e mi sto collegando

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

Risultati in una richiesta di password e quindi ...

scp: .: not a regular file

Risposte:


59

Un file normale è un file che non è una directory o tipi più esotici di file "speciali" come named pipe, dispositivi, socket, porte, ecc. I collegamenti simbolici non sono neanche file regolari, ma si comportano come il loro obiettivo quando un'applicazione sta accedendo al contenuto del file.

Hai passato root@IP:come origine della copia e /path/to/picture.jpgcome destinazione. La fonte è la home directory dell'utente rootsulla macchina IP. Questo è utile come destinazione, ma non come fonte. Cosa hai digitato richiesto per copiare una directory in un file; scpnon è possibile copiare una directory a meno che non si richieda una copia ricorsiva con l' -ropzione (e si rifiuterebbe di sovrascrivere un file esistente con una directory anche con -r, ma sovrascriverebbe silenziosamente un file normale se l'origine fosse un file normale).

Se /path/to/picture.jpgè il percorso sul computer remoto del file che si desidera copiare, è necessario applicare il nome del file alla specifica dell'host. Sono i due punti :che separano il nome host dal percorso remoto. Dovrai anche specificare una destinazione.

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

Se si desidera copiare il file locale /path/to/picture.jpgsull'host remoto, è necessario scambiare gli argomenti. I comandi di copia Unix mettono per primi i sorgenti e l'ultima destinazione.

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

Se si desidera copiare il file remoto /path/to/picture.jpgnella stessa posizione localmente, è necessario ripetere il percorso. Puoi avere la shell che fa il lavoro di ripetizione per te (meno battitura, meno leggibilità).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg

2
assicurati che non ci siano spazi tra il nome host e il file
chris,

Mi sento così incredibilmente sciocco dopo aver letto questo. cerca la destinazione! Duh!
Chaim Eliyah,

112

Quando si copia una directory, è necessario utilizzare l' -ropzione:

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

1
Sebbene la risposta accettata risponda tecnicamente alla domanda reale, questa risposta è molto probabilmente ciò che le persone che arrivano a questa pagina stanno cercando.
cgnorthcutt,

4

problema di sintassi: rimuove lo spazio bianco tra

root @ IP:

e

/sentiero


Ma allora non hai più un obiettivo scp.
Bernhard,

Sì. ho premuto invio troppo rapidamente e non ho il rappresentante per risolverlo. sorpreso di poter anche commentare qui. Saluti.
agguato il

2
Penso che puoi sempre commentare i tuoi contributi e ho pensato che potresti sempre modificarli?
Bernhard,

Non credo che possa causare questo errorenot a regular file
HISI

@hisi usa -rcome argomento scp.
Ankur Loriya,

2

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

Il comando sopra copia un file dal server remoto al tuo computer. Se digiti solo scp root@IP:, proverà a copiare la directory principale di root (home page degli utenti scp .).

Quindi è necessario fornire il percorso esatto del file


Questo ha funzionato. Grazie mille, amico. Continuate così!
JeffM,

2

Stai ricevendo quell'errore perché stai provando a copiare una cartella e non un file e quindi dovresti copiare i tuoi file in modo ricorsivo usando l' -ropzione

Utilizzare il comando seguente per copiare i file dal computer remoto al computer locale

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

O

Quando si copiano file dal computer locale al computer remoto

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

0
scp root@IP:/path/to/*.jpg  /path/to/filedestination/

Funzionerà (almeno sul mio Mac)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.