Cómo usar el comando SCP en Linux

Un tutorial sencillo que le ayudará a transferir archivos a un sistema remoto desde su sistema Linux mediante el comando scp.

SCP significa 'Copia segura'. scpes una utilidad de línea de comandos ofrecida por Linux que permite la transferencia de archivos y directorios de una máquina a otra a través de una red insegura.

Si desea copiar archivos de un sistema a otro, entonces scppuede ser una muy buena opción para realizar una transferencia segura de los archivos y directorios. Cuando las dos máquinas que se comunican están conectadas a través de la misma red, el uso scpes posible.

Puede confiar en gran medida en el scpcomando de confidencialidad e integridad, ya que el archivo que se está transfiriendo y la contraseña utilizada para la transferencia están encriptados. No se revelará información confidencial incluso si alguien intenta espiar el tráfico mientras esta transferencia está en curso.

En este tutorial, veremos diferentes ejemplos del scpcomando. También veremos algunas de las opciones de uso frecuente con el scpcomando.

Comenzando con el comando scp

Usando el scpcomando puede transferir archivos / directorios:

  • Desde su máquina local a una máquina remota.
  • Entre dos máquinas remotas.
  • Desde una máquina remota a su máquina local.

Sintaxis general:

scp [Option] [source_file_name] [[email protected]_Host]:destination_folder

Entendamos los atributos básicos de este comando uno por uno.

  • [source_file_name] Este es el archivo fuente que desea copiar.
  • [ [email protected] _Host] Este es el nombre de usuario del sistema remoto donde desea copiar el archivo. La dirección IP de la máquina remota también se utiliza en este atributo después del @símbolo " ".
  • [carpeta_de_destino] Este es el directorio donde desea guardar el archivo copiado.

Nota: El :símbolo de dos puntos ( ) se utiliza en la sintaxis ya que diferencia entre las ubicaciones locales y remotas. Usamos los dos puntos ( :) con el sistema remoto para especificar el directorio en el que se deben copiar los archivos. En caso de que no especifiquemos el directorio de destino, los archivos se copiarán al directorio de inicio del usuario del sistema remoto.

Opciones utilizadas con scp

Algunas de las opciones más populares utilizadas con el scpcomando se enumeran a continuación.

Opción Descripción
-C permitir que se transfiera la compresión del archivo
-v dar la salida detallada
-r copiar archivos y directorios de forma recursiva
-p preservar los permisos, modos y tiempos de acceso de los archivos
-P cambiar el puerto predeterminado utilizado por el scpcomando

Opciones de uso frecuente con el comando scp

Veremos los ejemplos de estas opciones, más adelante en el tutorial.

Copiar archivo de un sistema local a uno remoto

scple permite transferir archivos desde su sistema local a un sistema remoto usando la siguiente sintaxis. Esto le permite transferir o cargar sus archivos a un servidor ubicado de forma remota.

Sintaxis general:

scp [file_name] [email protected]:[destination_folder]

Ejemplo:

scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav

En este ejemplo, estamos copiando un archivo 'apache-tomcat-9.0.8.tar.gz' del sistema local al sistema remoto cuya dirección IP es '143.110.178.221'.

En el sistema remoto, el archivo ahora se copiará en el directorio llamado 'gaurav'.

Producción:

[email protected]:~$ scp apache-tomcat-9.0.8.tar.gz [email protected]:gaurav
[email protected]'s password: 
apache-tomcat-9.0.8.tar.gz                           100% 9589KB  79.8KB/s   02:00    
[email protected]:~$ 

Comprobemos la salida en el sistema remoto del archivo.

[email protected]:~/gaurav# ls
apache-tomcat-9.0.8.tar.gz
[email protected]:~/gaurav#

Por lo tanto, el archivo se copia correctamente en el sistema remoto mediante el scpcomando.

Copiar varios archivos a un sistema remoto

En el ejemplo anterior, aprendimos a transferir un archivo al sistema remoto usando el scpcomando. Ahora veremos el método para transferir varios archivos desde su sistema local a un sistema remoto usando este comando.

Sintaxis general:

scp [file 1] [file 2] [file n] [email protected]_host:[specific directory]

Entendamos este sencillo proceso con un ejemplo.

Ejemplo:

scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav

Aquí, se mencionan varios archivos en el comando que se copiarán en el sistema remoto.

Producción:

