10 comandos SCP para transferir archivos/carpetas en Linux


El administrador de Linux debe estar familiarizado con el entorno CLI. Dado que el modo GUI en servidores Linux no es común para ser instalado. SSH puede ser el protocolo más popular para permitir que el administrador de Linux administre los servidores de forma remota de forma segura. Integrado con el comando SSH hay un comando SCP. SCP se utiliza para copiar archivos entre servidores de forma segura.

El siguiente comando se leerá como "copiar nombre_archivo_origen" en "carpeta_destino" en "host_destino" usando "cuenta de nombre de usuario".

scp source_file_name [email protected]_host:destination_folder

Hay muchos parámetros en el comando SCP que puede usar. Estos son los parámetros que pueden resultar útiles para el uso diario.

Proporcione la información detallada del proceso SCP mediante el parámetro -v

El comando SCP básico sin parámetro copiará los archivos en segundo plano. El usuario no verá nada a menos que se complete el proceso o aparezca algún error. Puede utilizar el parámetro "-v" para imprimir información de depuración en la pantalla. Puede ayudarlo a depurar problemas de conexión, autenticación y configuración.

[email protected] ~/Documents $ scp -v Label.pdf [email protected]:.
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
Sending file modes: C0770 3760348 Label.pdf
Sink: C0770 3760348 Label.pdf
Label.pdf 100% 3672KB 136.0KB/s 00:27
Transferred: sent 3766304, received 3000 bytes, in 65.2 seconds
Bytes per second: sent 57766.4, received 46.0
debug1: Exit status 0

Proporcione tiempos de modificación, tiempos de acceso y modos de archivos originales.

El parámetro "-p" le ayudará en esto. Un tiempo estimado y la velocidad de conexión aparecerán en la pantalla.

[email protected] ~/Documents $ scp -p Label.pdf [email protected]:.
[email protected]'s password:
Label.pdf 100% 3672KB 126.6KB/s 00:29

Haga que la transferencia de archivos sea más rápida usando el parámetro -C

Uno de los parámetros que puede acelerar la transferencia de archivos es el parámetro "-C". El parámetro "-C" comprimirá sus archivos sobre la marcha. Lo único es que la compresión solo ocurre en la red. Cuando el archivo llega al servidor de destino, volverá al tamaño original como antes de que ocurriera la compresión.

Eche un vistazo a estos comandos. Está utilizando un único archivo de 93 Mb.

[email protected] ~/Documents $ scp -pv messages.log [email protected]:.
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email protected]'s password:
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380425711
Sending file timestamps: T1323853868 0 1380425711 0
messages.log 100% 93MB 58.6KB/s 27:05
Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds
Bytes per second: sent 58758.4, received 15.6
debug1: Exit status 0

Copiar el archivo sin el parámetro “-C” resultará en 1661,3 segundos. Puede comparar el resultado con el comando debajo del cual usando el parámetro "-C".

[email protected] ~/Documents $ scp -Cpv messages.log [email protected]:.
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t .
OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 202.x.x.x [202.x.x.x] port 22.
debug1: Connection established.
debug1: identity file /home/pungki/.ssh/id_rsa type -1
debug1: Host '202.x.x.x' is known and matches the RSA host key.
debug1: Found key in /home/pungki/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Next authentication method: publickey
debug1: Trying private key: /home/pungki/.ssh/id_rsa
debug1: Next authentication method: password
[email protected]'s password:
debug1: Enabling compression at level 6.
debug1: Authentication succeeded (password).
Authenticated to 202.x.x.x ([202.x.x.x]:22).
debug1: channel 0: new [client-session]
debug1: Sending command: scp -v -p -t .
File mtime 1323853868 atime 1380428748
Sending file timestamps: T1323853868 0 1380428748 0
Sink: T1323853868 0 1380428748 0
Sending file modes: C0600 97517300 messages.log
messages.log 100% 93MB 602.7KB/s 02:38
Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds
Bytes per second: sent 54813.9, received 97.0
debug1: Exit status 0
debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09
debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48

Como puede ver, cuando utiliza la compresión, el proceso de transferencia se realiza en 162,5 segundos. Es 10 veces más rápido que no usar el parámetro "-C". Si está copiando muchos archivos a través de la red, el parámetro "-C" le ayudaría a reducir el tiempo total que necesita.

Lo que debemos notar es que el método de compresión no funcionará en ningún archivo. Cuando el archivo fuente ya esté comprimido, no encontrará ninguna mejora allí. Los archivos como .zip, .rar, imágenes y .iso no se verán afectados por el parámetro "-C".

Seleccione otro cifrado para cifrar archivos

Por defecto, SCP usa "AES-128" para cifrar archivos. Si desea cambiar a otro cifrado para cifrarlo, puede utilizar el parámetro "-c". Eche un vistazo a este comando.

