15 formas de usar el comando SCP para transferir datos en Linux

GRAMOEn general, cuando desee copiar archivos y directorios de un servidor / máquina localhost a otro, debe utilizar servicios de intercambio de archivos como Samba (SMB) o NFS. Aunque son confiables, es un proceso tedioso de usar al copiar archivos únicos.

Esto se debe a que necesita instalar y configurar un servidor Samba o NFS. Eso plantea la necesidad de comprender y usar el comando SCP de Linux.

El comando SCP (Copia segura) es una utilidad de Linux que se utiliza para copiar archivos / directorios entre hosts de forma segura. Utiliza SSH (Secure Shell) para transferir y autenticar usuarios. Por lo tanto, al igual que cuando usa SSH, debe conocer las credenciales de sus hosts remotos.

Si está bien versado en el comando CP de Linux que se usa para copiar archivos y directorios, entonces SCP no es muy diferente. El único parámetro agregado y útil es el nombre de host de destino remoto. Eche un vistazo a la sintaxis a continuación.

scp file_name_to_copy username@destination_host:destination_directory_path

En el parámetro destination_host, debe ingresar la dirección IP de su host remoto. Si no sabe cómo encontrarlo, ejecute el ipconfig comando en la terminal.

Índice

Mejores formas de usar el comando SCP en Linux

En este artículo, veremos 15 comandos SCP útiles que puede usar en su interacción diaria con los sistemas Linux. Usaremos la máquina virtual Ubuntu 18.04 LTS Server como nuestro host remoto.

1. Copie un solo archivo desde la computadora local a un host remoto

Es uno de los comandos más sencillos. Tengo un archivo llamado Hola.scp en nuestra computadora local, que vamos a copiar a nuestro host remoto. Vea el comando a continuación.

scp Hello.scp tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copie un solo archivo del host local a un host remoto
Copie un solo archivo del host local a un host remoto

En el lado derecho, tenemos nuestro localhost, y en el lado izquierdo está nuestro servidor Ubuntu. Si está haciendo esto por primera vez, debería ver una advertencia preguntándole si desea continuar con la conexión, escriba '. Debería ver un mensaje para ingresar su contraseña de host remoto. Ejecutando un ls comando en el host remoto, vemos que hemos copiado nuestro archivo correctamente.

2. Copie varios archivos

En el comando anterior, hemos visto cómo podemos copiar un solo archivo. Para copiar varios archivos, use la sintaxis del comando siguiente. Vamos a copiar tres archivos, Hola1, Hola2, y Hola3.

scp Hello1 Hello2 Hello3 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copie varios archivos usando SCP
Copiar varios archivos

Mediante la ejecución ls comando en el host remoto, vemos que hemos copiado correctamente los archivos.

3. Copie un directorio de forma recursiva

Aparte de los archivos, podemos usar SCP para copiar un directorio desde la computadora local a un destino remoto. Utilice la sintaxis en el siguiente comando. Vamos a copiar la carpeta FOSSTUTS.

scp -r FOSSTUTS tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copiar un directorio usando el comando SCP
Copiar un directorio usando el comando SCP

Tenga en cuenta que al realizar cualquier acción en un directorio completo, necesitaremos incluir el parámetro -r, que significa recursivo.

4. Copia de archivos con salida detallada

La inclusión de un parámetro detallado en nuestra sintaxis SCP imprime todo el proceso que SCP está haciendo en segundo plano. Copiemos varios archivos a nuestro host remoto usando el parámetro -v (detallado).

scp Hello1 Hello2 Hello3 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copiar archivos con SCP con la salida detallada
Copiar archivos con la salida detallada

En la imagen de arriba, puede ver que tenemos muchos resultados del comando que ejecutamos en nuestra computadora local. Te da todos los detalles sobre la operación que se lleva a cabo actualmente.

5. Copie archivos en dos hosts remotos

Suponiendo que está administrando varios servidores remotos y desea copiar un archivo de un servidor a otro. Mire la sintaxis en el siguiente comando.

scp tuts@192.168.43.96:/home/tuts/FOSSLINUX/Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copie archivos en dos hosts remotos
Copie archivos en dos hosts remotos

Estamos copiando el archivo Hola1 desde el host 192.168.43.96 al host 192.168.83.132.

6. Comprimir y copiar archivos

Para acelerar el proceso de copia y ahorrar ancho de banda, puede comprimir sus archivos con el parámetro -C. Los datos se comprimen en su computadora local sobre la marcha y se descomprimen en el host remoto. Consulte la sintaxis a continuación.

scp -vC Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Comprimir y copiar archivos usando el comando SCP
Comprimir y copiar archivos

Hemos incluido el parámetro -v (detallado) para que pueda ver lo que está sucediendo.

7. Administrar el ancho de banda

La copia de un archivo a un host remoto se puede explicar como una carga. Si el ancho de banda de carga es alto, podría afectar a otros procesos que se ejecutan en segundo plano. Puede limitar el ancho de banda para usar en el proceso de copia usando el parámetro -l. Vea el comando a continuación.

scp -l 100 Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Administre el ancho de banda con SCP
Administra el ancho de banda

El ancho de banda que asigna está en kilobytes. Por lo tanto, en el comando anterior, estamos usando un máximo de 100 Kb / s para llevar a cabo nuestro proceso de copia.

8. Utilice una numeración de puertos personalizada

Como se explicó anteriormente, SCP usa SSH para llevar a cabo el proceso de copia de archivos. De forma predeterminada, SSH se ejecuta en el puerto 22; sin embargo, si configuró un servidor SSH en el servidor remoto para que se ejecute en un puerto diferente, puede especificarlo en su comando SCP. Vea el comando a continuación.

