Respaldo MySQL · 4 min read · Dec 10, 2025

Configurar Rsnapshot, Archivado de Instantáneas y Respaldo de Bases de Datos MySQL en Debian

Configurar Rsnapshot, Archivado de Instantáneas y Respaldo de Bases de Datos MySQL en Debian

Por Nedim Hadzimahmutovic < [email protected] >

Este tutorial te mostrará cómo instalar y configurar Rsnapshot, habilitar el archivado de instantáneas y cómo respaldar bases de datos MySQL en Debian.

Instala el programa usando la utilidad apt-get:

apt-get install rsnapshot

Edita el archivo de configuración:

nano /etc/rsnapshot.conf

Establece snapshot_root a la ruta donde deseas mantener las copias de seguridad:

snapshot_root   /var/cache/rsnapshot/

Configura la lista de directorios/archivos a respaldar.

backup  /etc/           localhost/

Intervalos de Respaldo

Esta sección del archivo de configuración se utiliza solo para definir etiquetas para los intervalos y cuántas instantáneas de cada nivel mantener. La frecuencia con la que se realizan las instantáneas se configura y se ejecuta a través de cron. La palabra clave intervalo es seguida por una etiqueta alfanumérica, seguida de un número, que significa cuántos intervalos (instantáneas) mantener. Las etiquetas de intervalo deben ser únicas y en orden ascendente, el intervalo más pequeño debe listarse primero.

En el siguiente ejemplo, después de 6 instantáneas “horarias” se elimina la más antigua “horaria”. La entrada superior (en este caso “horaria”) se copia de la fuente, mientras que las entradas restantes simplemente enlazan a la última instantánea de un nivel superior.

En otras palabras, para mantener seis copias de seguridad al día (intervalo de cuatro horas), siete copias de seguridad diarias (una semana) y cuatro copias de seguridad semanales (un mes), especifica:

interval        hourly  6
interval        daily   7
interval        weekly  4

Las etiquetas de intervalo “horario”, “diario”, “semanal” pueden cambiarse para adaptarse a tus necesidades, por ejemplo “díasatrás”, “semanasatrás” y “mesesatrás”.

Cada vez que se ejecuta rsnapshot hourly, manualmente o por cron, creará una nueva instantánea, rotará las antiguas y retendrá las 6 más recientes (hourly.0 - hourly.5).

Puntos de Respaldo

Ejemplo de un punto de respaldo dentro del archivo de configuración:

backup      /etc/      localhost/ 

Los puntos de respaldo comienzan con la palabra backup, después de /etc/ está la ruta completa del directorio que se respaldará y localhost es un directorio dentro de snapshot_root. Puedes cambiar localhost por cualquier cosa que asocie al servidor, como el nombre de dominio completamente calificado del servidor.

Además de las rutas completas en el sistema de archivos local, también puedes respaldar sistemas remotos usando rsync sobre ssh. Si tienes ssh instalado y habilitado (a través del parámetro cmd_ssh), puedes especificar una ruta como:

backup      [email protected]:/etc/     example.com/

Ten en cuenta que debes tener habilitados los inicios de sesión basados en clave para el usuario root en example.com, sin frases de contraseña para que esto funcione correctamente./

Scripts de Respaldo

Puedes encontrar muchos ejemplos en el directorio utils que en Debian se encuentra en /usr/share/doc/rsnapshot/examples/utils/.

Los scripts de respaldo se ejecutan con cada intervalo más bajo.

Ejecutando Respaldos a Través de Cron

El archivo cron se encuentra en

/etc/cron.d/rsnapshot

El contenido predeterminado:

# 0 */4     * * *       root    /usr/bin/rsnapshot hourly
# 30 3      * * *       root    /usr/bin/rsnapshot daily
# 0  3      * * 1       root    /usr/bin/rsnapshot weekly
# 30 2      1 * *       root    /usr/bin/rsnapshot monthly

Debes descomentar líneas para activar los respaldos.

El primero le dice a cron que ejecute cron-apt cada 4 horas, lo que coincide con la configuración de intervalo horario en el rsnapshot.conf.

Prueba de configuración:

Cada vez que realices un cambio en el archivo de configuración, haz una prueba de configuración:

rsnapshot configtest

TEN EN CUENTA LAS SIGUIENTES REGLAS:

  • El archivo de configuración requiere tabulaciones entre elementos, los espacios representan argumentos para scripts
  • Los directorios requieren una barra diagonal al final, ejemplo:

correcto: /home/

incorrecto: /home

Archivando instantáneas

cp /usr/share/doc/rsnapshot/examples/utils/rsnaptar /usr/local/bin/

Asegúrate de que tus scripts de respaldo sean propiedad de root y no sean escribibles por nadie más.

chown root.root /usr/local/bin/rsnaptar  
chmod o-w /usr/local/bin/rsnaptar

Edita el script y establece las rutas de los directorios:

nano /usr/local/bin/rsnaptar

Establece TAR_DIR a la ruta donde se archivará la instantánea, y SNAPSHOT_DIR a donde se encuentra la instantánea diaria:

TAR_DIR="/home/user/dvd_backup"
SNAPSHOT_DIR="/var/cache/rsnapshot/daily.0"

Ten en cuenta que el ciclo horario debe completarse para que se cree la instantánea diaria.

Este script admite la encriptación gpg de archivos, para deshabilitarlo comenta la siguiente línea en /usr/local/bin/rsnaptar:

GPG="/usr/bin/gpg"

Programando Ejecución a Través de Cron

nano /etc/cron.daily/rsnaptar

Agrega:

#!/usr/bin/env bash
/usr/local/bin/rsnaptar [email protected]

Notas:

    • este tutorial no utiliza la opción GPG para encriptar archivos, si esto es una necesidad, puedo actualizar el tutorial para incluir la encriptación de archivos para mejor seguridad,
    • por defecto, el script se ejecuta de forma independiente, pero podría modificarse para ejecutarse como un backup_script a través de rsnapshot mismo,

Rsnapshot: Respaldando Bases de Datos MySQL

Instala mysql-client si no está instalado, esto proporcionará la utilidad mysqldump:

# apt-get install mysql-client
# cp /usr/share/doc/rsnapshot/examples/utils/backup_mysql.sh /usr/local/bin/

Asegúrate de que tus scripts de respaldo sean propiedad de root y no sean escribibles por nadie más.

chown root.root /usr/local/bin/backup_mysql.sh  
chmod o-w /usr/local/bin/backup_mysql.sh

Este script está diseñado solo para respaldar todas las bases de datos en un solo archivo.

Edita el script:

nano /usr/local/bin/backup_mysql.sh

Reemplaza

/usr/bin/mysqldump --all-databases > mysqldump_all_databases.sql

con

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf --all-databases > mysqldump_all_databases.sql

Si necesitas volcar una sola base de datos, usa la línea a continuación:

/usr/bin/mysqldump --defaults-file=/etc/mysql/debian.cnf DATABASE > DATABASE.SQL

Agregar Script a Rsnapshot

Edita la configuración de rsnapshot:

nano /etc/rsnapshot.conf

Bajo PUNTOS DE RESPALDO / SCRIPTS agrega lo siguiente:

backup_script       /usr/local/bin/backup_mysql.sh  localhost/mysqldump/

Prueba la configuración:

rsnapshot configtest
Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.