Estaba buscando en la red una manera de hacer una copia de seguridad completa de mi máquina Linux (no de un servidor) y restaurar todo en cualquier momento.
Comencé con la guía más vinculada en cada hilo,http://www.mikerubel.org/computers/rsync_snapshots/index.htmly pensé que este tipo de copia de seguridad era una copia de seguridad incremental, después de otro día de investigación encontré ¿Cuál es la diferencia entre copia de seguridad diferencial e incremental en términos del comando rsync?y otras discusiones, pero no estoy seguro de lo que realmente estoy haciendo.
Siguiendo la guía y las publicaciones, decidí probar con una sola carpeta (antes de realizar la copia de seguridad de todo el sistema) llamada fuente
rsync -av --delete /home/user/source /home/user/backup/backup0/
luego agregué y eliminé algunos archivos e hice la copia de seguridad tres veces más
rsync -avH --delete --link-dest=/home/user/backup/backup0 /home/user/source /home/user/backup/backup1
rsync -avH --delete --link-dest=/home/user/backup/backup1 /home/user/source /home/user/backup/backup2
rsync -avH --delete --link-dest=/home/user/backup/backup2 /home/user/source /home/user/backup/backup3
Pensé que con este tipo de respaldo iba a tener algo como:
backup0-->backup1-->backup2-->backup3
Entonces, si quería restaurar el contenido de "backup3", se necesitaban los números 1 y 2, pero los eliminé y luego restauré el backup3, y todo volvió a su lugar. Entonces corrí
user@user:/backup$ du -sh *
450M backup0
620K backup1
624K backup2
628K backup3
Parece una copia de seguridad diferencial, no incremental, pero pensé que para ser diferencial tendría que configurarla para cada copia de seguridad.
--link-dest=/home/user/backup/backup0
Mi pregunta es: ¿Me estoy equivocando en algo? ¿Existe una mejor manera de hacer una copia de seguridad de un sistema completo usando rsync?
PD: el dispositivo de destino será una unidad externa con el mismo sistema de archivos.
Respuesta1
Con los enlaces físicos, se pueden almacenar varias copias de un archivo y solo ocupa el espacio en disco de una copia. Lo que está viendo es du
tener cuidado de no contar dos veces el espacio que ocupan varios enlaces físicos al mismo archivo.
Si tuvieras que ejecutar:
du -sh backup3
Descubrirá que backup3 ocupa aproximadamente 450 M. Si tu corres:
du -sh backup2 backup3
Descubrirá que la copia de seguridad2 ocupa unos 450 millones, mientras que la copia de seguridad3 ocupa muy poco. Esto se debe a que du
primero revisó backup2 y contó su espacio. Cuando revisó la copia de seguridad3, solo contó el nuevo espacio en disco utilizado y no los enlaces duros a los archivos que ya se habían contado en la copia de seguridad2.
Cada copia de seguridad está completa y tiene todo lo que necesitas para realizar una restauración completa. Sin embargo, debido a que los archivos están vinculados de forma física, el espacio total en disco utilizado es mucho menor.
Ejemplo
Puse un archivo de 1,2 MB en el directorio src/
. Creemos dos copias de seguridad:
$ rsync -a src backup1
$ rsync -a --link-dest=../backup1 src backup2
Veamos qué tan grande es backup2:
$ du -sh backup2
1.2M backup2
backup2 tiene 1,2 megabytes. Ahora veamos qué tan grandes son backup1 y backup2:
$ du -sh backup1 backup2
1.2M backup1
8.0K backup2
Ahora, backup2 parecería tener solo 8k. Esto se debe a que los enlaces físicos no se cuentan dos veces.
Respuesta2
Los enlaces duros son la mejor manera de ahorrar espacio en disco. En lugar de escribir scripts con rsync, uso un contenedor que hace este trabajo:Copia de seguridad de mariposa.
Este contenedor utiliza rsync puro y transforma rsync en una herramienta real de copia de seguridad/restauración (también tiene modos de archivo/exportación).
Además, en sus opciones tiene la --mode/-m
bandera que permite seleccionar el modo de copia de seguridad entreincrementaloDiferencial.
El modo diferencial mantendrá la primera copia de seguridad completa y luego todas las copias de seguridad siguientes se conectarán a ella, ahorrando mucho espacio gracias a los enlaces físicos.
Un ejemplo:
$ bb backup --computer mypc --destination /backup --data User --type Unix
--mode Differential