Programación y sistemas

Dominando el comando SCP en Linux para transferir archivos: Una guía para usuarios iniciados

Transferencia segura de archivos con el comando scp por SSH entre dos servidores Linux
El comando scp copia archivos de forma cifrada entre equipos a través de SSH.

En la administración de sistemas y la transferencia de archivos, el comando scp (Secure Copy Protocol) es una herramienta fundamental. Si estás empezando en la línea de comandos, scp pronto se convertirá en tu mejor aliado para mover archivos de forma segura entre tu equipo y un servidor. En esta guía verás qué es, su sintaxis, y ejemplos prácticos para cada caso: copiar archivos y carpetas, cambiar el puerto, transferir entre dos servidores y más.

¿Qué es SCP?

scp es un comando de sistemas Unix y Unix-like que permite la transferencia segura de archivos entre equipos locales y remotos a través de SSH (Secure Shell). Utiliza el mismo cifrado y autenticación que SSH, por lo que tus datos viajan protegidos incluso a través de redes inseguras como Internet.

Sintaxis básica de scp

La estructura general del comando es sencilla:

scp [opciones] origen destino
  • origen: la ubicación del archivo o directorio que quieres transferir. Puede ser local o remota.
  • destino: la ubicación a la que quieres transferirlo. Igual que el origen, puede ser local o remota.

Una ubicación remota se escribe con el formato usuario@servidor:/ruta. Los dos puntos (:) son los que separan el servidor de la ruta y los que le dicen a scp que ese extremo es remoto.

Ejemplos prácticos de scp

Copiar un archivo local a un servidor remoto

scp archivo.txt usuario@servidor:/ruta/destino

Copia archivo.txt al servidor remoto en /ruta/destino, autenticándote como usuario.

Copiar un archivo remoto a tu equipo local

Solo hay que invertir el orden de origen y destino:

scp usuario@servidor:/ruta/archivo_remoto.txt /ruta/destino_local

Un punto (.) como destino copia el archivo en el directorio en el que te encuentras.

Copiar una carpeta completa (-r)

Para copiar un directorio y todo su contenido de forma recursiva, usa la opción -r:

scp -r mi_carpeta usuario@servidor:/ruta/destino

Copiar varios archivos a la vez

scp archivo1.txt archivo2.txt usuario@servidor:/ruta/destino

Copiar entre dos servidores remotos

También puedes transferir directamente de un servidor a otro sin descargar el archivo a tu equipo:

scp usuario1@servidor1:/ruta/archivo.txt usuario2@servidor2:/ruta/destino

Cómo cambiar el puerto en scp (-P)

Si el servidor SSH no escucha en el puerto estándar (22), debes indicar el puerto con la opción -P (en mayúscula, ojo: en ssh es -p en minúscula). Por ejemplo, para un servidor SSH en el puerto 2222:

scp -P 2222 archivo.txt usuario@servidor:/ruta/destino

La opción -P siempre va antes del origen y el destino. Es uno de los errores más frecuentes: colocarla al final o usar -p en minúscula (que en scp significa «preservar fechas y permisos», no el puerto).

Opciones útiles de scp

OpciónQué hace
-rCopia directorios de forma recursiva.
-P puertoEspecifica el puerto SSH (por defecto, 22).
-pPreserva fechas de modificación y permisos.
-CComprime los datos durante la transferencia.
-vModo verboso: muestra el detalle para depurar.
-i claveUsa una clave SSH privada concreta.
-l límiteLimita el ancho de banda (en Kbit/s).
-qModo silencioso: oculta la barra de progreso.

Usar una clave SSH concreta (-i)

scp -i ~/.ssh/mi_clave.pem archivo.txt usuario@servidor:/ruta/destino

Limitar el ancho de banda (-l)

Útil para no saturar la red. El límite se indica en kilobits por segundo. Por ejemplo, para limitar a 1 MB/s (8000 Kbit/s):

scp -l 8000 archivo_grande.iso usuario@servidor:/ruta/destino

scp, sftp o rsync: ¿cuál usar?

  • scp: ideal para transferencias rápidas y puntuales de uno o varios archivos. Simple y directo.
  • rsync: mejor para sincronizar carpetas grandes o repetir copias, porque solo transfiere lo que ha cambiado y permite reanudar.
  • sftp: una sesión interactiva (como un FTP seguro) para navegar por el servidor y subir o bajar archivos a mano.

Nota: desde OpenSSH 9, scp usa internamente el protocolo SFTP, pero la forma de usar el comando sigue siendo exactamente la misma.

Errores comunes con scp

  • Usar -p (minúscula) pensando que cambia el puerto: el puerto es -P (mayúscula).
  • Olvidar los dos puntos (:) tras el nombre del servidor: sin ellos, scp cree que es una copia local.
  • Copiar una carpeta sin la opción -r: dará el error «not a regular file».
  • Permisos insuficientes en la ruta de destino: copia en una ruta donde tu usuario pueda escribir.

Preguntas frecuentes

¿Cómo copiar una carpeta con scp?

Añade la opción -r (recursivo) antes del origen: scp -r carpeta usuario@servidor:/ruta. Así se copia el directorio con todo su contenido.

¿Cómo indicar el puerto en scp?

Con la opción -P en mayúscula seguida del número de puerto, colocada antes del origen: scp -P 2222 archivo usuario@servidor:/ruta.

¿Por qué scp me pide contraseña?

Porque usa la misma autenticación que SSH. Si configuras autenticación por clave pública (con ssh-copy-id), scp dejará de pedirte la contraseña en cada transferencia.

Chuleta rápida de scp

# Subir un archivo
scp archivo.txt usuario@servidor:/ruta/destino

# Descargar un archivo
scp usuario@servidor:/ruta/archivo.txt .

# Copiar una carpeta completa
scp -r carpeta usuario@servidor:/ruta/destino

# Cambiar el puerto (mayuscula -P)
scp -P 2222 archivo.txt usuario@servidor:/ruta/destino

# Con clave SSH y compresion
scp -C -i ~/.ssh/mi_clave.pem archivo.txt usuario@servidor:/ruta

Con estos comandos cubres el 99 % de las transferencias del día a día. Guárdate esta chuleta y ten scp siempre a mano en tu terminal.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.