scp -P 22 Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Utilice un número de puerto personalizado con SCP
Utilice un número de puerto personalizado con SCP

Como no he configurado ningún servidor SSH, dejamos el número de puerto 22 para esta publicación.

9. Copia y conservación de atributos de archivo

En caso de que desee copiar un archivo y conservar atributos como permisos, tiempos de modificación, tiempos de acceso, etc., utilice el parámetro -p con el comando SCP. Vea el comando a continuación.

scp -P 22 Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copie y conserve los atributos del archivo mediante el comando SCP
Copiar y conservar los atributos del archivo

Tenga en cuenta que en este ejemplo, la 'p' es minúscula, a diferencia de cuando se usa un número de puerto personalizado.

10. Suprime la salida SCP con el parámetro -q

Suponga que no desea imprimir la salida de SCP, las notificaciones de error, la advertencia o incluso el medidor de progreso. Puede lograrlo usando el parámetro -q, que suprime toda la salida SCP.

scp -q Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Suprima la salida SCP con el parámetro -q.
Suprima la salida SCP con el parámetro -q.

De la imagen de arriba, la única salida de SCP es la solicitud de contraseña. El parámetro -q suprime todas las demás salidas.

11. Utilice SCP para copiar un archivo desde un host remoto a su computadora local.

Para la mayoría de los ejemplos anteriores, estamos copiando archivos de nuestra máquina local a un servidor remoto. Ahora, suponga que desea copiar un archivo del servidor remoto a su computadora local. Debería utilizar el comando SCP con un pequeño ajuste en la sintaxis habitual. Mira el comando a continuación.

scp tuts@192.168.83.132:/home/tuts/FOSSLINUX/serverFile.txt /home/tuts/FOSSLINUX

Utilice SCP para copiar un archivo desde un host remoto a su computadora local
Utilice SCP para copiar un archivo desde un host remoto a su computadora local.

Ejecutando un ls comando en nuestra computadora local, vemos que el 'serverFile.txt' copió exitosamente.

12. Copie archivos y directorios sin usar contraseñas

De los ejemplos anteriores, vemos que cada vez que necesitamos copiar un archivo, recibimos un mensaje para ingresar una contraseña. Podemos omitir este paso generando claves SSH para usar durante el proceso de autenticación.

Para generar una clave SSH, use el siguiente comando.

ssh-keygen -t rsa

El sistema debería generar una clave SSH. Puede ver el proceso que tiene lugar desde la salida en el terminal. Ahora, necesitamos copiar la clave a nuestro host remoto para usarla para la autenticación. Utilice el siguiente comando.

ssh-copy-id root@192.168.4.200

Genera claves SSH
Genera claves SSH

Ahora intentemos copiar un archivo de nuestra computadora local a nuestro host remoto.

scp Hello1 tuts@192.168.83.132:/home/tuts/FOSSLINUX

Copiar un archivo sin contraseña
Copiar un archivo sin contraseña

En la imagen de arriba, vemos que no se le solicitó ingresar una contraseña.

13. Usa un cifrado diferente

SCP utiliza el cifrado / cifrado AES para copiar archivos de forma segura. Sin embargo, puede especificar un esquema de cifrado diferente utilizando el parámetro -c. Nota la C es una minúscula a diferencia de la compresión donde el C está en mayúsculas. Vea el comando a continuación.

scp -c aes128-gcm@openssh.com TESTFILE tuts@192.168.83.132:/home/tuts/FOSSLINUX

Usa un cifrado diferente con SCP
Usa un cifrado diferente

Hemos especificado el esquema de cifrado que queremos usar como AES. También puede utilizar otros como pez globo y muchos más.

scp -c blowfish TESTFILE tuts@192.168.83.132:/home/tuts/FOSSLINUX

14. Utilice el archivo de clave SSH en lugar de una contraseña

SCP le permite usar un archivo de clave en lugar de una contraseña para completar el proceso de autenticación usando el parámetro -i seguido del archivo de clave. Vea el comando a continuación.

scp -c privateKey.pem TESTFILE tuts@192.168.83.132:/home/tuts/FOSSLINUX

Utilice un archivo de claves en lugar de una contraseña
Utilice un archivo de claves en lugar de una contraseña

15. Utilice un script de shell de SCP para copiar archivos

Suponiendo que tiene que usar el comando SCP con regularidad, puede escribir un script de shell para simplificar todo el proceso. En este artículo, escribiremos un script que lea el host de destino desde destfile.txt.

El archivo destfile.txt
El archivo destfile.txt

A continuación se muestra nuestro script SCP

echo "STARTING SCP SCRIPT"
echo
echo -e "Enter the path to the file you wish to copy:c"
read file

for dest in `cat /tmp/destfile.txt`; do
scp -rC $file ${dest}:/tmp/

done

Guarde el archivo con un '.sh.' extensión ya que es un script bash. Haga que el script sea ejecutable usando el comando chmod, como se muestra en la imagen a continuación, antes de ejecutarlo.

Utilice un script de SCP Shell
Utilice un script de SCP Shell

Conclusión

Estos son 15 ejemplos prácticos de SCP que puede aplicar para facilitar su trabajo con sistemas Linux. ¿Tiene un comando SCP que desea compartir con nuestros lectores? Deja un comentario a continuación. Si encuentra este artículo ingenioso, por favor comparta el enlace con un amigo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir