Cómo utilizar el comando SCP para transferir archivos hacia y desde los servidores

En tu día a día como desarrollador o administrador de sistemas seguro que te encontrarás con la necesidad de transferir archivos, hacia o desde el servidor donde tengas tus aplicaciones. En un escenario muy básico se suelen usar programas de FTP, pero no siempre son la mejor opción. Si tenemos acceso por SSH al servidor, la opción más sencilla que tenemos para transferir archivos es el comando SCP, disponible en los sistemas basados en Linux/Unix. Lo explicamos en este artículo, abordando también una alternativa para hacerlo desde Windows.

SCP es un comando que,  básicamente, permite realizar la transferencia de archivos. Podemos realizar la transferencia desde un ordenador local a un servidor remoto, desde el servidor remoto descargarnos un archivo en el ordenador local, o incluso enviar archivos entre servidores remotos.

La operativa la realizamos desde el terminal, escribiendo básicamente el comando scp, seguido de los datos del archivo que se desea transferir, la localización del servidor al que nos debemos conectar, su usuario, etc. En principio el comando lo lanzarás desde tu ordenador de trabajo, en el sistema local, aunque si tienes que transferir comandos entre servidores, lo ejecutarías desde uno de los servidores involucrados. Este comando se encarga de hacer por debajo la conexión por SSH con el servidor remoto y, por supuesto, la transferencia del propio archivo.

Transferir archivos hacia el servidor remoto

En este caso tenemos que indicar el archivo en nuestro sistema local que queremos subir, junto con los datos de SSH para conectarse al servidor remoto, así como la localización de destino.

scp archivo-en-local.tar user@1.2.3.4:/directorio/destino/servidor/remoto
  • archivo-en-local.tar es el archivo que queremos subir
  • user es el nombre del usuario que tenemos para el acceso SSH.
  • 2.3.4 es la IP del servidor remoto. También podríamos hacer uso del nombre del dominio que resuelva hacia ese servidor.
  • /directorio/destino/servidor/remoto es el directorio donde quieres dejar el archivo, dentro del servidor remoto.

Al realizar la conexión, se nos solicitará la clave que tengamos en el servidor remoto, para autenticar el acceso.

Transferir archivos desde el servidor remoto

En este caso queremos descargar un archivo existente en el servidor, para disponer de él en nuestro ordenador de trabajo. El comando es bastante similar, solo que indicamos primero los datos del servidor remoto y el archivo requerido y luego la localización donde colocarlo en local.

scp user@1.2.3.4:/ruta/servidor/remoto/archivo.tgz archivo-en-local.tgz

En este ejemplo nos conectaríamos al servidor con la IP 1.2.3.4 y usando el usuario user. El fichero del servidor llamado archivo.tgz lo almacenaríamos en nuestro ordenador con el nombre archivo-en-local.tgz.

El comando scp es bastante potente. Te aconsejamos listar su ayuda para comprobar otras opciones  útiles, como por ejemplo la transferencia de directorios con todo su contenido, con la opción -r.

Alternativa para Windows

Si estamos en un ordenador local con Windows contamos con un software de interfaz gráfica para realizar la transferencia de archivos vía scp, que se denomina WinSCP. Lo podemos descargar desde su propia página web winscp.net/eng/download.php.

Otra posibilidad para usar este comando es por medio del software Putty, que incorpora un comando similar a scp, pero que se denomina pscp.