2 Formas de enviar archivos entre Linux


Imagen de ficheros pasandose entre carpetas

Las transferencias de archivos entre 2 linux se pueden hacer de muchas formas. En muchos casos he usado scp por ser la opción mas segura. Pero no siempre se quiere lo mas seguro para pasar archivos.

Paseando por la red encontré un artículo muy interesante donde explicaba una forma de pasar los datos mediante netcat (nc) que era bastante mas rápida que scp, pero claro, no son conexiones seguras. Pero seguro que hay casos en los que premia la velocidad antes que la seguridad.

SCP

Si queremos enviar por scp un fichero a otro servidor es bastante sencillo. Si quisieramos mejorar la velocidad de la transferencia la única opción que tenemos es el parámetro -C , que nos comprimirá el fichero en la transferencia. El comando sería el siguiente.

scp fichero.txt 1.1.1.1:/home/pepe/fichero.txt

Netcat

Esta opción es la mas rápida pero también la menos segura, si usais esta opción recordad que los datos pueden ser interceptados. Son dos comandos a usar, uno desde donde se encuentra el fichero y el otro hacia a donde va el fichero. El que ofrece el fichero tendría que ejecutar este comando.

tar -cf - /home/pepe/fichero_grande.txt | gzip -1 | nc -l 8888

De esta forma este host se quedará escuchando en el puerto 8888 ofreciendo el fichero.

Luego en el host donde queremos que se pase el fichero ejecutaremos el siguiente comando.

nc <source host> 8888 | gzip -d | tar xf - -C /

De esta forma pasaremos el fichero a este host.

El problema de estos comandos es que no vemos barra de porcentage, pero hay solución usando este comando desde el host que ofrece el fichero.

tar -cf - /u02/databases/mydb/data_file-1.dbf | \ pv -s `du -sb /u02/databases/mydb/data_file-1.dbf | awk '{s += $1} END {print s}'` | \ pigz  | nc -l 8888

Recordad que esta opción solo debe usarse para redes SEGURAS, en el caso de que queráis que vuestro fichero no sea interceptado por una persona ajena.

Aquí podeis ver una tabla con la comparación de los dos comandos.

Comando Tiempo de trans Ancho de banda usado CPU Usada Ratio de trans
scp 4 m 50 s ~ 55 Mb per second ~ 5% ~ 55 Mb per second
ncp 2 m 1 s ~ 10 Mb per second ~ 15% ~ 132 Mb per second

La fuente es la siguiente web. Tiene mas opciones, hecharle un vistazo si quereís ampliar.

http://intermediatesql.com/linux/scrap-the-scp-how-to-copy-data-fast-using-pigz-and-nc/