Si un conjunto de archivos (varios GB de gran tamaño cada uno) y cada uno cambia ligeramente todos los días (en lugares aleatorios, no solo la información adjunta al final), ¿cómo se puede copiar de manera eficiente? Quiero decir, en el sentido de que solo las partes modificadas se actualizan, y no todos los archivos. Eso significaría la diferencia entre copiar algunos Kb aquí y allá o algunos GB.
9
diff
lo hagadiff
podría informar diferencias, pero aquí el problema es copiar las pequeñas diferencias.rsync
es mejorRespuestas:
El programa rsync hace exactamente eso. Desde la página del manual:
fuente
rsync
compara los fragmentos de archivos usando sumas de comprobación continuas.rsync -av --progress --partial --inplace arch-test1.qcow2.bak arch-test1.qcow2
Probablemente desee un programa de copia de seguridad de deduplicación moderno. Echa un vistazo a BorgBackup .
Esto hará múltiples copias de seguridad de cada versión de su archivo grande, pero compartirá el contenido común entre las diferentes versiones, por lo que el espacio total utilizado para una versión dada de su archivo grande solo será un poco más que el espacio total en disco para un solo versión, suponiendo que las diferentes versiones solo difieran ligeramente.
fuente
Si tiene alguna IO limitada, use un sistema de archivos como BTRFS o ZFS que admita directamente copias de seguridad incrementales sin tener que encontrar las diferencias en los archivos, como lo que
rsync
tiene que hacer.El uso
rsync
será lento y muy intensivo en IO.Porque si cualquier aplicación que esté escribiendo cambios en los archivos está de alguna manera limitada por IO, el uso
rsync
va a quitar importantes ciclos de IO de la aplicación, esa es la razón por la que existen los archivos. Y si su proceso o sistema de respaldo está limitado por IO,rsync
le quitará ciclos de IO a su ancho de banda de respaldo disponible.Simplemente Google "rsync es lento". Por ejemplo: rsync es muy lento (factor 8 a 10) en comparación con cp al copiar archivos de nfs-share a directorio local
fuente