¿Cómo usar SCP en Linux?

Domina SCP: Guía de comandos para transferir archivos

07/03/2019

Valoración: 4.46 (10320 votos)

En el mundo de la administración de sistemas y el desarrollo, la capacidad de mover archivos entre máquinas de forma rápida y, sobre todo, segura, es una habilidad fundamental. Mientras que protocolos como FTP han quedado obsoletos por su falta de seguridad, herramientas como SCP (Secure Copy Protocol) se han convertido en el estándar de facto. Basado en el robusto protocolo SSH, SCP permite una transferencia segura de archivos y directorios, cifrando tanto los datos como las credenciales de autenticación. Este artículo es una guía completa que te llevará desde los conceptos más básicos hasta técnicas avanzadas, permitiéndote dominar el comando scp para gestionar tus archivos de manera eficiente y protegida.

¿Qué es SCP y cómo funciona?
Al utilizar SCP, un usuario inicia un comando de copia en su máquina local que especifica el archivo de origen y la ubicación de destino en una máquina remota. SCP establece una conexión SSH con el sistema remoto y, a continuación, copia de forma segura los archivos del origen al destino. ¿Cuándo utilizar SCP?
Índice de Contenido

¿Qué es exactamente SCP y por qué es tan importante?

SCP, o Protocolo de Copia Segura, es un protocolo de red que permite la transferencia de archivos entre un host local y uno remoto, o entre dos hosts remotos, utilizando el protocolo Secure Shell (SSH) como base. Su principal ventaja radica en la seguridad: a diferencia de FTP, que transmite los datos en texto plano, SCP cifra toda la sesión. Esto significa que tanto los archivos que se transfieren como las contraseñas utilizadas para la autenticación están protegidos contra escuchas no autorizadas en la red.

Funciona como una extensión de SSH, aprovechando su infraestructura de autenticación y seguridad. Cuando inicias una transferencia con SCP, se establece una conexión SSH con el servidor remoto, y los archivos se copian a través de este túnel cifrado.

¿Cuándo deberías utilizar SCP?

  • Copias de seguridad remotas: Automatizar la copia de seguridad de archivos importantes desde un servidor a una máquina de almacenamiento local o viceversa.
  • Despliegue de aplicaciones: Transferir los archivos de una aplicación desde tu máquina de desarrollo al servidor de producción de forma segura.
  • Transferencia de archivos grandes: Mover archivos de gran tamaño que no son prácticos para enviar por correo electrónico u otros medios.
  • Compartir archivos sensibles: Enviar información confidencial o datos sensibles a colaboradores garantizando que la transferencia sea privada y segura.
  • Administración de sistemas: Distribuir scripts o archivos de configuración a múltiples servidores de manera eficiente.

Anatomía del Comando SCP: Sintaxis y Opciones

Para empezar a utilizar SCP, es crucial entender su sintaxis básica, que es sorprendentemente simple y recuerda al comando cp de Linux.

La estructura general es:

scp [OPCIONES] [USUARIO@]HOST_ORIGEN:RUTA_ORIGEN [USUARIO@]HOST_DESTINO:RUTA_DESTINO

  • [OPCIONES]: Son indicadores (flags) que modifican el comportamiento del comando. Más adelante veremos los más importantes.
  • [USUARIO@]HOST_ORIGEN:RUTA_ORIGEN: Especifica el archivo o directorio de origen. Si el archivo es local, simplemente se indica la ruta. Si es remoto, se precede con el usuario y el host (ej: [email protected]:/home/archivo.txt).
  • [USUARIO@]HOST_DESTINO:RUTA_DESTINO: Especifica la ubicación donde se copiará el archivo. Sigue la misma lógica que el origen.

Opciones más comunes del comando SCP

Las opciones te permiten personalizar la transferencia. Aquí tienes una tabla con las más utilizadas:

OpciónDescripción
-rCopia recursiva. Esencial para transferir directorios completos con todo su contenido.
-P puertoEspecifica el puerto SSH del host remoto. Es útil si el servidor no usa el puerto estándar 22. (Nótese que es la 'P' mayúscula).
-pPreserva los tiempos de modificación, tiempos de acceso y permisos del archivo original.
-vModo detallado (verbose). Muestra información de depuración sobre la conexión y la transferencia, ideal para solucionar problemas.
-CHabilita la compresión. Comprime los datos durante la transferencia, lo que puede acelerar significativamente la copia de archivos grandes o en redes lentas.
-l limiteLimita el ancho de banda utilizado para la transferencia, especificado en Kbit/s. Útil para no saturar la conexión de red.
-i archivo_claveEspecifica la ruta a una clave privada de SSH para la autenticación, en lugar de usar una contraseña.
-qModo silencioso. Desactiva el medidor de progreso y los mensajes de advertencia.

Ejemplos Prácticos: SCP en Acción

La mejor forma de aprender es con la práctica. A continuación, te mostramos los escenarios más comunes para el uso del comandoscp.

1. Copiar un archivo local a un servidor remoto

Este es el caso de uso más frecuente. Queremos subir un archivo desde nuestra máquina a un servidor.

¿Cuáles son los comandos básicos de SCP para transferir archivos?
A continuación se presentan los comandos básicos de SCP para transferir archivos: scp @:: Copia un archivo desde el sistema local al sistema remoto. scp @: : Copia un archivo desde el sistema remoto al sistema local. scp -r @:: Copia un directorio y su contenido desde el sistema local al sistema remoto.

scp /ruta/local/archivo.txt usuario@servidor_remoto:/ruta/remota/destino/

Ejemplo real:

scp ~/documentos/informe_final.pdf [email protected]:/home/admin/documentos/

