Inicio APP y Software Comandos SCP de Linux: Copia y Transferencia Segura de Archivos {13 Ejemplos}

Comandos SCP de Linux: Copia y Transferencia Segura de Archivos {13 Ejemplos}

836
0

SCP (Protocolo de Copia Segura) es un protocolo de red utilizado para copiar archivos/carpetas de forma segura entre sistemas Linux (Unix) en una red. Para transmitir, utiliza la utilidad de línea de comandos scp, una variante más segura del comando cp (copiar).

SCP protege tus datos al copiar a través de una conexión SSH (Secure Shell) cifrando los archivos y las contraseñas. Por lo tanto, incluso si el tráfico es interceptado, la información sigue estando cifrada.

Usa SCP cuando:

  • Copias archivos desde un host local a un host remoto.
  • Copias archivos desde un host remoto a un host local.
  • Copias archivos entre dos servidores remotos.

Esta guía te muestra cómo copiar archivos usando el comando SCP e incluye 13 ejemplos de su uso en la práctica.

Prerrequisitos

  • Un inicio de sesión de shell seguro en el servidor.
  • (Opcional) Acceso de root en el cliente y el servidor.
  • Un inicio de sesión de shell seguro en el sistema del servidor.

Sintaxis del Comando SCP

La sintaxis para usar el comando scp es:

scp [opción] [nombre_de_usuario@host_fuente:ruta/al/archivo_fuente] [nombre_de_usuario@host_destino:ruta_de_destino]

Si omites:

  • El nombre_de_usuario del host (o destino), el comando se establece en el usuario actual.
  • La ruta/al/archivo_fuente (o la ruta_de_destino) desde el comando, el programa buscará (o copiará) el archivo localmente.

Cuando trabajas con archivos remotos, siempre especifica las especificaciones de usuario y host.

Asegúrate de usar una cuenta con acceso de lectura a los archivos que deseas copiar en el sistema de origen. Además, debes utilizar una cuenta con acceso de escritura al directorio donde se guardarán los archivos en el sistema de destino.

Nota: El comando scp no verifica la ubicación de destino antes de la escritura. Los archivos en el destino con el mismo nombre se sobrescribirán sin previo aviso.

Opciones del Comando SCP

Puedes agregar muchas opciones al comando scp para personalizar y acelerar el proceso. Las opciones se agregan como atributos justo después del comando scp.

Cada opción tiene una forma corta de un solo carácter y un equivalente más largo y descriptivo.

  • -1 – Utiliza el protocolo 1.
  • -2 – Utiliza el protocolo 2.
  • -4 – Utiliza solo direcciones IPv4.
  • -6 – Utiliza solo direcciones IPv6.
  • -B – Ejecuta en modo batch, desactivando todas las consultas de entrada del usuario.
  • -b buffer_size – Especifica el tamaño del búfer utilizado para la transferencia de datos. Si no se especifica, utiliza el valor predeterminado de 32768 bytes.
  • -C – Habilita la compresión.
  • -c cipher – Selecciona el cifrado para la encriptación de datos. Si no se especifica, SCP utiliza el valor predeterminado ‘AnyStdCipher’.
  • -D debug_level – Establece el nivel de depuración (1, 2, 3 o 99).
  • -d – Copia el archivo solo si el directorio de destino ya existe.
  • -F file – Especifica un archivo de configuración alternativo para SSH.
  • -h – Muestra una lista de opciones de comando.
  • -i file – Especifica el archivo desde el cual leer la identidad para la autenticación de clave pública.
  • -l limit – Limita el ancho de banda (especifica el límite en Kbit/s).
  • -o ssh_option – Establece opciones para SSH en formato de configuración ssh_config.
  • -P port – Especifica el puerto al cual conectar. Si no se especifica, SCP utiliza el puerto 22.
  • -q – Ejecuta SCP en modo silencioso.
  • -Q – Desactiva la visualización de estadísticas de transferencia de archivos.
  • -r – Copia de forma recursiva.
  • -S program – Utiliza un programa especificado para la conexión de encriptación.
  • -u – Elimina el archivo fuente una vez que se completa la copia.
  • -v – Habilita el modo detallado, que establece el nivel de depuración en 2.
