rsync tiene una forma de hacer copias desconectadas . En otras palabras, rsync puede (conceptualmente) diferenciar un árbol de directorios y producir un archivo de parche que luego puede aplicar en cualquier número de archivos que sean idénticos a la fuente original.
Requiere que invoque rsync con el maestro y el espejo con --write-batch
; Produce un archivo. Luego transfiere este archivo a cualquier número de otros objetivos, y luego aplica el lote a cada uno de esos objetivos usando --read-batch
.
Si mantiene una copia local del último estado sincronizado (es decir, una copia de cómo se ven los espejos en este momento) en la misma máquina que el maestro, puede generar este "parche" en el maestro sin siquiera contactar con ningún espejo:
En el maestro:
rsync --write-batch=my-batch.rsync /master/data /current/mirror
Agregue cualquier otra opción que desee. Esto hará dos cosas:
- Hará un
/current/mirror
cambio para reflejar/master/data
- Se creará un archivo binario parche (o archivo por lotes) llamado
my-batch.rsync
para su uso posterior.
Transfiera el my-batch.rsync
archivo del maestro a todos sus espejos, y luego en los espejos, aplique el parche, por así decirlo:
rsync --read-batch=my-batch.rsync /local/mirror
Beneficios de este enfoque:
- el maestro no está inundado
- no es necesario coordinar / tener acceso al maestro / espejo (s) al mismo tiempo
- diferentes personas con diferentes privilegios pueden hacer el trabajo en el maestro y los espejos.
- no es necesario tener un canal TCP (ssh, netcat, lo que sea; el archivo se puede enviar por correo electrónico ;-))
- los espejos sin conexión se pueden sincronizar más tarde (solo conéctelos en línea y aplique el parche)
- todos los espejos garantizados para ser idénticos (ya que aplican el mismo "parche")
- todos los espejos se pueden actualizar simultáneamente (ya
--read-batch
que solo es intensivo en cpu / io en el espejo en sí)