Curso de Linux / Crear copias con tar y verificar la restauración

La compresión busca reducir el tamaño de los datos, y la copia de seguridad es un proceso que permite almacenar los datos de un momento deseado para poder recuperarlos. No se debe juzgar el éxito de la copia de seguridad únicamente por la creación del archivo; se debe restaurar realmente en otra ubicación y verificar el contenido, los permisos y la disponibilidad de la aplicación.

Aquí se restaura manualmente la copia de seguridad en una ruta separada y se comparan el contenido y los permisos. Aprenda a automatizar este procedimiento aprobado en Copia de seguridad programada y verificación de estado independiente.

Distinguir compresión, archivado y sincronización

Tarea Objetivo principal Precauciones
Archivo Almacenar varios archivos y metadatos en un solo paquete Verificar metadatos a almacenar y permisos de restauración
Compresión Almacenar la misma información en una forma más pequeña No significa cifrado ni una copia separada
Sincronización Alinear el estado actual del original y del destino Las eliminaciones o cambios incorrectos también pueden propagarse
Copia de seguridad Recuperación de puntos en el pasado y conservación separada Prueba de restauración·Tiempo de conservación·Necesidad de un almacén separado

Si solo copia en otra carpeta del mismo disco, puede ayudar con archivos sobrescritos por error, pero podrían perderse también en caso de falla del disco. Diseñe un almacenamiento independiente del original, copias en varios momentos, y copias que no puedan ser modificadas fácilmente por un compromiso de cuenta o ransomware. Si se requiere cifrado, gestione la clave de almacenamiento de manera segura y asegúrese de que el responsable de recuperación tenga acceso.

Crear materiales de práctica seguros

lab=$(mktemp -d "$HOME/linux-backup-lab.XXXXXX")
mkdir -p "$lab/source/docs" "$lab/archives" "$lab/restore"
printf "version 1\n" > "$lab/source/docs/note.txt"
printf "enabled=yes\n" > "$lab/source/settings.conf"
chmod 600 "$lab/source/settings.conf"
find "$lab/source" -type f -print

Verifique en la salida si la ruta de trabajo está debajo de un nuevo directorio temporal. Se separan el original, el archivo comprimido y el directorio de restauración para evitar la recirculación de archivos de copia de seguridad dentro del original. El ejemplo solo trata archivos de usuario comunes, por lo que no es una práctica para verificar la propiedad de root, ACL·atributos extendidos o la consistencia de bases de datos.

Crear tar.gz con ruta relativa y comprobar el listado

tar -czf "$lab/archives/source.tar.gz" -C "$lab" source
tar -tzf "$lab/archives/source.tar.gz"
(cd "$lab/archives" && sha256sum source.tar.gz > source.tar.gz.sha256)
(cd "$lab/archives" && sha256sum -c source.tar.gz.sha256)

-c es para creación, -z para compresión gzip, -f luego es el nombre del archivo comprimido. Cambia el directorio de trabajo base con -C y agrega source/... en lugar de rutas absolutas. Verifique si los dos archivos esperados están en la lista y si OK aparece en la verificación de suma de comprobación. La suma de comprobación confirma si el archivo ha cambiado desde el registro, pero no garantiza la autenticidad frente a un atacante capaz de modificar incluso la suma de comprobación con los mismos permisos.

Restaurar en otra ubicación y comparar con el original

tar -xzf "$lab/archives/source.tar.gz" -C "$lab/restore"
diff -r "$lab/source" "$lab/restore/source"
stat -c "%a %n" "$lab/source/settings.conf" "$lab/restore/source/settings.conf"
cat "$lab/restore/source/docs/note.txt"

Si diff termina en 0 sin mostrar nada, el contenido del archivo explorado es igual. Compare los permisos 600 del archivo de configuración con stat y verifique version 1 en el archivo restaurado. diff no verifica metadatos como propiedad, ACL o atributos extendidos, por lo que en la recuperación real del servicio, los elementos necesarios deben verificarse por separado.

Si cambia note.txt del original a version 2 y ejecuta diff nuevamente, deberían aparecer las diferencias. El hecho de que la versión 1 todavía esté en la copia de seguridad es la diferencia entre "sincronizar con el estado actual" y "recuperación a un punto anterior". Después de la verificación, no sobrescriba el original, sino revise los resultados mientras lo conserva en el directorio de restauración.

Archivos comprimidos no confiables y servicios en ejecución

Antes de extraer un archivo de origen desconocido, revise su listado y las precauciones del manual de GNU tar. Compruebe rutas inesperadas, enlaces simbólicos, cantidad y tamaño de archivos, y utilice una cuenta normal y un directorio nuevo. El listado o una suma de comprobación no garantizan que el contenido sea seguro; para material no confiable, use un entorno aislado del sistema importante. No extraiga como administrador sobre el directorio raíz.

Si comprime el directorio de almacenamiento de una base de datos en funcionamiento solo con tar, los archivos de distintos momentos pueden mezclarse. Use los procedimientos de copia de seguridad lógica, copia de seguridad física, detención o condiciones de instantáneas consistentes que proporciona la base de datos. También defina el tiempo de recuperación ante desastres y el rango de pérdida de datos aceptable, y evalúe con el tiempo real de restauración.

Al usar rsync, primero vea la lista de cambios planeados

rsync -av --dry-run "$lab/source/" "$lab/restore/source/"

En un entorno donde rsync está instalado, --dry-run muestra la lista de cambios planeados. / después de la fuente tiene la importante implicación de que se dirige al contenido del directorio, no al directorio mismo. --delete puede eliminar archivos que solo están en el destino, por lo que no se incluyó en este ejemplo. Verifique la ruta del destino de sincronización y, después de mantener una copia de seguridad en un momento separado, aplique solo las acciones necesarias.

Documentación oficial