Te recomendamos  Cambiar tamaño de imágenes por lote con programa gratuito

Ejemplos del Comando SCP

Para comprender mejor esta útil utilidad, echemos un vistazo a los siguientes ejemplos de comandos scp.

Copiar un Archivo de Local a un Servidor Remoto

En el ejemplo siguiente, copiamos un archivo de muestra desde un host local a un servidor remoto:

scp Escritorio/ejemplo_muestra.txt root@136.183.142.28:/home/directorio_remoto

El comando incluye la siguiente información:

  • Escritorio/ejemplo_muestra.txt: el nombre del archivo que se copia y su ubicación.
  • root@136.183.142.27: el nombre de usuario y la dirección IP del servidor remoto.
  • /home/directorio_remoto: la ubicación donde se almacenará el archivo copiado.

comandos scp de linux 1

Copiar un Archivo desde un Servidor Remoto a la Máquina Local

Para copiar un archivo de muestra desde un host remoto a una máquina local, ejecutamos:

scp 147.182.143.27:/home/directorio_remoto/ejemplo_muestra.txt Inicio/Escritorio

La información proporcionada es:

  • root@147.182.143.27: el nombre de usuario y la dirección IP del servidor remoto desde donde se encuentra actualmente el archivo.
  • /home/directorio_remoto/ejemplo_muestra.txt: el nombre del archivo que se copia y su ubicación.
  • Inicio/Escritorio: la ubicación donde se almacenará el archivo copiado.

comandos scp de linux 2

Copiar un Archivo de un Servidor Remoto a Otro

A continuación, veamos cómo copiar un archivo de un servidor remoto a otro servidor remoto utilizando el comando scp:

scp root@147.182.143.27:/home/directorio_remoto/ejemplo_muestra.txt sofija@146.153.129.25:Inicio/Escritorio

El comando anterior especifica:

  • root@147.182.143.27 – el nombre de usuario y la dirección IP del servidor remoto desde donde se encuentra actualmente el archivo.
  • /home/directorio_remoto/ejemplo_muestra.txt – el nombre del archivo que se está copiando y su ubicación.
  • sofija@146.153.129.25 – el nombre de usuario y la dirección IP del servidor remoto donde deseamos copiar el archivo.
  • Inicio/Escritorio – la ubicación donde se almacenará el archivo copiado en el servidor remoto.

Copiar Múltiples Archivos con SCP

SCP te permite copiar varios archivos en un solo comando. Por ejemplo, el siguiente comando copia dos archivos desde un host local a un servidor remoto:

scp ejemplo/muestra1.txt ejemplo/muestra2.txt root@147.182.143.27:/home/directorio_remoto

Este comando incluye la siguiente información:

  • ejemplo/muestra1.txt – el nombre y la ubicación del primer archivo que se está copiando.
  • ejemplo/muestra2.txt – el nombre y la ubicación del segundo archivo que se está copiando.
  • root@147.182.143.27 – el nombre de usuario y la dirección IP del servidor remoto que recibe los archivos.
  • /home/directorio_remoto – la ubicación donde se almacenarán los archivos copiados en el servidor remoto.
Te recomendamos  ¿Cómo usar el comando grep en Linux/UNIX?

comandos scp de linux 3

Copiar una Carpeta de una Máquina Local a un Servidor Remoto de Forma Recursiva

Además de archivos, SCP también puede copiar carpetas de forma segura hacia o desde servidores remotos. El siguiente comando muestra cómo copiar una carpeta de ejemplo hacia un servidor remoto de forma recursiva:

scp -r ejemplo root@147.182.143.27:/home/directorio_remoto

Este comando incluye:

  • -r – la opción para copiar la carpeta de forma recursiva.
  • ejemplo – el nombre de la carpeta que se está copiando desde el servidor local.
  • root@147.182.143.27 – el nombre de usuario y la dirección IP del servidor remoto que recibe la carpeta.
  • /home/directorio_remoto – la ubicación donde se almacenará la carpeta copiada en el servidor remoto.

