Introducción
SCP (copia segura) es una utilidad de línea de comandos que le permite copiar archivos y directorios de forma segura entre dos ubicaciones.
Con scp
, puede copiar un archivo o directorio:
- Desde su sistema local a un sistema remoto.
- Desde un sistema remoto a su sistema local.
- Entre dos sistemas alejados del sistema local.
Al transferir datos con scp
, tanto los archivos como la contraseña están encriptados.
En este tutorial, le mostraremos cómo usar el scp
través de ejemplos prácticos y explicaciones detalladas de las opciones scp más comunes.
Sintaxis del comando SCP
Antes de entrar en cómo usar el scp
, comencemos mirando la sintaxis básica.
La scp
tiene la siguiente forma:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
: opciones como cifrado, configuración ssh, puerto ssh, límite, copia recursiva... etc.[user@]SRC_HOST:]file1
archivo de origen.[user@]DEST_HOST:]file2
archivo de destino.
Los archivos locales deben especificarse utilizando una ruta absoluta o relativa, mientras que los nombres de archivos remotos deben incluir una especificación de usuario y host.
scp
proporciona una serie de opciones que controlan todos los aspectos de su comportamiento. Las opciones más utilizadas son:
-P
Especifica el puerto ssh del host remoto.-p
Conservar los tiempos de acceso y modificación de archivos.-q
Utilice esta opción si desea suprimir el indicador de estado y los mensajes que no sean de error.-C
Esta opción obligará ascp
a comprimir los datos cuando se envíen a la computadora de destino.-r
Esta opción permitirá quescp
copie directorios de forma recursiva.
Prerrequisitos
El scp
basa en ssh
, por lo que requiere una clave o contraseña ssh para autenticarse en sistemas remotos.
Los dos puntos :
distinguen entre hosts locales y remotos.
Debe tener al menos permisos de lectura en el archivo de origen y permisos de escritura en el sistema de destino para poder copiar archivos.
Tenga cuidado al copiar archivos que comparten el mismo nombre y ruta en ambos sistemas, scp
sobrescribe los archivos sin previo aviso.
Al transferir archivos de gran tamaño, se recomienda que ejecute el comando scp
usando Screen o dentro de una sesión tmux.
Copiar un archivo local a un sistema remoto
Para copiar un archivo de un sistema local a un sistema remoto, ejecute el siguiente comando:
scp file.txt [email protected]:/remote/directory
Donde, file.txt
es el nombre del archivo que queremos copiar, remote_username
es el usuario en el servidor remoto, 10.10.0.2
es la dirección IP del servidor. /remote/directory
es la ruta al directorio donde desea copiar el archivo. Si no especifica un directorio remoto, el archivo se copiará en el directorio de inicio del usuario remoto.
Se le pedirá que ingrese la contraseña del usuario y comenzará el proceso de transferencia.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
Si omite el nombre del archivo de la ubicación de destino, el archivo se copia con el nombre original. Si desea guardar el archivo con un nombre diferente, debe especificar el nuevo nombre de archivo:
scp file.txt [email protected]:/remote/directory/newfilename.txt
Si SSH en el host remoto está escuchando en un puerto que no sea el 22 predeterminado, puede especificar el puerto usando el argumento -P
scp -P 2322 file.txt [email protected]:/remote/directory
El comando para copiar un directorio es muy similar a copiar archivos. La única diferencia es que debe usar el -r
para recursivo.
Para copiar un directorio de un sistema local a un sistema remoto, use la opción -r
scp -r /local/directory [email protected]:/remote/directory
Copie un archivo remoto a un sistema local
Para copiar un archivo de un sistema remoto a un sistema local, utilice la ubicación remota como origen y la ubicación local como destino.
Por ejemplo, para copiar un archivo llamado file.txt
desde un servidor remoto con IP, 10.10.0.2
ejecute el siguiente comando:
scp [email protected]:/remote/file.txt /local/directory
Si no ha configurado el acceso SSH sin contraseña a la computadora remota, se le pedirá la contraseña del usuario.
Copiar un archivo entre dos sistemas remotos
A diferencia de rsync
, cuando usa scp
no necesita iniciar sesión en uno de los servidores para transferir archivos de una computadora remota a otra.
El siguiente comando copiará el /files/file.txt
del host remoto host1.com
al /files
en el host remoto host2.com
.
scp [email protected]:/files/file.txt [email protected]:/files
Se le pedirá que ingrese contraseñas para ambas cuentas remotas. Los datos se transferirán directamente de un host remoto a otro.
Para enrutar el tráfico a través de la máquina en la que se emite el comando, use la opción -3
scp -3 [email protected]:/files/file.txt [email protected]:/files
Conclusión
En este tutorial, aprendió a usar el scp
para copiar archivos y directorios.
También puede configurar la autenticación basada en claves SSH y conectarse a servidores Linux sin ingresar una contraseña.