Diferencia entre revisiones de «Rsnapshot»
(Página creada con «= Introducción = '''<code>[https://rsnapshot.org/ rsnapshot]</code>''' es una herramienta poderosa y fácil de usar para gestionar copias de seguridad incrementales en Linux, basada en <code>rsync</code>. Su principal ventaja es que utiliza '''enlaces duros''' para almacenar copias de seguridad, lo que minimiza el uso de espacio para archivos sin cambios.») |
|||
(No se muestran 3 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
= Introducción = | = Introducción = | ||
''' | '''[https://rsnapshot.org/ rsnapshot]''' es una herramienta poderosa y fácil de usar para gestionar copias de seguridad incrementales en Linux, basada en [[rsync]]. Su principal ventaja es que utiliza '''enlaces duros''' para almacenar copias de seguridad, lo que minimiza el uso de espacio para archivos sin cambios. | ||
= Instalación = | |||
La instalación es sencilla, ya que está disponible en la mayoría de los repositorios:<blockquote>sudo dnf install rsnaphost</blockquote> | |||
= Configuración = | |||
La configuración se centra en el fichero:<blockquote>/etc/rsnapshot.conf</blockquote>Dentro solo tenemos que cambiar varios parámetros, vamos a poner un ejemplo en el que salvaremos unos directorios a un segundo disco montado en "/mnt/backup" y en un servidor remoto conectado por [[SSH]]. | |||
=== Ruta de destino === | |||
El primer valor es el destino que por defecto es "/var/cache/rsnapshot/" y lo cambiaremos a:<blockquote>snapshot_root /mnt/backup/rsnapshot/</blockquote> | |||
=== EXTERNAL PROGRAM DEPENDENCIES === | |||
Seguidamente, veremos los programas de dependencias como cp, rm o ssh que hace servir, es por eso que descomentamos la líneas de ssh i du para la conexión remota y el cálculo de uso de disco. <blockquote>cmd_ssh /usr/bin/ssh</blockquote>y<blockquote>cmd_du /usr/bin/du</blockquote>respectivamente. | |||
Antes de seguir una '''nota importante''', NO han de haber espacios en blanco, las separaciones de los parámetros son tabulaciones. | |||
=== BACKUP LEVELS / INTERVALS === | |||
Seguimos con los intervalos de copias, es decir, cuantas copias ha de guardar antes de borrar la primera o BACKUP LEVELS / INTERVALS. | |||
Por defecto viene con diferentes etiquetas de niveles:<blockquote>retain alpha 6 | |||
retain beta 7 | |||
retain gamma 4 | |||
#retain delta 3</blockquote> | |||
Esto quiere decir que la etiqueta "alpha" guardará hasta 6 capturas, "beta" guardará 7 y "gamma" guardará 4. | |||
Pongamos el caso que quiero tener una nueva definición que guardará 10 capturas locales, para eso añadimos:<blockquote>retain local 10</blockquote> | |||
Es importante recordar que los espacios entre palabras han de ser tabulaciones. | |||
=== GLOBAL OPTIONS === | |||
Pasamos a las '''Opciones globales''' donde podemos ver el nivel de informe y de información que puede darnos. El modo "verbose" y el "loglevel" lo vamos a dejar igual, pero vamos a descomentar y modificar la ubicación de donde guardará estos informes para dejarlo en el mismo directorio donde se hacen las copias locales. <blockquote>logfile /mnt/backup/rsnapshot/log/rsnapshot.log</blockquote>El resto de los valores los dejaremos por defecto y pasaremos a los puntos de copia. | |||
=== BACKUP POINTS / SCRIPTS === | |||
Los puntos de copia son los directorios de los que se hará captura y los scripts serán los programas que se ejecutarán. | |||
Primero vamos a especificar las copias locales que viene definidas después de #LOCALHOST. Por defecto son:<blockquote>backup /home/ localhost/ | |||
backup /etc/ localhost/ | |||
backup /usr/local/ localhost/</blockquote>Pero podemos añadir:<blockquote>backup /var/www/ localhost/ | |||
backup /srv/ localhost/</blockquote>Como ejemplo de captura del directorio web y de directorios compartidos. Vuelvo a recordar que hay que utilizar tabulaciones como separaciones y que ha de acabar con el carácter "/". | |||
También podemos hacer un respaldo de otro servidor al nuestro, por ejemplo, un servidor que conectaremos por [[SSH]], pongo dos ejemplos, uno con el puerto por defecto (22) y otro con el puerto específico 2202<blockquote># Copias remotas por SSH (puerto estándar) | |||
backup admin@servidor1:/etc/ servidor_remoto1/ | |||
# Copias remotas por SSH con puerto personalizado | |||
backup admin@servidor2:/srv/ servidor_remoto2/ -p 2202</blockquote>Como muestro, haremos los respaldos del directorio "/etc" del "servidor_remoto1" y del directorio "/srv" del "servidor_remoto2" que utiliza el puerto "2202", ambos desde el usuario "admin" | |||
Como podemos ver, el formato utilizado es:<blockquote>backup <origen> <destino> [opciones]</blockquote> | |||
Ahora guardamos y cerramos el fichero y comprobamos que está bien definido con:<blockquote>sudo rsnapshot configtest</blockquote>Con este comando podemos comprobar que está bien redactado y, en caso contrario, avisa de los errores. | |||
= Uso = | |||
Para lanzar la primera captura, podemos ejecutar:<blockquote>sudo rsnapshot local</blockquote>Esto lanzará el respaldo con etiqueta "local" que hemos generado antes y de la que conservará 10 copias y que podemos ver el progreso con:<blockquote>tail -f /mnt/backup/rsnapshot/log/rsnapshot.log</blockquote>Ahora vamos a lanzar el respaldo en modo depuración ( verbose ), vamos a poner el ejemplo de respaldo "gamma"<blockquote>sudo rsnapshot -v gamma</blockquote> | |||
= Programando copias = | |||
Ahora programamos la tarea, por ejemplo, para cada día a las 2:00, para eso abrimos el editor de [[crontab]]:<blockquote>sudo crontab -e</blockquote>Y añadimos: | |||
<nowiki>#</nowiki>Respaldo con rsnapshot | |||
0 2 * * * /usr/bin/rsnapshot local | |||
== Restaurando contenido == | |||
Resulta que un administrador desea recuperar el directorio "/var/www/wiki" que modificó por error, para recuperar el último respaldo con [[rsync]]:<blockquote>sudo rsync -av //mnt/backup/rsnapshot/local.0/localhost/var/www/wiki/ /var/www/wiki/ </blockquote> | |||
'''Nota - "local.0"''' indica la última rotación, la anterior sería local.1 y la anterior local.2.... | |||
'''Explicación de las opciones''': | |||
* <code>-a</code>: Modo archivo (mantiene permisos, propietarios, etc.). | |||
* <code>-v</code>: Modo detallado para ver el progreso. | |||
* <code>/</code>: Asegúrate de incluir la barra al final de la ruta de origen para copiar solo el contenido. | |||
= Diferentes configuraciones = | |||
Todo lo explicado anterior es para una configuración global, es decir, por defecto y para todos los usuarios, pero si queremos tener una configuración independiente se puede especificar con:<blockquote>sudo rsnapshot -c /opt/servidor/rsnapshot.conf alpha</blockquote>Con lo que cargaremos la configuración apartada en "/opt/servidor" y con etiqueta "alpha". | |||
Esto es muy útil si queremos tener "perfiles" de copias y aplicarlas en diferentes destinos locales o remotos. |
Revisión actual - 12:05 10 dic 2024
Introducción
rsnapshot es una herramienta poderosa y fácil de usar para gestionar copias de seguridad incrementales en Linux, basada en rsync. Su principal ventaja es que utiliza enlaces duros para almacenar copias de seguridad, lo que minimiza el uso de espacio para archivos sin cambios.
Instalación
La instalación es sencilla, ya que está disponible en la mayoría de los repositorios:
sudo dnf install rsnaphost
Configuración
La configuración se centra en el fichero:
/etc/rsnapshot.conf
Dentro solo tenemos que cambiar varios parámetros, vamos a poner un ejemplo en el que salvaremos unos directorios a un segundo disco montado en "/mnt/backup" y en un servidor remoto conectado por SSH.
Ruta de destino
El primer valor es el destino que por defecto es "/var/cache/rsnapshot/" y lo cambiaremos a:
snapshot_root /mnt/backup/rsnapshot/
EXTERNAL PROGRAM DEPENDENCIES
Seguidamente, veremos los programas de dependencias como cp, rm o ssh que hace servir, es por eso que descomentamos la líneas de ssh i du para la conexión remota y el cálculo de uso de disco.
cmd_ssh /usr/bin/ssh
y
cmd_du /usr/bin/du
respectivamente.
Antes de seguir una nota importante, NO han de haber espacios en blanco, las separaciones de los parámetros son tabulaciones.
BACKUP LEVELS / INTERVALS
Seguimos con los intervalos de copias, es decir, cuantas copias ha de guardar antes de borrar la primera o BACKUP LEVELS / INTERVALS.
Por defecto viene con diferentes etiquetas de niveles:
retain alpha 6
retain beta 7
retain gamma 4
- retain delta 3
Esto quiere decir que la etiqueta "alpha" guardará hasta 6 capturas, "beta" guardará 7 y "gamma" guardará 4.
Pongamos el caso que quiero tener una nueva definición que guardará 10 capturas locales, para eso añadimos:
retain local 10
Es importante recordar que los espacios entre palabras han de ser tabulaciones.
GLOBAL OPTIONS
Pasamos a las Opciones globales donde podemos ver el nivel de informe y de información que puede darnos. El modo "verbose" y el "loglevel" lo vamos a dejar igual, pero vamos a descomentar y modificar la ubicación de donde guardará estos informes para dejarlo en el mismo directorio donde se hacen las copias locales.
logfile /mnt/backup/rsnapshot/log/rsnapshot.log
El resto de los valores los dejaremos por defecto y pasaremos a los puntos de copia.
BACKUP POINTS / SCRIPTS
Los puntos de copia son los directorios de los que se hará captura y los scripts serán los programas que se ejecutarán.
Primero vamos a especificar las copias locales que viene definidas después de #LOCALHOST. Por defecto son:
backup /home/ localhost/
backup /etc/ localhost/
backup /usr/local/ localhost/
Pero podemos añadir:
backup /var/www/ localhost/ backup /srv/ localhost/
Como ejemplo de captura del directorio web y de directorios compartidos. Vuelvo a recordar que hay que utilizar tabulaciones como separaciones y que ha de acabar con el carácter "/". También podemos hacer un respaldo de otro servidor al nuestro, por ejemplo, un servidor que conectaremos por SSH, pongo dos ejemplos, uno con el puerto por defecto (22) y otro con el puerto específico 2202
# Copias remotas por SSH (puerto estándar)
backup admin@servidor1:/etc/ servidor_remoto1/
- Copias remotas por SSH con puerto personalizado
backup admin@servidor2:/srv/ servidor_remoto2/ -p 2202
Como muestro, haremos los respaldos del directorio "/etc" del "servidor_remoto1" y del directorio "/srv" del "servidor_remoto2" que utiliza el puerto "2202", ambos desde el usuario "admin" Como podemos ver, el formato utilizado es:
backup <origen> <destino> [opciones]
Ahora guardamos y cerramos el fichero y comprobamos que está bien definido con:
sudo rsnapshot configtest
Con este comando podemos comprobar que está bien redactado y, en caso contrario, avisa de los errores.
Uso
Para lanzar la primera captura, podemos ejecutar:
sudo rsnapshot local
Esto lanzará el respaldo con etiqueta "local" que hemos generado antes y de la que conservará 10 copias y que podemos ver el progreso con:
tail -f /mnt/backup/rsnapshot/log/rsnapshot.log
Ahora vamos a lanzar el respaldo en modo depuración ( verbose ), vamos a poner el ejemplo de respaldo "gamma"
sudo rsnapshot -v gamma
Programando copias
Ahora programamos la tarea, por ejemplo, para cada día a las 2:00, para eso abrimos el editor de crontab:
sudo crontab -e
Y añadimos:
#Respaldo con rsnapshot
0 2 * * * /usr/bin/rsnapshot local
Restaurando contenido
Resulta que un administrador desea recuperar el directorio "/var/www/wiki" que modificó por error, para recuperar el último respaldo con rsync:
sudo rsync -av //mnt/backup/rsnapshot/local.0/localhost/var/www/wiki/ /var/www/wiki/
Nota - "local.0" indica la última rotación, la anterior sería local.1 y la anterior local.2....
Explicación de las opciones:
-a
: Modo archivo (mantiene permisos, propietarios, etc.).-v
: Modo detallado para ver el progreso./
: Asegúrate de incluir la barra al final de la ruta de origen para copiar solo el contenido.
Diferentes configuraciones
Todo lo explicado anterior es para una configuración global, es decir, por defecto y para todos los usuarios, pero si queremos tener una configuración independiente se puede especificar con:
sudo rsnapshot -c /opt/servidor/rsnapshot.conf alpha
Con lo que cargaremos la configuración apartada en "/opt/servidor" y con etiqueta "alpha".
Esto es muy útil si queremos tener "perfiles" de copias y aplicarlas en diferentes destinos locales o remotos.