Copiando miles de archivos de un servidor a otro

Cuando necesitamos replicar una estructura compleja de un servidor a otro, solemos usar rsync o scp para mover los archivos.

El problema es cuando son muchos archivos pequeños, el overhead producido por la creación de cada conexión hace que la transferencia tome mucho tiempo.

Si estamos en una red segura, podemos omitir el scp y utilizar en su lugar netcat para hacer la transferencia.

Para ello debemos abrir dos instancias de netcat, una en el servidor de origen, y otra en el server de destino.

En el server de destino hacemos algo como

nc -l -p 3456 | tar -C /folder/donde/queremos/los/archivos -xzf -

Y en el server fuente

tar -cz /folder/a/copiar | nc maquinadestino 3456

Aquí estamos usando el puerto 3456, si no tenemos root, debemos usar puertos por arriba del 1024, aunque de todas maneras es mejor usarlos, a menos que tengamos algún tipo de firewall en el medio.

Con este metodo solo se abre un streaming de datos, lo que evita el overhead de los archivos pequeños en el stack tcp/ip.

Saludos

Deja tu comentario

%d bloggers like this: