Cuando envía el mismo conjunto de archivos, rsync
es más adecuado porque solo enviará diferencias. tar
siempre enviará todo y esto es un desperdicio de recursos cuando muchos de los datos ya están allí. La tar + rsync + untar
pierde esta ventaja, en este caso, además de la ventaja de mantener las carpetas en sincronía con rsync --delete
.
Si copia los archivos por primera vez, primero empaqueta, luego envía y luego desempaca (AFAIK rsync
no toma la entrada canalizada) es engorroso y siempre peor que simplemente enviar un mensaje, ya rsync
que no tendrá que hacer ninguna tarea más que de tar
todos modos.
Consejo: rsync versión 3 o posterior realiza una recursividad incremental, lo que significa que comienza a copiar casi inmediatamente antes de contar todos los archivos.
Consejo 2: si usa rsync
más ssh
, también puede usar cualquieratar+ssh
tar -C /src/dir -jcf - ./ | ssh user@server 'tar -C /dest/dir -jxf -'
o solo scp
scp -Cr srcdir user@server:destdir
Regla general, que sea simple.
ACTUALIZAR:
He creado 59 millones de datos de demostración
mkdir tmp; cd tmp
for i in {1..5000}; do dd if=/dev/urandom of=file$i count=1 bs=10k; done
y probé varias veces la transferencia de archivos a un servidor remoto (no en el mismo lan), usando ambos métodos
time rsync -r tmp server:tmp2
real 0m11.520s
user 0m0.940s
sys 0m0.472s
time (tar cf demo.tar tmp; rsync demo.tar server: ; ssh server 'tar xf demo.tar; rm demo.tar'; rm demo.tar)
real 0m15.026s
user 0m0.944s
sys 0m0.700s
mientras mantiene registros separados de los paquetes de tráfico ssh enviados
wc -l rsync.log rsync+tar.log
36730 rsync.log
37962 rsync+tar.log
74692 total
En este caso, no puedo ver ninguna ventaja en menos tráfico de red usando rsync + tar, que se espera cuando el mtu predeterminado es 1500 y mientras los archivos tienen un tamaño de 10k. rsync + tar generó más tráfico, fue más lento durante 2-3 segundos y dejó dos archivos basura que tuvieron que limpiarse.
Hice las mismas pruebas en dos máquinas en el mismo lan, y allí el rsync + tar tuvo tiempos mucho mejores y mucho menos tráfico de red. Asumo la causa de los marcos gigantes.
Quizás rsync + tar sería mejor que solo rsync en un conjunto de datos mucho más grande. Pero, francamente, no creo que valga la pena, necesita doble espacio en cada lado para empacar y desempacar, y hay un par de otras opciones como ya he mencionado anteriormente.