Este artículo tiene algunas sugerencias útiles para rsync
al menos:
Problemas
Usando rsync --sparse works
, pero provoca una gran cantidad de escrituras de disco innecesarias. Cambiar 10 bytes en 50GB de largo (1GB usado) debería causar que solo se escriban uno o dos bloques, esto hace que se escriba 1GB. Esto es lento y posiblemente no sea bueno para la longevidad de los discos.
Usando rsync --inplace
trabajos, pero crea archivos no dispersos.
No puede usar --sparse y --inplace al mismo tiempo :-( esto no está permitido por rsync. Rsync: --sparse no puede usarse con --inplace
Solución
Si usa --inplace para actualizar un archivo disperso preexistente, el archivo permanecerá disperso y solo tendrá una pequeña cantidad de bloques escritos. Es solo cuando rsync --inplace crea un archivo que lo hace no disperso.
Entonces, la solución es crear un archivo correspondiente, correctamente alargado, vacío y disperso en la máquina de destino para cada archivo en la máquina de origen, si el archivo aún no está presente en la máquina de destino.
Luego, rsync --inplace funcionará según lo previsto, dejando dispersos los archivos dispersos y solo escribiendo los bloques modificados en el disco.
Entonces, si lo leí correctamente, primero desea crear un archivo disperso vacío en el destino. Puedes hacer esto con
truncate -s 3G filename
Luego puede usar rsync --inplace
para copiar los archivos. Esto solo debería ser necesario una vez.
El mismo artículo sugiere usar Virtsync, que es
una herramienta de línea de comandos de Linux comercial de $ 49 para sincronizar el contenido de archivos enormes (como imágenes de discos de máquinas virtuales y bases de datos).
Esta podría ser la mejor solución si está dispuesto a pagarla, ya que parece estar escrita específicamente para este tipo de situación.