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:
- De su sistema local a un sistema remoto.
- De un sistema remoto a su sistema local.
- Entre dos sistemas remotos de su sistema local.
Al transferir datos con scp
, tanto los archivos como la contraseña están encriptados para que cualquier persona que husmee en el tráfico no obtenga nada confidencial.
En este tutorial, le mostraremos cómo usar el scp
comando a través de ejemplos prácticos y explicaciones detalladas de las opciones de scp más comunes.
Sintaxis del comando SCP #
Antes de entrar en cómo usar el scp
comando, comencemos revisando la sintaxis básica.
El scp
la sintaxis del comando toma la siguiente forma:
scp [OPTION] [user@]SRC_HOST:]file1 [user@]DEST_HOST:]file2
OPTION
- opciones de scp como cifrado, configuración ssh, puerto ssh, límite, copia recursiva, etc.[user@]SRC_HOST:]file1
- Archivo fuente.[user@]DEST_HOST:]file2
- Archivo de destino
Los archivos locales deben especificarse mediante 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
- Conserva los tiempos de modificación y acceso a los archivos.-q
- Utilice esta opción si desea suprimir el medidor de progreso y los mensajes que no son de error.-C
- Esta opción fuerzascp
para comprimir los datos a medida que se envían a la máquina de destino.-r
- Esta opción le dice ascp
para copiar directorios recursivamente.
Antes de comenzar #
El scp
el comando se basa en ssh
para la transferencia de datos, por lo que requiere una clave ssh o contraseña para autenticarse en los sistemas remotos.
Los dos puntos (:
) es cómo scp
distinguir entre ubicaciones locales y remotas.
Para poder copiar archivos, debe tener al menos permisos de lectura en el archivo de origen y permiso de escritura en el sistema de destino.
Tenga cuidado al copiar archivos que comparten el mismo nombre y ubicación en ambos sistemas, scp
sobrescribirá los archivos sin previo aviso.
Al transferir archivos grandes, se recomienda ejecutar scp
comando dentro de una pantalla o tmuxsession.
Copiar archivos y directorios entre dos sistemas con scp
#
Copiar un archivo local a un sistema remoto con scp
Comando #
Para copiar un archivo de un sistema local a uno 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. El /remote/directory
es la ruta al directorio en el que 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 de usuario y se iniciará el proceso de transferencia.
[email protected]'s password:
file.txt 100% 0 0.0KB/s 00:00
Omitir el nombre de archivo de la ubicación de destino copia el archivo 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 -P
argumento:
scp -P 2322 file.txt [email protected]:/remote/directory
El comando para copiar un directorio es muy parecido a cuando se copian archivos. La única diferencia es que necesitas usar -r
bandera para recursiva.
Para copiar un directorio de un sistema local a un sistema remoto, use -r
opción:
scp -r /local/directory [email protected]:/remote/directory
Copiar un Archivo Remoto a un Sistema Local usando scp
Comando #
Para copiar un archivo de un sistema remoto a uno 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
ejecuta el siguiente comando:
scp [email protected]:/remote/file.txt /local/directory
Si no ha configurado un inicio de sesión SSH sin contraseña en la máquina remota, se le pedirá que ingrese la contraseña de usuario.
Copiar un archivo entre dos sistemas remotos usando scp
Comando #
A diferencia de rsync
, al usar scp
no tiene que iniciar sesión en uno de los servidores para transferir archivos de una a otra máquina remota.
El siguiente comando copiará el archivo /files/file.txt
desde el host remoto host1.com
al directorio /files
en el host remoto host2.com
.
scp [email protected]:/files/file.txt [email protected]:/files
Se le pedirá que ingrese las 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 -3
opción:
scp -3 [email protected]:/files/file.txt [email protected]:/files
Conclusión #
En este tutorial, aprendiste a usar el scp
comando para copiar archivos y directorios.
También puede configurar una autenticación basada en clave SSH y conectarse a sus servidores Linux sin ingresar una contraseña.
Si se conecta regularmente a los mismos sistemas, puede simplificar su flujo de trabajo definiendo todas sus conexiones en el archivo de configuración de SSH.