
Tenemos una aplicación que ha generado hasta ahora más de 540.000 imágenes. Las imágenes se guardan en una estructura de árbol que hasta ahora utiliza 5 millones de Inodos.
Nos gustaría hacer una copia de seguridad de los datos diariamente en un servidor externo remoto. Pensamos en usar rsync pero no estamos seguros de si será la forma más rápida.
¿Tienen alguna recomendación para una estrategia de respaldo eficiente?
Respuesta1
¡Hombre, se necesita tanto tiempo para escanear 5.000.000 de inodos cada día para encontrar archivos que cambiaron!
¿Qué pasaría si hubiera una manera de hacer una copia de seguridad solo de los cambios desde la última copia de seguridad?
Bueno, puedes... coninstantáneas!
El mayor obstáculo para las instantáneas es cambiar a un sistema de archivos que las admita.
En Linux, dos sistemas de archivos de instantáneas bien conocidos son:
- Btrfs– Diseñado para Linux, menos probado en batalla
- ZFS– Portado a Linux, existe desde hace más tiempo.
Ambos sonsistemas de archivos de copia en escritura. Lo que eso significa prácticamente para usted es que realizan un seguimiento de los cambios desde la última instantánea, de modo que cuando envíe la última instantánea al servidor de respaldo, solo se envíen los cambios, pero aún tendrá una copia completa de todas las copias de seguridad diarias que decida. mantener.
Esto significa que, como beneficio adicional, tiene la posibilidad de conservar más de un día de copias de seguridad por poco espacio adicional (solo el espacio en disco utilizado por los cambios cada día) y puede eliminar las copias de seguridad de manera flexible, manteniéndolas semanalmente, mensualmente, o copias de seguridad anuales según lo desee.
Copias de seguridad incrementales Btrfs
Este es un ejemplo de comandos que puede ejecutar para realizar copias de seguridad incrementales y enviarlas a su servidor de copias de seguridad:
# Make a snapshot
btrfs subvolume snapshot -r /app/data /backup/app-data-$(date "+%Y%m%dT%H%M%S%Z")
# Ensure the snapshot is saved
sync
# Find your latest snapshot, referred to as `/backup/app-data-THIS_BACKUP_TIMESTAMP` below
ls -lhtr /backup/
# Send the snapshot since the previous snapshot to the backup server
btrfs send -p /backup/app-data-LAST_BACKUP_TIMESTAMP /backup/app-data-THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "btrfs receive /backup/app-data"
Nota:Excluir -p /backup/app-data-LAST_BACKUP_TIMESTAMP
del último comando si esta es la primera copia de seguridad.
Copias de seguridad incrementales ZFS
Este es un ejemplo de comandos que puede ejecutar para realizar copias de seguridad incrementales y enviarlas a su servidor de copias de seguridad:
# Create a snapshot of the "data" dataset in your "app-pool" zpool
zfs snapshot app-pool/data@$(date "+%Y%m%dT%H%M%S%Z")
# Find your latest snapshot, referred to as `app-pool/data@THIS_BACKUP_TIMESTAMP` below
zfs list -rt snapshot app-pool/data
# Send the snapshot since the previous snapshot to the backup server
zfs send -i app-pool/data@LAST_BACKUP_TIMESTAMP app-pool/data@THIS_BACKUP_TIMESTAMP | ssh BACKUP_USER@BACKUP_SERVER "zfs receive backup-pool/app-data"
Nota:Excluir -i app-pool/data@LAST_BACKUP_TIMESTAMP
del último comando si esta es la primera copia de seguridad.