[email protected]:~$ scp ath.html abc.txt ppa-purge_0.2.8+bzr56_all.deb [email protected]:gaurav 
[email protected]'s password: 
ath.html                                      100%  199KB  94.7KB/s   00:02    
abc.txt                                       100%    0     0.0KB/s   00:00    
ppa-purge_0.2.8+bzr56_all.deb                 100% 4360    42.2KB/s   00:00    
[email protected]:~$

En el sistema remoto:

[email protected]:~/gaurav# ls -l
total 9800
-rw-r--r-- 1 root root       0 Oct  5 08:58 abc.txt
-rw-r--r-- 1 root root 9818695 Oct  5 08:35 apache-tomcat-9.0.8.tar.gz
-rw-r--r-- 1 root root  204057 Oct  5 08:58 ath.html
-rw-r--r-- 1 root root    4360 Oct  5 08:58 ppa-purge_0.2.8+bzr56_all.deb
[email protected]:~/gaurav#

Los tres archivos ahora se copian en el sistema remoto.

Copiar un directorio al sistema remoto

Puede usar el scpcomando para copiar un directorio de su sistema local al sistema remoto. El proceso es similar al de copiar un archivo. Para copiar también el contenido del directorio, puede usar la -ropción con el scpcomando.

La -ropción se utiliza para copiar un directorio de forma recursiva. Eso significa que también se copiarán todas las subcarpetas y archivos dentro del directorio.

Sintaxis general:

scp -r [directory path] [email protected]_host:[target_directory]

Ejemplo:

scp -r PycharmProjects [email protected]:gaurav

Producción:

[email protected]:~$ scp -r PycharmProjects [email protected]:gaurav
[email protected]'s password: 
__main__.py                                   100%  623     7.8KB/s   00:00    
__init__.py                                   100%   23     0.4KB/s   00:00    
completion.py                                 100% 2929    28.1KB/s   00:00    
search.py                                     100% 4728    38.7KB/s   00:00    
uninstall.py                                  100% 2963    32.5KB/s   00:00    
hash.py                                       100% 1681    21.3KB/s   00:00    
check.py                                      100% 1430    16.8KB/s   00:00    
configuration.py                              100% 7125    50.4KB/s   00:00    
show.py                                       100% 6289    49.8KB/s   00:00    
download.py                                   100% 6623    48.2KB/s   00:00  
[email protected]:~$  

El uso de la -ropción con el scpcomando copia todas las subcarpetas y archivos dentro del directorio desde la máquina local al sistema remoto.

Visualización de información detallada sobre el proceso scp

Puede utilizar la opción -v(en minúsculas v) para mostrar la información sobre los archivos que se están copiando en un sistema remoto o local. Este tipo de salida también se denomina salida detallada.

Cuando se utiliza esta opción, la información de depuración completa sobre el archivo se muestra en la pantalla.

Sintaxis general:

scp -v [file_name] [email protected]_host:

Ejemplo:

scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team

Producción:

[email protected]:~$ scp -v apache-tomcat-9.0.8.tar.gz [email protected]:team
Executing: program /usr/bin/ssh host 159.89.170.11, user root, command scp -v -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/gaurav/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 159.89.170.11 [159.89.170.11] port 22.
debug1: Connection established.
debug1: key_load_public: No such file or directory
debug1: identity file /home/gaurav/.ssh/id_rsa type -1
apache-tomcat-9.0.8.tar.gz                                                                                          100% 9589KB  99.8KB/s   01:36    
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 9826736, received 4016 bytes, in 97.2 seconds
Bytes per second: sent 101133.9, received 41.3
debug1: Exit status 0
[email protected]:~$

Aquí, en la salida, puede ver que la información de depuración del archivo se muestra en su terminal cuando el scpcomando se usa con la -vopción.

Transferencia de archivos entre dos hosts remotos

Linux le permite conectarse a varios hosts remotos. Puede transferir archivos y directorios entre dos hosts remotos usando el scpcomando.

Sintaxis general:

scp [email protected]_1:/[file_name] [email protected]_2:[folder_to_save]

La sintaxis puede parecer un poco más amplia, pero es bastante simple. Aquí, la primera parte del comando proporciona la entrada sobre el usuario remoto desde donde se copiará el archivo. dos puntos (:) y /se utiliza para especificar el nombre del archivo o el nombre del directorio que se transferirá entre las dos máquinas remotas.

La segunda parte proporciona información sobre el sistema remoto de destino donde se copiará el archivo.

Ejemplo:

scp -r [email protected]:gaurav [email protected]:/team

Aquí, copiaremos un directorio llamado 'gaurav' de forma recursiva desde el sistema local a un sistema remoto. El archivo se copiará a una carpeta 'equipo' en el sistema remoto.