Se te pedirá la contraseña del usuario 'admin' en el servidor 192.168.1.50. Una vez introducida, el archivo informe_final.pdf se copiará a la carpeta /home/admin/documentos/ en el servidor remoto.

2. Copiar un archivo desde un servidor remoto a nuestra máquina local

El proceso inverso: descargar un archivo de un servidor a nuestro equipo.

scp usuario@servidor_remoto:/ruta/remota/archivo.txt /ruta/local/destino/

Ejemplo real:

scp [email protected]:/var/log/syslog ~/backups/

Este comando descarga el archivo syslog del servidor remoto y lo guarda en la carpeta backups de nuestro directorio de inicio local.

3. Copiar un directorio completo de forma recursiva

Para copiar un directorio y todo su contenido (subdirectorios y archivos), es indispensable usar la opción -r.

De local a remoto:

scp -r ~/proyectos/mi_app/ [email protected]:/var/www/

Esto copiará la carpeta completa mi_app y todo lo que contiene dentro de /var/www/ en el servidor remoto.

¿Cuáles son los comandos básicos de SCP para transferir archivos?
A continuación se presentan los comandos básicos de SCP para transferir archivos: scp @:: Copia un archivo desde el sistema local al sistema remoto. scp @: : Copia un archivo desde el sistema remoto al sistema local. scp -r @:: Copia un directorio y su contenido desde el sistema local al sistema remoto.

De remoto a local:

scp -r [email protected]:/home/admin/fotos/ ~/mis_fotos_remotas/

4. Copiar múltiples archivos en una sola operación

Puedes especificar varios archivos de origen para transferirlos todos a la vez.

scp archivo1.txt archivo2.jpg config.ini usuario@servidor_remoto:/ruta/destino/

Ejemplo real:

scp index.html style.css script.js [email protected]:/home/webmaster/public_html/

5. Transferencia entre dos servidores remotos

Una de las características más potentes de SCP es que puede orquestar una transferencia entre dos máquinas remotas directamente desde tu terminal local. El tráfico pasará a través de tu máquina.

scp usuario1@host1:/ruta/archivo.zip usuario2@host2:/ruta/destino/

Se te solicitará la contraseña para ambos servidores (primero para el de origen y luego para el de destino).

Técnicas Avanzadas y Consejos Útiles

Una vez que dominas lo básico, puedes usar las opciones para optimizar tus transferencias.

  • Usar un puerto SSH no estándar: Si el administrador del servidor ha cambiado el puerto SSH por seguridad (por ejemplo, al puerto 2222), debes especificarlo con -P.
  • scp -P 2222 mi_archivo.zip usuario@servidor_remoto:/backups/

  • Acelerar transferencias con compresión: Para archivos de texto grandes (como logs o bases de datos SQL), la compresión puede marcar una gran diferencia.
  • scp -C backup_db.sql admin@servidor_remoto:/opt/backups/

  • Preservar permisos y fechas: Si estás desplegando archivos de una aplicación y necesitas que conserven sus permisos de ejecución, usa -p.
  • scp -p mi_script.sh usuario@servidor_remoto:/usr/local/bin/

  • Resolver problemas con el modo detallado: Si una transferencia falla y no sabes por qué, el modo -v te dará pistas sobre si es un problema de autenticación, de conexión o de rutas.
  • scp -v archivo_problematico.txt usuario@servidor_remoto:/tmp/

Preguntas Frecuentes (FAQ)

¿En qué se diferencia SCP de FTP y SFTP?

FTP (File Transfer Protocol) es un protocolo antiguo que no cifra las transferencias, haciéndolo inseguro. SFTP (SSH File Transfer Protocol) también funciona sobre SSH, como SCP, pero es un protocolo más moderno y con más funcionalidades, como reanudar transferencias interrumpidas o listar directorios remotos. SCP es más simple y rápido, ideal para copias directas de archivos.

¿Cómo ejecutar SCP en modo detallado?
Puedes ejecutar scp en modo detallado agregando la opción -v, que establece el nivel de depuración en 2. Al hacerlo, se imprimirá información de depuración en la salida, lo que puede ayudarte en la solución de problemas.

¿SCP es obsoleto?

Aunque los desarrolladores de OpenSSH recomiendan alternativas más modernas como sftp o rsync por ser más flexibles, SCP sigue siendo una herramienta extremadamente popular, útil y segura para tareas de copia de archivos. Está presente en prácticamente cualquier sistema tipo Unix y su simplicidad es su mayor fortaleza.

¿Puedo renombrar un archivo mientras lo copio con SCP?

¡Sí! Simplemente especifica el nuevo nombre de archivo en la ruta de destino.

scp mi_archivo.txt usuario@servidor_remoto:/home/usuario/nuevo_nombre.txt

¿SCP es compatible con direcciones IPv6?

Sí, SCP es totalmente compatible con direcciones IPv4 e IPv6. Puedes forzar el uso de una u otra con las opciones -4 y -6 respectivamente.

Conclusión

El comando SCP es una herramienta indispensable en el arsenal de cualquier persona que trabaje con sistemas Linux o Unix. Ofrece una solución simple, robusta y segura para la tarea fundamental de transferir archivos. A través de su sintaxis directa y sus potentes opciones, permite desde la copia de un simple archivo hasta la sincronización de directorios complejos entre múltiples máquinas. Al dominar los ejemplos y técnicas presentadas en esta guía, estarás preparado para manejar tus datos de manera profesional, garantizando siempre la integridad y confidencialidad de tu información.

Si quieres conocer otros artículos parecidos a Domina SCP: Guía de comandos para transferir archivos puedes visitar la categoría Juegos.

Subir