[email protected] ~/Documents $ scp -c 3des Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

El comando anterior le dice a SCP que use el algoritmo 3des para cifrar el archivo. Tenga cuidado de que este parámetro utilice "-c" y no "-C".

Limitar el uso de ancho de banda

Otro parámetro que puede resultar útil es el parámetro "-l". El parámetro "-l" limitará el ancho de banda a utilizar. Será útil si realiza un script de automatización para copiar una gran cantidad de archivos, pero no desea que el proceso SCP agote el ancho de banda.

[email protected] ~/Documents $ scp -l 400 Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

El valor 400 detrás del parámetro “-l” significa que limitamos el ancho de banda para el proceso SCP a solo 50 KB/seg. Una cosa para recordar es que el ancho de banda se especifica en Kilobits/seg (kbps). Significa que 8 bits equivalen a 1 byte.

Mientras que SCP cuenta en Kilobyte/seg (KB/s). Entonces, si desea limitar su ancho de banda para SCP como máximo solo 50 KB/s, debe configurarlo en 50 x 8 u003d 400.

Especifique el puerto específico para usar con SCP

Por lo general, SCP usa el puerto 22 como puerto predeterminado. Pero por motivos de seguridad, puede cambiar el puerto a otro puerto. Por ejemplo, estamos usando el puerto 2249. Entonces el comando debería ser así.

[email protected] ~/Documents $ scp -P 2249 Label.pdf [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Asegúrese de utilizar una “P” mayúscula y no una “p”, ya que la “p” ya se usa para tiempos y modos preservados.

Copiar archivos dentro del directorio de forma recursiva

A veces necesitamos copiar el directorio y todos los archivos/directorios que contiene. Será mejor si podemos hacerlo en 1 comando. SCP soporta ese escenario usando el parámetro "-r".

[email protected] ~/Documents $ scp -r documents [email protected]:.

[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Cuando finalice el proceso de copia, en el servidor de destino encontrará un directorio llamado "documentos" con todos sus archivos. La carpeta "documentos" se crea automáticamente.

Deshabilitar el medidor de progreso y el mensaje de advertencia/diagnóstico

Si elige no ver el medidor de progreso y los mensajes de advertencia/diagnóstico de SCP, puede deshabilitarlo usando el parámetro "-q". Aquí está el ejemplo.

[email protected] ~/Documents $ scp -q Label.pdf [email protected]:.

[email protected]'s password:
[email protected] ~/Documents $

Como puede ver, después de ingresar la contraseña, no hay información sobre el proceso de SCP. Una vez finalizado el proceso, volverá a ver un mensaje.

Copie archivos usando SCP a través de Proxy

El servidor proxy se utiliza normalmente en entornos de oficina. De forma nativa, SCP no está configurado por proxy. Cuando su entorno utiliza un proxy, debe "decirle" a SCP que se comunique con el proxy.

Este es el escenario. La dirección del proxy es 10.0.96.6 y el puerto del proxy es 8080. El proxy también implementó la autenticación de usuario. Primero, necesita crear el archivo “~/.ssh/config”. En segundo lugar, pones este comando dentro de él.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Entonces necesita crear el archivo "~/.ssh/proxyauth" que contiene.

myusername:mypassword

Después de eso, puede hacer SCP de forma transparente como de costumbre.

Tenga en cuenta que es posible que el sacacorchos aún no esté instalado en su sistema. En mi Linux Mint, necesito instalarlo primero, usando el procedimiento de instalación estándar de Linux Mint.

$ apt-get install corkscrew

Para otros sistemas basados en yum, los usuarios pueden instalar sacacorchos usando el siguiente comando yum.

# yum install corkscrew

Otra cosa es que, dado que el archivo “~/.ssh/proxyauth” contiene su “nombre de usuario” y “contraseña” en formato de texto sin cifrar, asegúrese de que solo usted pueda acceder al archivo.

Seleccione un archivo ssh_config diferente

Para los usuarios móviles que a menudo cambian entre la red de la empresa y la red pública, se verá afectado por cambiar siempre la configuración en SCP. Es mejor si podemos poner un archivo ssh_config diferente para satisfacer nuestras necesidades.

El proxy se utiliza en la red de la empresa, pero no en la red pública, y normalmente cambia de red.

[email protected] ~/Documents $ scp -F /home/pungki/proxy_ssh_config Label.pdf

[email protected]:.
[email protected]'s password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Por defecto, el archivo "ssh_config" por usuario se colocará en "~/.ssh/config". La creación de un archivo "ssh_config" específico compatible con proxy le facilitará el cambio entre redes.

Cuando está en la red de la empresa, puede utilizar el parámetro "-F". Cuando está en una red pública, puede omitir el parámetro "-F".

Eso es todo sobre SCP. Puede ver las páginas de manual de SCP para obtener más detalles. No dude en dejar comentarios y sugerencias.