Producción:

[email protected]:~$ scp -r [email protected]:/gaurav [email protected]:/team 
[email protected]'s password: 
1.py                                          100%  134   261.3KB/s   00:00    
variables.py                                  100%  377   949.2KB/s   00:00    
abc.txt                                       100%    0     0.0KB/s   00:00    
ath.html                                      100%  199KB  41.8MB/s   00:00    
[email protected]:~$

Aquí, usamos el scpcomando en el sistema local para transferir un directorio llamado 'gaurav' de un servidor remoto a otro.

Transfiera archivos desde el sistema remoto a su sistema local

Puede transferir fácilmente los archivos o directorios desde el sistema remoto a su sistema local usando el scpcomando. En palabras más simples, puede descargar múltiples archivos o directorios desde el servidor remoto a su sistema local usando el scp comando.

Sintaxis general:

scp [email protected]_host:/files/file.txt /[folder_of_local_system]

Producción:

[email protected]:~$ scp [email protected]:how.txt .
[email protected]'s password: 
how.txt                                                                                                             100%   11     0.1KB/s   00:00    
[email protected]:~$

Aquí, he descargado (copiado) el archivo del servidor remoto a mi directorio personal. Por lo tanto, he usado dot ( .) para especificar en el comando para copiar el archivo a mi directorio de inicio.

Salida de muestra:

[email protected]:~$ ls -l how.txt
-rw-r--r-- 1 gaurav gaurav 11 Oct  6 09:49 how.txt
[email protected]:~$ 

Aquí, el archivo ahora se copia a mi directorio de inicio desde el servidor remoto.

De la misma manera, puede descargar múltiples archivos o directorios desde el servidor remoto usando el scpcomando con las opciones apropiadas.

Comprimir archivos para hacer transferencias más rápidas

A veces, la transferencia de archivos grandes puede llevar mucho tiempo. Este problema se puede solucionar mientras se usa el scpcomando con la opción -C(mayúsculas C).

Usando la -C opción, comprime los archivos de mayor tamaño, lo que facilita una transferencia más rápida y, por lo tanto, ahorra tiempo.

Un hecho interesante sobre esta opción es que el archivo se copia con su tamaño original en el sistema de destino, pero durante el proceso de transferencia, el tamaño se comprime para permitir una transferencia más rápida. Por lo tanto, la compresión solo se realiza en la red.

Sintaxis general:

scp -C [file_name] [email protected]_host:[target_folder]

Veamos un ejemplo comparativo para entender la diferencia.

Transferencia sin opción -C:

[email protected]:~$ scp -rv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.

debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7516504, received 4008 bytes, in 74.6 seconds
Bytes per second: sent 100693.7, received 53.7
debug1: Exit status 0
[email protected]:~$ 

De la salida anterior podemos ver que el tiempo requerido para la transferencia es de 74,6 segundos. Intentaremos transferir el mismo archivo usando la opción -C y observaremos la diferencia.

Transferir con opción -C:

[email protected]:~$ scp -Crv dlink [email protected]:team
Executing: program /usr/bin/ssh host 68.183.82.183, user root, command scp -v -r -t team
OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n  7 Dec 2017
debug1: Reading configuration data /home/trinity/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 68.183.82.183 [68.183.82.183] port 22.
debug1: Connection established.
.
.
webupload.img                                                                                                       100% 1834KB  98.7KB/s   00:18    
Sending file modes: C0664 1877552 router.img
Sink: C0664 1877552 router.img
router.img                                                                                                          100% 1834KB 100.3KB/s   00:18    
Sink: E
Sending file modes: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
Sink: C0664 3754103 DSL-2750U-Release-IN-T-01.00.07.zip
DSL-2750U-Release-IN-T-01.00.07.zip                                                                                 100% 3666KB 218.5KB/s   00:16    
Sink: E
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 7518864, received 3828 bytes, in 51.0 seconds
Bytes per second: sent 100245.4, received 51.0
debug1: Exit status 0
debug1: compress outgoing: raw data 7511925, compressed 7513136, factor 1.00
debug1: compress incoming: raw data 1467, compressed 999, factor 0.68
[email protected]:~$

Aquí, podemos observar fácilmente que usar la -Copción con el scpcomando nos ha permitido comprimir el archivo a través de la red, demostrando así ser una opción que ahorra tiempo.

Usando un puerto ssh diferente para la transferencia de archivos

