¿Cómo extraer un archivo de un servidor usando scp?

31

Estoy en la máquina A y quiero extraer un archivo de la máquina B.

A$ scp <myuserid>@hostB:<path of file in B> .

dice que:

scp: <path of file in B>: No such file or directory

Pero en la máquina B, este archivo existe en esta ruta.

¿Qué va mal?

xyz
fuente
¿Es este el formato exacto del comando que ejecutó? ¿O hubo un nombre de archivo después de ':'?
dtyler

Respuestas:

43

No especificó ningún archivo: debe agregar el archivo (con la ruta) después de los dos puntos:

A$ scp <myuserid>@hostB:/absolutepath/file .

o

A$ scp <myuserid>@hostB:relativepath/file .

para una ruta relativa a su directorio de inicio.

Si no especifica un usuario diferente (es decir, el usuario en A y B es el mismo), no necesita el @

A$ scp hostB:/path/file .
Matteo
fuente
2
Arregle el formato en la pregunta, pero tal vez su respuesta aún sea válida. El problema puede provenir de una confusión entre las rutas absolutas y relativas (a casa).
Stéphane Gimenez
@ StéphaneGimenez ahora que veo la respuesta editada, entiendo. Parecía una pregunta extraña :-)
Matteo
4
$ scp username@remoteip:remote_location_file /location/where/you/save

Esto solo funciona cuando copia el archivo. si quieres copiar un directorio usa

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Opción que puede usar a pedido

-P puerto
Especifica el puerto para conectarse en el host remoto. Tenga en cuenta que esta opción está escrita con una "P" mayúscula, ya que -p ya está reservado para preservar los tiempos y modos del archivo en rcp.

-p
Conserva los tiempos de modificación, los tiempos de acceso y los modos del archivo original.

-r
Copiar recursivamente directorios completos.

-v

Modo detallado. Hace que scp y ssh impriman mensajes de depuración sobre su progreso. Esto es útil para depurar problemas de conexión, autenticación y configuración.

Rakib
fuente
1
El OP solicitó copiar un archivo, no un directorio.
contramodo
2

usar la ruta scp adecuada

scp ssh://user@hostname/tmp/foo.txt .

fuente
1

Puede especificar una ruta de archivo relativa a su directorio de inicio o una ruta de archivo absoluta. Por ejemplo, si foo.txtestá en un directorio llamado docsbajo su directorio de inicio y bar.txtestá en /var/tmp, puede hacer

scp [email protected]:docs/foo.txt .
scp [email protected]:/var/tmp/bar.txt .

Tenga en cuenta que si el nombre del archivo contiene caracteres que son especiales para el shell remoto (generalmente espacios en blanco o !"#$&'*;<>?[\]^`{|}~), debe escapar de ellos para el shell remoto además de escapar para el shell local. Por ejemplo, si se llama al archivo foo bar.txty está en su directorio de inicio:

scp [email protected]:'foo\ bar.txt' .

Si tiene dificultades con los archivos que contienen caracteres de puntuación, intente usarlos en sftplugar de scptransferirlos. O use un método aún más conveniente, si puede usar FUSE : monte el sistema de archivos de la máquina remota usando sshfs , y luego use comandos de manipulación de archivos ordinarios.

mkdir host.example.com
sshfs [email protected]:/ host.example.com
cp host.example.com/path/to/file .
Gilles 'SO- deja de ser malvado'
fuente
1

Uno puede SCP en ambos sentidos fácilmente si tiene el usuario DMZ y la contraseña. Está en su máquina local: desde DMZ a su máquina Linux local (extracción). Significa copiar abc.text dentro de folder2 a su PWD con sesión iniciada actual.

scp user@111111:folder1/folder2/abc.txt .

Se le pedirá contraseña

eso es todo

Ahora desea enviar una carpeta con subcarpetas y archivos desde su máquina local a DMZ:

usr @ localmachine: ~ / abc / defs> scp -r folder / usr @ 111111: vkrishna / docker /

nuevamente se le pedirá contraseña

: es la carpeta raíz de la máquina remota y vkrishna es una carpeta de subcarpeta docker. Localmente la carpeta defs tiene una carpeta llamada "carpeta" que queremos transferir por completo.

Me gusta / abc / defs / folder

vimal krishna
fuente