Cómo transferir de forma segura archivos y directorios usando SCP

Suraj Joshi 5 noviembre 2020
  1. Comando SCP
  2. Transferir archivos y directorios usando scp
Cómo transferir de forma segura archivos y directorios usando SCP

SCP, también conocido como secure copy, es una utilidad de línea de comandos para transferir archivos y directorios desde un sistema local a uno remoto y viceversa. También nos permite transferir archivos y directorios entre dos sistemas remotos. Los archivos y las contraseñas se encriptan durante la transferencia para que sea una forma más segura de transferencia.

Comando SCP

Sintaxis

scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2

Banderas:

  • OPTION: Representa las opciones de scp como el cifrado, la configuración ssh, el puerto ssh, el límite, la copia recursiva… etc.
  • [usuario@]SRC_HOST:]file1: archivo de origen o directorio a copiar
  • [usuario@]DEST_HOST:]file2: ruta al directorio donde el archivo o directorio fuente necesita ser copiado

scp proporciona varias opciones para controlar la transferencia. Algunas de las opciones más utilizadas son:

-P Especificar el puerto ssh del host remoto
-p Preservar la modificación de los archivos y los tiempos de acceso.
-q Suprimir el medidor de progreso y los mensajes de error
-C Comprimir los datos mientras se transfieren
-r Copiar archivos de forma recursiva.

Cosas que deben ser notadas al usar el comando scp:

  1. Este comando usa la clave o contraseña ssh para autentificar sistemas remotos.
  2. Reconoce los sistemas remotos con el símbolo :.
  3. Debemos echar un vistazo a los permisos de lectura del archivo o directorio de origen y los permisos de escritura del archivo o directorio de destino.
  4. scp sobrescribe los archivos sin avisar. Así que debemos ser cuidadosos durante la transferencia de archivos que comparten el mismo nombre y ubicación en ambos sistemas.

Transferir archivos y directorios usando scp

Copiar un archivo del sistema local al sistema remoto

scp main.py remote_username@11.11.0.200:/Documents/directory

Este comando nos pedirá una contraseña de usuario y la transferencia comenzará una vez que introduzcamos la contraseña correcta.

Resultado:

remote_username@11.11.0.200's password:
main.py                             100%    0     0.0KB/s   00:00

Copia el archivo main.py en nuestro sistema local al servidor remoto con el nombre de usuario nombre_de_usuario y la dirección IP 11.11.0.200. /Documents/directory representa el directorio de destino en el servidor remoto donde el archivo debe ser copiado. Si no se especifica el directorio remoto, el archivo se copiará al directorio principal de la máquina remota.

Si el SSH del remoto está escuchando otro puerto que no sea el puerto 22 por defecto, podemos especificar el puerto usando la opción -P.

scp -P 8080 main.py remote_username@11.11.0.200:/Documents/directory

Copiar un directorio del sistema local al remoto

Debemos usar el argumento -r con el comando scp para transferir directorios que representa una transferencia recursiva de todos los archivos dentro del directorio.

scp -r /Documents/myapp remote_username@11.11.0.200:/Documents/remote_app

Copia el directorio myapp dentro del directorio Documents de la máquina local al directorio remote_app dentro de Documents de la máquina remota.

Copia un archivo del sistema remoto al sistema local

Para copiar un archivo del sistema remoto al sistema local, utilizamos una ubicación remota como fuente y la ubicación local como destino.

scp remote_username@11.11.0.200:/remote/main.py /Documents/local

Se copia el archivo main.py del sistema remoto a nuestro sistema local con el directorio de destino /Documents/local.

Copia el archivo de una ubicación remota a otra ubicación remota

scp userA@11.11.0.200:/host1/main.py userB@11.11.0.205:/host2

Copia el archivo /host1/main.py del host remoto con la dirección IP 11.11.0.200 al directorio host2 del host con la dirección IP 11.11.0.205.

Para enrutar el tráfico a través de la máquina en la que se emite el comando, añadimos la opción -3 al comando scp.

scp -3 userA@11.11.0.200:/host1/main.py userB@11.11.0.205:/host2
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Linux Files and Directories