Mientras usa el scpcomando, el puerto predeterminado que se implementa es el port 22. El usuario tiene la libertad de personalizar esta opción de puerto. Puede usar la -P(opción P mayúscula) con el scpcomando para usar el puerto de su elección.

Sintaxis general:

cp -P [new_port_number] [file_name/directory_name] [email protected]:[destination_folder]

Ejemplo:

scp -P 4248 dlink [email protected]:team

Usando el comando anterior, el archivo se transferirá al servidor remoto. Pero esta vez, el puerto utilizado será en port 4248lugar del predeterminado port 22.

Conclusión

Después de seguir este tutorial, hemos aprendido sobre la naturaleza dinámica del scpcomando utilizado para transferir o copiar archivos de un sistema a otro. Esta opción también se puede utilizar para descargar archivos o directorios desde el servidor remoto. Por lo tanto, podemos concluir que el scpcomando resulta muy útil para la transferencia de archivos cuando tiene que manejar más de un sistema y servidores remotos simultáneamente.


Cómo copiar y pegar en Chromebook

Cómo copiar y pegar en Chromebook

Lo primero que podría preguntarse al cambiar a un Chromebook es cómo hacer las cosas básicas, el tipo de cosas que tenía en la palma de su mano en su sistema operativo anterior. Copiar y pegar es una de esas funciones fundamentales que debe utilizar en un momento u otro.

Cómo realizar una prueba de mecanografía en Linux con tt

Cómo realizar una prueba de mecanografía en Linux con tt

En la era moderna de la tecnología, mecanografiar se ha convertido en una de las actividades más comunes para muchas profesiones. Aprender a escribir más rápido con precisión puede ayudarlo a hacer más cosas en la misma cantidad de tiempo.

¿Wi-Fi no funciona en Ubuntu? He aquí cómo solucionarlo

¿Wi-Fi no funciona en Ubuntu? He aquí cómo solucionarlo

Ubuntu es popular por su robustez y relativamente menos errores. Pero no está exento de problemas, seguro. Uno de esos problemas es con su controlador de Wi-Fi. Puede encender su sistema solo para descubrir que su Wi-Fi no funciona.

Cómo crear y escanear códigos QR en Chromebook

Cómo crear y escanear códigos QR en Chromebook

Los códigos de respuesta rápida, o códigos QR para abreviar, son códigos de barras avanzados que contienen más información que un código de barras tradicional. Estos códigos son bidimensionales, lo que le permite escanearlos vertical u horizontalmente.

Cómo instalar y eliminar paquetes en Arch Linux

Cómo instalar y eliminar paquetes en Arch Linux

¿Quiere instalar paquetes en Arch Linux pero no sabe cómo? Mucha gente se enfrenta a este problema cuando migra por primera vez de distribuciones basadas en Debian a Arch. Sin embargo, puede administrar fácilmente paquetes en su sistema basado en Arch utilizando administradores de paquetes.

El mejor editor de video gratuito para Ubuntu en 2020

El mejor editor de video gratuito para Ubuntu en 2020

Salvo toda la pelusa, aquí hay una lista de los mejores editores de video gratuitos para Ubuntu que puede usar para crear videos impresionantes.

Cómo instalar Spotify en Linux

Cómo instalar Spotify en Linux

Spotify es uno de los mayores servicios de transmisión de música que existen. Tiene clientes nativos para dispositivos móviles (Android e iOS) y de escritorio (Mac y Windows).

Los 15 mejores temas para Ubuntu 20.04 en 2020

Los 15 mejores temas para Ubuntu 20.04 en 2020

Una gran cantidad de nuevos temas actualizados están listos para instalarse en el nuevo escritorio GNOME de Ubuntu 20.04. Aquí hay una lista de los mejores temas de ubuntu en 2020

9 comandos básicos para comenzar con Linux

9 comandos básicos para comenzar con Linux

Las guías prácticas de Linux a menudo esperan que realice ciertas operaciones en la terminal, lo que puede parecer intimidante al principio. Pero no se preocupe; esta hoja de trucos de comandos de Linux cubrirá el proceso de abrir una terminal y emitir algunos comandos útiles.

Cómo mover archivos de Linux con el comando Mv

Cómo mover archivos de Linux con el comando Mv

Si bien es probable que ya sepa cómo mover un archivo en Linux usando el navegador de archivos GUI, es posible que se pregunte si hay un comando de movimiento en la terminal que le permita mover archivos rápidamente a diferentes directorios. El comando mv es el que desea y es fácil de usar con su sintaxis simple y algunos indicadores de seguridad opcionales.