Transferencia de millones de archivos de un servidor a otro


15

Tengo dos servidores Uno de ellos tiene 15 millones de archivos de texto (aproximadamente 40 GB). Estoy tratando de transferirlos a otro servidor. Pensé en comprimirlos y transferir el archivo, pero me di cuenta de que no era una buena idea.

Entonces usé el siguiente comando:

scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt

Pero noté que este comando solo transfiere alrededor de 50,000 archivos y luego se pierde la conexión.

¿Hay alguna solución mejor que me permita transferir la colección completa de archivos? Me refiero a usar algo como rsynctransferir los archivos que no se transfirieron cuando se perdió la conexión. Cuando ocurriera otra interrupción de la conexión, volvería a escribir el comando para transferir archivos, ignorando los que ya se han transferido con éxito.

Esto no es posible con scp, porque siempre comienza desde el primer archivo.

Respuestas:


33

Como dices, usa rsync:

rsync -azP /var/www/html/txt/ username@ip-address:/var/www/html/txt

Las opciones son:

-a : enables archive mode, which preserves symbolic links and works recursively
-z : compress the data transfer to minimise network usage
-P : to display a progress bar and enables you to resume partial transfers

Como @aim dice en su respuesta, asegúrese de tener un seguimiento /en el directorio de origen (en ambos también está bien).

Más información en la página del manual


1
Sugiero agregar la -hbandera para usar unidades legibles por humanos. Y si quieres más verbosidad, tienes algunas opciones: -iy / o -v/ -vv.
nyuszika7h

2
Generalmente hay muy pocas razones para no usar siempre rsync en lugar de scp. Su uso básico es el mismo y ofrece muchas funciones útiles adicionales.
pimlottc

si sshno es una opción para usted y no necesita o desea el cifrado, puede probar mi script s3.amazonaws.com/skaperen/rsend
Skaperen

7

¡Solo use rsync sobre ssh!

rsync -av username@ip:/var/www/html/txt /var/www/html/

Desde la página del manual:

-a , - archivo : Esto es equivalente a -rlptgoD. Es una forma rápida de decir que quiere recurrencia y desea preservar casi todo (con -H siendo una omisión notable). La única excepción a la equivalencia anterior es cuando se especifica --files-from, en cuyo caso -r no está implícito.

-v , - detallado : esta opción aumenta la cantidad de información que se le proporciona durante la transferencia. Por defecto, rsync funciona en silencio. Un solo -v le dará información sobre qué archivos se están transfiriendo y un breve resumen al final. Dos opciones -v le darán información sobre qué archivos se están omitiendo y un poco más de información al final. Solo se deben usar más de dos opciones -v si está depurando rsync.

Tenga en cuenta cómo utilicé barras al final de las carpetas: es importante .


Probablemente debería agregar más información sobre la importancia de la barra diagonal final. Desde la rsyncpágina del manual: "Una barra inclinada final en el origen cambia este comportamiento para evitar crear un nivel de directorio adicional en el destino. Puede pensar en un final / en una fuente que significa" copiar el contenido de este directorio "en lugar de" copie el directorio por nombre ", pero en ambos casos los atributos del directorio contenedor se transfieren al directorio contenedor en el destino".
nyuszika7h

... y el significado de las banderas -av?
MrWhite

0

Use lftp, es mucho más rápido que rsync y es mejor para duplicar sitios web (muchos archivos pequeños). También puede transferir en paralelo usando múltiples conexiones:

lftp -u username,password sftp://ip-address -e 'mirror --only-newer --no-dereference --parallel=5 /remote/path/ /destination/;quit'

Si se rompe una conexión, se volverá a conectar y continuará. Si interrumpe la transferencia, omitirá los archivos existentes y continuará.

http://lftp.yar.ru/


0

Otra forma es canalizando un archivo tar (opcionalmente comprimido) sobre ssh:

tar -czf - ./* | ssh other.host.foo "cd /tmp; tar -xzf-"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.