Estoy haciendo una copia de seguridad de una caja de Linux sobre SMB en un NAS. Monto el NAS localmente y luego sincronizo una gran cantidad de datos (aproximadamente 100 GB). Creo que lleva mucho tiempo hacerlo: más de 12 horas. Esperaría ser mucho más rápido una vez que todo se haya copiado, ya que casi nada cambia de día a día.
¿Hay alguna manera de acelerar esto?
¿Estaba pensando que tal vez rsync piensa que está trabajando con discos duros locales y usa suma de verificación en lugar de comparaciones de tiempo / tamaño? Pero no encontré una manera de forzar comparaciones de fecha y hora. ¿Algo más que pueda verificar?
Respuestas:
Creo que está teniendo un malentendido del algoritmo rsync y cómo se debe aplicar la herramienta.
La ventaja de rendimiento de Rsync proviene de hacer transferencias delta, es decir, mover solo los bits modificados en un archivo. Para determinar los bits modificados, el archivo debe ser leído por los hosts de origen y de destino y debe bloquearse las sumas de verificación para determinar qué bits han cambiado. Esta es la parte "mágica" de rsync: el algoritmo rsync mismo.
Cuando monta el volumen de destino con SMB y usa rsync para copiar archivos de lo que Linux "ve" como una fuente local y un destino local (ambos montados en esa máquina), la mayoría de las versiones modernas de rsync cambian al modo de copia 'archivo completo' , y apague el algoritmo de copia delta. Esto es un "triunfo" porque, con el algoritmo delta-copy activado, rsync leería todo el archivo de destino (a través del cable del NAS) para determinar qué bits del archivo han cambiado.
La "forma correcta" de usar rsync es ejecutar el servidor rsync en una máquina y el cliente rsync en la otra. Cada máquina leerá archivos de su propio almacenamiento local (que debería ser muy rápido), acordará qué bits de los archivos han cambiado y solo transferirá esos bits. De la misma manera que estás usando cantidades rsync de un 'cp' inventado. Podrías lograr lo mismo con 'cp' y probablemente sería más rápido.
Si su dispositivo NAS admite la ejecución de un servidor rsync (o cliente), entonces está en el negocio. Si solo va a montarlo en la máquina fuente a través de SMB, entonces también podría usar 'cp' para copiar los archivos.
fuente
Parece que las marcas de tiempo son su problema, ya que esta página se relaciona:
http://www.goodjobsucking.com/?p=16
La solución propuesta es agregar
a los parámetros rsync.
fuente
Sí, puedes acelerarlo. Debe hacer que el origen o el destino se vean como una máquina remota, digamos dirigiéndolo como "
localhost:
".Usted declaró que está montando el recurso compartido SMB localmente. Esto hace que el origen o el destino parezca una ruta local a rsync. La página de manual de rsync indica que las copias donde el origen y el destino son rutas locales copiarán todo el archivo. Esto se afirma en el párrafo para la opción "--whole-file" en la página del manual. Por lo tanto, el algoritmo delta no se usa. El uso de la "
localhost:
" solución alternativa restaurará la funcionalidad del algoritmo delta y acelerará las transferencias.fuente
rsync
usa la marca de fecha y hora para verificar si un archivo necesita o no actualizarse. Si necesita una actualización, rsync dividirá el archivo en fragmentos y comparará las sumas de verificación. Eso significa que leerá todo el archivo para poder hacer eso. Por lo tanto, si no tiene un demonio rsync ejecutándose de forma remota, deberá transferir todo el archivo de todos modos para realizar la fragmentación y la suma de comprobación para que pueda transferirlo de inmediato. Por lo tanto, la "solución" descrita aquí no le compra nada en este escenario.Pensé que arrojaría mi 2p aquí.
Mi hermano acaba de instalar un Buffalo NAS en la red de su oficina. Ahora está buscando copias de seguridad fuera del sitio, por lo que si la oficina se incendia, al menos todavía tiene todos sus documentos comerciales en otros lugares (a cientos de millas de distancia).
Mi primer obstáculo fue obtener el VPS que tiene (un pequeño servidor privado virtual de Linux, nada demasiado robusto) para marcar como usuario VPN en su enrutador de banda ancha (está usando un DrayTek para esto) para que pueda ser parte de él. su VPN, y así puede acceder al NAS directamente, de manera segura. Lo tengo ordenado y trabajando brillantemente.
El siguiente problema fue transferir los archivos del NAS al servidor VPS. Comencé haciendo un montaje de Samba y me encontré exactamente con el mismo problema (o incluso peor) que has descrito. Hice un rsync de ejecución en seco y me llevó más de 1 hora y 30 minutos solo averiguar qué archivos iba a transferir, porque como dice Evan, bajo este método, el otro extremo no es rsync, por lo que tiene que hacer muchos archivos el sistema llama / lee en el montaje Samba (a través de una conexión PPTP / tunelizada, con un tiempo de ida y vuelta de aproximadamente 40 ms). Completamente inviable.
Poco sabía que el búfalo en realidad ejecuta un demonio rsync, por lo que, usando eso, todo el proceso en seco tarda solo 1 minuto y 30 segundos para 87k archivos con un total de 50 Gb. Obviamente, transferir 50 Gb de archivos (desde un NAS que está en un enlace de banda ancha con solo 100k / seg de ancho de banda de salida) es algo completamente diferente (esto tomará varios días) pero, una vez que se complete la sincronización inicial, cualquier copia de seguridad incremental debería ser Aligeramiento de la grasa (sus datos no van a cambiar mucho a diario).
Mi sugerencia es usar un NAS decente, que admita rsync, por las razones que Evan ha dicho anteriormente. Resolverá todos tus problemas.
fuente
Huele como si tuvieras un NAS más barato. También podría ser de su ancho de banda de red ...
Los NAS de consumo "estándar" son realmente débiles cuando se trata de E / S pesadas, que es lo que está tratando de hacer aquí. También podría ser un interruptor barato que conecta su PC y su NAS que no es lo suficientemente fuerte como para manejar todos los paquetes correctamente.
fuente
intente esto, cree que aleast le ofrece un 10% más de velocidad con la que obtiene http://www.thegeekstuff.com/2009/09/linux-remote-backup-using-rsnapshot-rsync-utility/
fuente
Hay dos fuentes potenciales del problema: o utiliza opciones de línea de comando incorrectas o su NAS tiene problemas con la marca de tiempo (o ambas :-). Consulte este hilo "rsync to NAS copia todo cada vez" para obtener más información.
fuente