Comando SCP: Cómo 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.
En este artículo, te explicaremos los conceptos básicos del comando SCP y cómo transferir archivos, abordando también una alternativa para hacerlo desde Windows.
¿Qué es el comando SCP?
SCP (Secure Copy Protocol) es una herramienta de línea de comandos que permite la transferencia segura de archivos entre sistemas locales y remotos. Desarrollado como una extensión segura del protocolo SSH (Secure Shell), SCP garantiza que los archivos se transfieran de manera cifrada, protegiendo así los datos sensibles durante la transferencia.
SCP vs SFTP: ¿Cuál es la diferencia?
SCP y SFTP son dos protocolos de transferencia de archivos seguros que utilizan el protocolo SSH para cifrar los datos durante la transferencia. Sin embargo, hay algunas diferencias clave entre ambos.
Características del comando SCP
- Sintaxis simple: SCP utiliza una sintaxis simple y similar a la del comando cp de Unix, lo que facilita su uso y comprensión.
- Solo transferencia de archivos: SCP se centra exclusivamente en la transferencia de archivos y no admite operaciones más avanzadas, como la navegación por directorios o la administración de permisos.
- Rendimiento eficiente: Es conocido por su eficiencia en la transferencia de archivos grandes y su bajo consumo de recursos del sistema.
Características del protocolo SFTP
- Funcionalidad amplia: SFTP es un protocolo más completo que permite no solo la transferencia de archivos, sino también operaciones avanzadas, como la navegación por directorios, la administración de permisos y la eliminación de archivos.
- Interfaz de usuario similar a FTP: SFTP a menudo se considera más fácil de usar para aquellos que están familiarizados con el protocolo FTP, ya que tiene una interfaz de usuario similar.
- Mayor consumo de recursos: SFTP puede requerir más recursos del sistema que SCP, especialmente en transferencias de archivos grandes.
¿Cuál debería elegir? SCP o SFTP
La elección entre SCP y SFTP depende de tus necesidades específicas:
- Si solo necesitas transferir archivos de manera segura de forma rápida y sencilla, SCP es una excelente opción debido a su simplicidad y eficiencia.
- Si necesitas funcionalidades más avanzadas, como la administración de directorios o permisos, SFTP es la elección adecuada, ya que ofrece un conjunto más completo de características.
- Si te sientes más cómodo con una interfaz similar a FTP, SFTP puede ser la opción más intuitiva.
¿Cómo funciona el comando SCP?
El funcionamiento de SCP es relativamente sencillo. Utiliza una conexión SSH para autenticarse en el servidor remoto y, una vez autenticado, se inicia la transferencia de archivos. SCP ofrece dos modos de uso: copiar archivos desde el sistema local al servidor remoto y viceversa. Esto lo convierte en una herramienta versátil para administradores de sistemas.
Los pasos para transferir archivos con SCP son los siguientes:
- Iniciar sesión en el servidor remoto con el comando SSH.
- Ejecutar el comando SCP para transferir el archivo.
- Aceptar la solicitud de autenticación del servidor remoto.
Sintaxis básica del comando SCP
La sintaxis básica del comando SCP sigue este formato general:
scp [opciones] [archivo] [usuario@servidor:ruta/destino]
- Opciones: Aquí puedes especificar opciones como -r (para copiar directorios de manera recursiva) o -P (para especificar un puerto).
- Origen: Este es el archivo o directorio que deseas copiar.
- Destino: Indica la ubicación de destino, que puede ser un servidor remoto o una ubicación local.
El comando SCP ofrece una serie de opciones que permiten modificar su comportamiento. Las opciones más utilizadas son las siguientes:
- -r: Esta opción permite copiar directorios y sus contenidos de manera recursiva. Es útil cuando deseas transferir carpetas completas, no solo archivos individuales.
- -P: Puedes especificar un puerto de conexión SSH diferente al puerto estándar 22 utilizando esta opción. Esto es útil si tu servidor SSH está configurado para utilizar un puerto no predeterminado.
- -C: La compresión de datos puede acelerar la transferencia de archivos en conexiones de red lentas. Puedes habilitar la compresión utilizando esta opción.
- -i: Si deseas especificar una clave de autenticación diferente a la predeterminada, puedes hacerlo utilizando la opción -i. Esto es útil cuando trabajas con múltiples claves SSH.
- -v: Si deseas obtener información detallada sobre el proceso de transferencia, puedes usar la opción -v. Esto te proporcionará información adicional sobre la conexión y el progreso.
- -l: Puedes limitar la velocidad de transferencia en kilobits por segundo utilizando la opción -l. Esto puede ser útil para evitar la saturación de la red.
- -q: Para activar el modo silencioso y ocultar el progreso de la transferencia. No se mostrarán errores durante el proceso, excepto errores críticos.
Recomendaciones para utilizar el comando SCP
- Para transferir archivos de gran tamaño, es recomendable utilizar la opción -l para especificar el límite de transferencia de datos.
- Para transferir archivos entre dos servidores remotos, es necesario utilizar la opción -P para especificar el puerto SSH.
- Para transferir archivos a través de un proxy, es necesario utilizar la opción -p para especificar la dirección IP y el puerto del proxy.
¿Cómo utilizar el comando SCP para transferir archivos?
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.
Otra posibilidad para usar este comando es por medio del software Putty, que incorpora un comando similar a scp, pero que se denomina pscp.
Conclusiones
El comando SCP es una herramienta esencial para cualquier administrador de servidores. Ofrece una manera segura y eficiente de transferir archivos entre sistemas locales y remotos, lo que es crucial en entornos de servidor.
En resumen, el comando SCP es una herramienta vital para administrar la infraestructura de un sitio web en términos de dominio y hosting web. Proporciona la capacidad de cargar, actualizar y gestionar contenido de manera segura, lo que es esencial para mantener un sitio web en funcionamiento y seguro para los visitantes. Ya sea porque eres un administrador de sistemas o porque acabas de crear tu página web, comprender y utilizar eficazmente SCP es fundamental para el éxito de tu proyecto online.