Copiar un Archivo con SCP Usando un Puerto Específico

De forma predeterminada, SCP utiliza el puerto 22. Sin embargo, si un sistema remoto está configurado para escuchar las solicitudes SSH en un puerto diferente, utiliza el interruptor –P para especificar el puerto.

Por ejemplo, el siguiente comando copia un archivo desde una máquina local a un servidor remoto utilizando el puerto 2222:

scp -P 2222 Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

Los componentes del comando anterior son:

  • -P 2222 – utiliza el puerto 2222.
  • Desktop/ejemplo_muestra.txt – el nombre del archivo que deseas copiar y su ubicación.
  • root@147.182.143.27 – el nombre de usuario y la dirección IP del servidor remoto que recibirá el archivo.
  • /home/directorio_remoto – la ubicación donde se almacenará el archivo copiado en el servidor remoto.

Copiar un Archivo con SCP en Modo Silencioso

Ejecutar un comando scp en modo silencioso significa desactivar el medidor de progreso y evitar que se muestren mensajes que no sean de error en la salida. Para hacerlo, debes agregar la opción -q:

scp -q Desktop/ejemplo_muestra.txt root@136.183.142:/home/directorio_remoto

comandos scp de linux 4

Copiar un Archivo con 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.

Te recomendamos  ¿Cómo instalar PIP para gestionar paquetes de Python en Windows?

Agrega la opción -v después de scp para habilitar el modo detallado, como se muestra en el siguiente ejemplo:

scp -v Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

comandos scp de linux 5

Copiar un Archivo con SCP y Limitar el Ancho de Banda

Otra opción útil es limitar el ancho de banda utilizado por el comando scp agregando el parámetro -l. Esto es especialmente útil al copiar archivos grandes para evitar que scp consuma todo el ancho de banda.

Cuando limitas el ancho de banda, debes especificar el número en kilobits por segundo (Kbps). Ten en cuenta que 1 byte = 8 bits. Por lo tanto, si deseas limitar el ancho de banda de SCP a 100 KB/s, el valor para l en Kbps sería 800 (100 x 8), como se muestra en el siguiente comando:

scp -l 800 Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

Copiar un Archivo con SCP Más Rápido

Para acelerar la transferencia de archivos de un servidor a otro, agrega la opción -C que comprime el archivo mientras se transfiere. Una vez que el archivo llega a su destino, vuelve a su tamaño normal.

scp -C Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

Copiar un Archivo con SCP Usando un Cifrado Específico

De forma predeterminada, SCP utiliza AES-128 para cifrar archivos. Sin embargo, la opción -c te permite cambiar el cifrado que SCP usará para cifrar el archivo.

Por ejemplo, para aumentar la seguridad, puedes cambiar al cifrado 3des, como se muestra en el siguiente ejemplo:

scp -c 3des Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

Copiar un Archivo con SCP Usando IPv4 o IPv6

Puedes forzar a SCP a utilizar solo IPv4 o IPv6 según tus necesidades, agregando el atributo -4 o -6.

Para copiar un archivo de ejemplo desde un servidor local a un host remoto utilizando solo IPv6, ejecutarías:

scp -6 Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

Copiar un Archivo con SCP Preservando Atributos de Archivo

Para copiar un archivo utilizando SCP y preservar atributos de archivo como tiempos de modificación y acceso, modos y permisos, utiliza la opción -p:

scp -p Desktop/ejemplo_muestra.txt root@147.182.143.27:/home/directorio_remoto

En esta guía, has aprendido lo que es el comando SCP y cómo usarlo para asegurar la transmisión de archivos.

Esto es especialmente útil como reemplazo de FTP, que es inherentemente inseguro por defecto. El protocolo de copia segura también sigue la funcionalidad regular de línea de comandos y SSH, lo que ayuda a crear un conjunto de comandos sin problemas para administrar archivos entre máquinas Linux.