SCP, comúnmente conocido como comando de copia segura, es una herramienta de utilidad utilizada por los sistemas Linux para copiar archivos y directorios entre hosts en la red. SSH se utiliza para transferir archivos y autenticar a los usuarios. Como necesita credenciales para acceder a un servidor remoto usando ssh, de manera similar necesita conocer las credenciales de los hosts remotos mientras ejecuta los comandos SCP. En el artículo, aprenderemos algunos comandos SCP útiles.
Copiar archivo de un servidor a otro
Para copiar un solo archivo de un servidor a otro en la red, use el siguiente comando.
$ scp file.txt [email protected]:/root/Linuxways
Donde file.txt es el nombre del archivo, root es el nombre de usuario del host remoto, 192.168.178.10 es la dirección del servidor remoto y /root/Linuxways es el directorio remoto.
Buscar el estado de la copia
El comando Scp junto con la opción -v se puede usar para mostrar el estado de la copia.
$ scp -v file [email protected]:/root/Linuxways
Salida:
Preservar los atributos del archivo
Una vez que copiamos archivos/carpetas al servidor de destino, los archivos copiados tomarán la última marca de tiempo del servidor de destino. Use el comando SCP con la opción -rvp para conservar los atributos del archivo, como permiso, marca de tiempo.
$ scp -rvp file [email protected]:/root/Linuxways
Salida:
Fuente:
Destino :
Ocultar salida de SCP
Las salidas de Scp, incluidas las advertencias, los errores y el medidor de progreso, se pueden suprimir usando SCP con la opción -q como:
$ scp -q file [email protected]:/root/Linuxways
Transferir archivo usando un puerto aleatorio
El comando Scp con la opción -P se puede usar para transferir los archivos usando un puerto diferente al puerto 22 predeterminado. Especifique el puerto SSH después del comando -P y ejecute el comando SCP como:
$ scp -P 4022 file [email protected]:/root/Linuxways
Donde 4022 es el puerto SSH personalizado del host remoto.
Utilice una clave de autenticación en lugar de una contraseña
Si el host remoto está configurado con autenticación de clave ssh en lugar de una contraseña, debe usar el archivo de clave ssh para acceder al host remoto. Para transferir los archivos/directorios, especifique el archivo de clave ssh y ejecute el comando SCP con la opción -i como:
$ scp -i private.pem file [email protected]:/root/Linuxways
Donde private.pem es el archivo clave para la autenticación del servidor remoto
Limitar el ancho de banda
El ancho de banda de la transferencia de archivos se puede limitar mediante el comando SCP con la opción -l. En este ejemplo, tengo un ancho de banda limitado a 200kbit/s
$ scp -l 200 centos-iso.tar.gz [email protected]:/root/Linuxways
Copiar archivo desde un host remoto
Los archivos/carpetas se pueden copiar a localhost desde un servidor remoto usando el comando SCP como:
$ scp [email protected]:/root/Linuxways/file .
Donde root es el nombre de usuario de la máquina remota 192.168.178.10, /root/Linuxways es el directorio remoto y . es el directorio actual en el servidor local.
Salida:
El comando Scp con la opción -r se puede usar para copiar directorios desde el host remoto como:
$ scp -r [email protected]:/root/Linuxways .
Donde Linuxways es el nombre del directorio remoto.
Salida:
Transferir archivos basados en IPV4 únicamente
Solo se puede usar la dirección IPV4 para contactar hosts remotos para transferir archivos/directorios usando el comando SCP con la opción -4 como:
$ scp -4 file [email protected]:/root/Linuxways
Si necesita usar solo la dirección IPV6, ejecute el comando SCP como:
$ scp -6 file [email protected]:/root/Linuxways
Deshabilitar la verificación estricta de archivos
La verificación estricta de archivos al copiar archivos/carpetas desde el host remoto al servidor local se puede desactivar usando el comando SCP con la opción -T como:
$ scp -T [email protected]:/root/Linuxways/documents.tar.gz .
Donde 192.168.178.10 es el host remoto y documents.tar.gz es el nombre del archivo.
Comprime archivos/carpetas para una transferencia más rápida
Los archivos/directorios se pueden comprimir usando el comando SCP con la opción -C mientras se copian a un servidor remoto. La compresión del archivo se realiza a nivel de red y en el destino, el tamaño del archivo será el mismo que el de origen.
$ scp -C centos.iso.tar.gz [email protected]:/root/Linuxways
Copiar directorio en lugar de archivos
Puede copiar el directorio en lugar de archivos individuales por separado usando el comando SCP con la opción -r como:
$ scp -r example [email protected]:/tmp
Donde ejemplo es el nombre de la carpeta.
Copiar varios archivos
Se pueden copiar varios archivos a un servidor remoto usando el comando SCP especificando el nombre de los archivos como:
$ scp file file1 file2 file3 file4 [email protected]:/root/Linuxways
Donde archivo archivo1 archivo2 archivo3 y archivo4 es el nombre del archivo.
Usar otro cifrado para cifrar archivos/carpetas
Durante la transferencia de archivos, Linux utiliza el algoritmo AES-128 para cifrar los archivos. Se pueden usar otros algoritmos de encriptación usando el comando SCP con la opción -c. En este ejemplo, he usado el cifrado 3des-cbc para cifrar los archivos.
$ scp -c 3des-cbs file [email protected]:/root/Linuxways
Copia remota a host remoto
Los archivos/directorios se pueden copiar desde un host remoto (host1 de ejemplo) a otro host remoto (host2) desde el host local (host) como:
$ scp [email protected]:/root/Linuxways/file [email protected]:/root/Linuxways
Donde, 192.168.178.10 -> Host remoto (host1)
192.168.178.11 -> Host remoto (host2)
Conclusión
En este artículo, hemos aprendido algunos comandos SCP útiles para copiar archivos/carpetas entre hosts en la red. Si tiene sugerencias y comentarios, deje un comentario.