Copiar archivos entre servidores con SCP Linux

Secure Copy o SCP es un medio de transferencia segura de archivos entre un host local y un servidor remoto o entre dos hosts remotos, usando el protocolo Secure Shell (SSH). Al usar el mismo protocolo de transferencia y conexión que ssh, es una modo de transferencia bastante seguro que se suele usar en sistemas automáticos de backup.

Al igual que ssh, scp nos pedirá autenticación para acceder a la máquina. También se puede crear el par de claves, publica y privada para que el proceso de autenticación sea automático, es decir, que no nos solicite el password. Especificando en el archivo authorized_keys del servidor remoto la clave publica del servidor local.

A continuación indico un par de ejemplos para copiar archivos entre varios servidores, primero copiando archivos de un servidor remoto a nuestro ordenador local y copiando un archivo de nuestro ordenador o servidor local a un servidor remoto.

Copiar archivos de un servidor remoto a local

scp -pr  USUARIO@IP_SERVER_REMOTO:/path/server/remoto /path/server/local

Modificadores:
-p Mantiene los registros de fecha de creación y última modificación,así como los permisos.
-r Copia recursivamente los directorios enteros.
-P numero de puerto, en caso que use un puerto diferente al de por defecto, 22. Ejemplo -P 45459. Habría que poner este modificador antes de indicar el usuario y la ip. Ejemplo:

scp  -P 45459 -pr  USUARIO@IP_SERVER_REMOTO:/path/server/remoto /path/server/local

Nota: el puerto 45459, es un puerto aleatorio que estoy usando para este ejemplo.

Copiar un archivo del servidor local a un servidor remoto

El comando scp también se puede utilizar para copiar archivos de nuestro servidor local a un servidor remoto.
Tan sólo hay que especificar antes del usuario y el host remoto, el path del archivo o directorio que queremos copiar.
En el siguiente ejemplo, voy a copiar mi clave publica a el servidor remoto.

scp /home/pedro/.ssh/id_rsa.pub  USUARIO@IP_SERVER_REMOTO:/home/pedro/clave_publica.txt

Como en el caso anterior, también se puede poner el modificador -P justo después de escribir el comando scp para indicar que se conecte por otro puerto diferente al predeterminado.

scp -P 45459 /home/pedro/.ssh/id_rsa.pub  USUARIO@IP_SERVER_REMOTO:/home/pedro/clave_publica.txt

21 opiniones en “Copiar archivos entre servidores con SCP Linux”

  1. Excelente aporte, yo nativo de windows, descubri que con ssh y linux administrar mi servidor web es mucho mas facil, basicamente buscaba como copiar y pegar desde el ssh. despues de un largo rato de leerlo y entender como minimamente trabaja linux logre empezar a manejar codigos, muy potente, ya mismo bajando ubunto para seguir practicando. Muchas gracias

  2. Buena informacion!
    pero yo me encuentro con un problema, estoy migrando de SCO a Debian y utilizaba UUCP para el transporte de archivos ‘tar’+’gzip’ con clave para las actualziaciones diarias entre las tiendas y la central.
    La gran ventaja es que el demonio de uucp esta siempre intentando enviar los datos y no se trata de una unica conexion.
    Con scp intuyo que se trata de solo un intento, si el receptor esta OUT el envio se pierde y se tiene que volver a ejecutar.
    Alguien que use scp puede confirmarme esto?
    Gracias

  3. Buen dia, este articulo es muy bueno es mucho de lo que estoy buscando que quiero hacer, pero tengo una duda como se maneja eso de authorized_keys quiero hacer un script con este tema pero quiciera que fuera automatica la autentificacion. Muchas gracias.

  4. Estoy buscando y no encuentro si es posible hacer el SCP sólo envie archivos que no existan ya en el servidor destino… Si falla por cualquier cosa no tienes que empezar de cero.

    Alguien sabe si SCP lo permite?

    Saludos.

  5. He intentado realizar una copia remota de servidores con parametro -p, pero no me copia los propietarios, todas las carpetas quedan con owner ROOT al igual que los grupos, cual seria la solucion

    yo estoy usando el usuario root y me conecto a la otra maquina tambien con el usuario root, si me cambio a usuario normal me da error al copiar, los siguientes errores (de distintos intentos enumerados)
    1. RSA key fingerprint is xxxx
    2. (RSA) to the list of known hosts
    3. stdin: is not a tty

    1. Hola Karen,

      No es el mismo SO, por lo que debes instalar algún software a través del cual se pueda realizar la transferencia de archivos entre los mismos, puedes probar a instalar el servicio llamado SAMBA. Como puedo intuir que no tienes mucha experiencia en admon de sistemas, lo más fácil para ti ahora es que si tienes acceso a ambas computadoras, es que hagas la transferencia de archivos manualmente con un pendrive, se que es la respuesta más evidente pero a veces lo más fácil es lo mejor.

    2. si se puede , si esta en red con scp indicando bien la ruta donde esta tu archivo y la ruta destino, (haciendolo desde la computadora con linux)

      y la opcion facil es copiarlos de la computadora windows a una usb y de la usb a la computadora con linux

  6. Tengo un problema, al intentar copiar un zip de mi maquina local (mac) a mi servidor remoto (ubuntu) usando scp me sale el siguiente mensaje:
    Permiso denegado (publickey)
    lost connection

  7. Hola, gracias por el aporte.
    Me preguntaba si es posible copiar con scp sólo parte de los archivos de un directorio. Se fue la conexión durante la descarga y sólo copié algunos archivos, entonces quería saber si hay alguna forma de descargar sólo los que me faltan (sin modificar la estructura original del directorio). Muchas gracias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *