110 votos

Cómo copiar un gran número de archivos de forma rápida entre dos servidores

Necesito transferir una gran cantidad de archivos mp3 entre dos sirve (Ubuntu). Por la enorme me refiero a cerca de un millón de archivos que son en promedio de 300 kb. He probado con scp , pero habría tomado alrededor de una semana. (alrededor de 500 KB/s) Si puedo transferir un archivo único por HTTP, tengo 9-10 MB/s, pero no sé cómo transferir todos ellos.

Es allí una manera de transferir todos ellos rápidamente?

140voto

Scott Pack Puntos 11452

Yo recomendaría el alquitrán. Cuando el archivo de los árboles son ya similares, rsync realiza muy bien. Sin embargo, desde rsync va a hacer múltiples análisis pasa en cada archivo y, a continuación, copie los cambios, es mucho más lento que el alquitrán de la copia inicial. Este comando es probable que haga lo que usted quiere. Va a copiar los archivos entre los equipos, así como preservar tanto los permisos de usuario y de grupo/comunidad de bienes.

tar -c /path/to/dir | ssh remote_server 'tar -xvf - -C /absolute/path/to/remotedir'

Como por Mackintosh comentario debajo de este es el comando que se podría utilizar para rsync

rsync -avW -e ssh /path/to/dir/ remote_server:/path/to/remotedir

51voto

Adam Puntos 2432

Disco duro externo y en el mismo día de entrega por mensajero.

17voto

Evan Anderson Puntos 118832

Me gustaría usar rsync.

Si tienes ellos exportan a través de HTTP con los listados de los directorios disponibles, usted podría usar wget y el --espejo argumento, demasiado.

Ya estás viendo que HTTP es más rápido que el SCP porque SCP es el cifrado de todo (y por lo tanto cuello de botella en la CPU). HTTP y rsync se va a mover más rápido debido a que no está cifrado.

Aquí está algo de documentación sobre la configuración de rsync en Ubuntu: https://help.ubuntu.com/community/rsync

Los docs hablar de túnel de rsync sobre SSH, pero si usted está a solo movimiento de datos en una LAN privada no necesita SSH. (Estoy asumiendo que usted está en una LAN privada. Si usted está recibiendo 9-10 MB/seg a través de Internet, a continuación, quiero saber qué tipo de conexiones que tiene!)

Aquí están algunas otras muy básico docs que te permitirá la instalación de un familiar inseguro servidor rsync (w/ sin dependencia de SSH): http://transamrit.net/docs/rsync/

17voto

Icapan Puntos 344

Sin mucha discusión, el uso de netcat, red swissarmy cuchillo. No hay sobrecarga de protocolo, estás copiando en forma directa a la toma de red. Ejemplo

srv1$ tar cfv - *mp3 | nc -w1 remote.server.net 4321

srv2$ nc -l -p 4321 |tar xfv -

8voto

Kyle Brandt Puntos 50907

Con un montón de archivos si tienes que ir con rsync, me gustaría tratar de obtener la versión 3 o superior en ambos extremos. La razón es que un menor versión de enumerar todos los archivos antes de iniciar el traslado. La nueva característica se llama incremental-recursividad.

Un nuevo incremental recursividad algoritmo ahora se utiliza cuando rsync está hablando a otro 3.x versión. Esto inicia la transferencia de ir más rápido (antes de que todos los archivos se han encontrado), y requiere mucha menos memoria. Ver el --recursive opción en la página del manual para algunas restricciones.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: