bg
Inicio | Comando SCP: ejemplos prácticos para utilizarlo

Comando SCP: ejemplos prácticos para utilizarlo

Comando SCP

El comando SCP es uno de esos que debemos aprender sí o sí cuando vamos a realizar la gestión de nuestros propios servidores. En este post te lo vamos a enseñar, junto con una serie de ejemplos útiles y prácticos que te permitirán usarlo, casi a modo de receta, en la mayoría de las situaciones.

Qué es el comando SCP

SCP es un programa instalado en los servidores Linux al que accedemos mediante un comando del mismo nombre. Este software permite la transferencia de archivos mediante un canal seguro.

Podemos entender SCP como un FTP pero más orientado al terminal, que podemos usar cuando tenemos acceso a los servidores por SSH. La diferencia entre SCP y FTP consiste en que SCP usa el mismo protocolo que se usa para las conexiones SSH, lo que ofrece mucha mayor seguridad.

Además, con FTP lo común es usar un programa de interfaz gráfica, que nos permita arrastrar y soltar los archivos que queremos transferir entre el cliente y el servidor. Sin embargo, aunque hay programas de interfaz gráfica que permiten hacer conexiones por SCP, lo más normal es que usemos este programa a partir de comandos de consolas.

Sintaxis del comando SCP

Para usar el comando SCP podemos abrir un programa de terminal en nuestro ordenador personal. Allí lanzamos un comando que tiene la siguiente sintaxis.

Subidas de archivos por SCP

Para subidas de archivos que tenemos en local a remoto:

scp archivo-en-local.txt user@1.2.3.4:carpeta/del/servidor/remoto
  • archivo-en-local.txt es el nombre del archivo que queremos subir
  • user es el nombre del usuario para conectarnos al servidor, que es el mismo que usamos para SSH.
  • 1.2.3.4 es la IP del servidor remoto
  • carpeta/del/servidor/remoto es la carpeta donde queremos colocar el archivo subido

Este comando nos solicitará inmediatamente la clave del usuario indicado para hacer la transferencia.

Descarga de archivos por SCP

De una manera similar, con básicamente los mismos datos de conexión y rutas que hemos visto, pero con una sintaxis ligeramente distinta, podemos hacer la descarga de archivos que tenemos en remoto a local:

scp user@1.2.3.4:/ruta/del/archivo.txt /ruta/en/local

Acceso con una llave SSH

Si el acceso al servidor se realiza mediante llaves SSH es posible usarlas también al realizar la transferencia con el comando scp. Para ello simplemente indicamos la ruta de la llave SSH privada con la que nos debemos conectar al servidor.

scp -i ~/.ssh/llave-ssh user@1.2.3.4:/archivo.txt .

Características comando SCP a tener en cuenta

Como hemos dicho, es importante usar SCP para la transferencia de archivos de manera segura.

  • Usaremos los mismos usuarios y password que tengamos en los servidores por SSH
  • Los usuarios deben tener permisos de lectura y/o escritura de los archivos a descargar, o las carpetas donde guardar la información
  • Si tu terminal Windows no acepta SCP, te recomendamos usar alguna alternativa basada en Bash como «Git Bash» o el programa «CMDer»

Ejemplos prácticos para usar el comando SCP en Linux

Ahora queremos mostrarte algunos ejemplos de uso del comando SCP para que los tengas en cuenta y los puedas usar casi a modo de receta, de manera que estamos seguros que podrás realizar todo tipo de transferencias de archivos y carpetas de manera segura.

Utilizar el comando SCP para copiar un archivo al sistema remoto

Si tenemos un archivo llamado «files.zip» que queremos dejar en la carpeta «/var/www» del servidor, lanzamos un comando como este:

scp files.zip root@1.2.3.4:/var/www/

Usar el comando SCP para copiar un archivo desde el sistema remoto

Si tenemos un archivo en /user/sergio/db-dump.sql y lo queremos descargar en remoto, podemos usar un comando como este:

scp root@1.2.3.4:/user/sergio/db-dump.sql .

Como hemos acabado el comando por «.», la descarga del archivo remoto se colocará en la carpeta local donde estemos situados con el terminal.

Copiar varios archivos con el comando SCP

Si queremos copiar varios archivos por SCP podemos indicar sus nombres separados por espacios.

scp index.html index.js root@1.2.2.1:/root

Por ejemplo, con el comando anterior copiamos los archivos index.html e index.js en la carpeta /root del servidor, usando los mismos nombres en remoto que tenían en local.

También podemos usar el comodín «*» para conseguir copiar varios archivos:

scp index.* root@7.8.9.1:/destino

Copiar un directorio completo con el comando SCP

A veces queremos copiar un directorio completo, con todos sus contenidos, tanto archivos como carpetas de manera recursiva. Para ello podemos usar el flag -r en el comando scp, tal como sigue.

scp -r carpeta root@2.2.2.2:/root

 Podemos hacer la misma operación de descarga, obteniendo una carpeta completa del servidor.

scp -r root@82.223.222.54:/carpeta-remota ~/proyectos/tienda/download-data

Así habríamos descargado la «carpeta remota» que está en la raíz del sistema de archivos del servidor, con todo su contenido de manera recursiva, para colocarla en una carpeta del ordenador local.

Copiar archivos entre dos hosts remotos con el comando SCP

Hasta ahora todos los ejemplos de comando SCP los estamos haciendo desde local a remoto, pero podríamos tener dos servidores y desear copiar los archivos de un servidor en otro servidor remoto.

Esto se puede hacer de manera directa con el comando siguiente:

scp user@1.1.0.0:/archivo-origen.txt user@1.2.3.4:/destino

Simplemente usamos dos servidores, indicando las rutas de origen y destino en cada uno de los servidores, con sus respectivos nombres de usuario para conectarse a ellos por ssh.