Error al usar SCP: "no es un archivo normal"

73

He estado buscando durante un tiempo y no puedo encontrar la definición de un archivo normal. Mi camino es permanente (comienzo en /) y me estoy conectando a

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

Resulta en una consulta de contraseña y luego ...

scp: .: not a regular file
JeffM
fuente

Respuestas:

59

Un archivo normal es un archivo que no es un directorio o tipos más exóticos de archivos "especiales" , como tuberías con nombre, dispositivos, enchufes, puertas, etc. Los enlaces simbólicos tampoco son archivos normales, pero se comportan como su destino cuando Una aplicación está accediendo al contenido del archivo.

Usted pasó root@IP:como origen de la copia y /path/to/picture.jpgcomo destino. La fuente es el directorio de inicio del usuario rooten la máquina IP. Esto es útil como destino, pero no como fuente. Lo que escribió requirió copiar un directorio en un archivo; scpno puede copiar un directorio a menos que solicite una copia recursiva con la -ropción (y se negaría a sobrescribir un archivo existente con un directorio incluso con -r, pero silenciosamente sobrescribiría un archivo normal si la fuente fuera un archivo normal).

Si /path/to/picture.jpges la ruta en la máquina remota del archivo que desea copiar, debe pegar el nombre del archivo a la especificación del host. Es el colon :que separa el nombre del host de la ruta remota. También deberá especificar un destino.

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

Si desea copiar el archivo local /path/to/picture.jpgen el host remoto, debe intercambiar los argumentos. Los comandos de copia de Unix ponen primero las fuentes y el destino al final.

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

Si desea copiar el archivo remoto /path/to/picture.jpgen la misma ubicación localmente, debe repetir la ruta. Puede hacer que su shell haga el trabajo de repetirlo por usted (menos tipeo, menos legibilidad).

scp root@IP:/path/to/picture.jpg /path/to/picture.jpg
scp {root@IP:,}/path/to/picture.jpg
Gilles 'SO- deja de ser malvado'
fuente
2
asegúrese de que no existan espacios entre el nombre de host y el archivo
chris
Me siento tan increíblemente tonto después de leer esto. ¡origen Destino! Duh!
Chaim Eliyah
112

Al copiar un directorio, debe usar la -ropción:

scp -r root@IP:/path/to/file /path/to/filedestination
usuario48435
fuente
1
Aunque la respuesta aceptada técnicamente responde a la pregunta real, esta respuesta es muy probablemente lo que buscan las personas que vienen a esta página.
cgnorthcutt
4

problema de sintaxis: elimine el espacio en blanco entre

root @ IP:

y

/camino

mirón
fuente
Pero, entonces ya no tienes un objetivo scp.
Bernhard
Sip. Presioné Enter demasiado rápido y me falta el representante para arreglarlo. Sorprendido, incluso puedo comentar aquí. salud.
merodeador
2
Creo que siempre puedes comentar tus propias contribuciones, y pensé que también podrías editarlas.
Bernhard
No creo que pueda causar este errornot a regular file
HISI
@hisi uso -rcomo argumento scp.
Ankur Loriya
2

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

El comando anterior copia un archivo del servidor remoto a su computadora. Si solo escribe scp root@IP:, intentará copiar el directorio de inicio de root (inicio de usuarios scp .).

Por lo tanto, debe proporcionar la ruta exacta al archivo

Manula Waidyanatha
fuente
Esto funcionó. Muchas gracias, hombre. ¡Seguid así!
JeffM
2

Obtiene ese error porque está intentando copiar una carpeta y no un archivo y, por lo tanto, debe copiar sus archivos de forma recursiva mediante la -ropción

Utilice el siguiente comando cuando copie archivos de una máquina remota a una máquina local

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

O

Al copiar archivos de una máquina local a una máquina remota

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

Esto funcionará (al menos en mi Mac)

usuario253616
fuente