Búsqueda de sitios web

Configurar el servidor de respaldo usando Rsnapshot en Linux


Tutorial de Rsnapshot para principiantes

Esta guía explica qué es Rsnapshot, cómo instalar Rsnapshot en Linux y cómo configurar un servidor de respaldo usando Rsnapshot en Linux.

1. Introducción

Rsnapshot es una utilidad de instantáneas del sistema de archivos basada en rsync para sistemas operativos Linux y similares a Unix. Le permite crear fácilmente instantáneas periódicas de máquinas locales y remotas a través de ssh.

Lo bueno de rsnapshot es que hace un uso extensivo de enlaces físicos siempre que sea posible, para reducir en gran medida el espacio en disco requerido.

Dado que rsnapshot solo conserva una cantidad fija de instantáneas, la cantidad de espacio en disco utilizado no aumentará continuamente.

Rnapshot es una aplicación de copia de seguridad gratuita y de código abierto que admite copias de seguridad incrementales. Está escrito completamente en Perl y debería funcionar en la mayoría de los sistemas tipo Unix.

Sin más preámbulos, sigamos adelante y veamos cómo instalar, configurar y configurar el servidor de respaldo usando Rsnapshot en Linux.

2. Instale Rsnapshot en Linux

Rsnapshot está empaquetado para muchas distribuciones de Linux.

Instalar Rsnapshot en Alpine Linux:

sudo apk add rsnapshot rsync

Instalar Rsnapshot en Arch Linux, EndeavourOS y Manjaro Linux:

sudo pacman -S rsnapshot rsync

Instalar Rsnapshot en Debian, Ubuntu, Linux Mint, Pop_OS!:

sudo apt install rsnapshot rsync

Instalar Rsnapshot en CentOS, Fedora, RHEL, AlmaLinux, Rocky Linux:

Rsnapshot no está disponible en los repositorios predeterminados de los sistemas operativos empresariales como CentOS, RHEL, AlmaLinux y Rocky Linux. Debe habilitar el repositorio [EPEL] para poder instalar Rsnapshot.

sudo dnf install epel-release

Luego, instale Rsnapshot usando el comando:

sudo dnf install rsnapshot rsync

Instalar Rsnapshot en openSUSE:

sudo zypper install rsnapshot rsync

3. Configurar el servidor de respaldo usando Rsnapshot en Linux

A los efectos de esta guía, utilizaré dos sistemas de prueba.

Uno es el servidor de respaldo que se ejecuta con AlmaLinux 8 y el otro actúa como sistema cliente. El cliente se ejecuta con el escritorio Fedora 34.

Los detalles del servidor y cliente de respaldo se detallan a continuación.

Servidor de respaldo:

  • OS : AlmaLinux 8 sistema mínimo de 64 bits
  • Dirección IP: 192.168.122.25/24
  • Directorio raíz de Rsnapshot: /rsnapbackup
  • Directorio para realizar la copia de seguridad: /home/ostechnix/data/

Cliente:

  • SO : Estación de trabajo Fedora 34
  • Dirección IP: 192.168.225.37/24
  • Directorio para realizar la copia de seguridad: /home/sk/data/

3.1. Configurar la autenticación SSH sin contraseña en el servidor de respaldo

Para realizar una copia de seguridad de los archivos de un sistema cliente remoto a través de SSH, debe configurar la autenticación SSH sin contraseña para los sistemas cliente remotos, de modo que la copia de seguridad se conecte automáticamente al sistema cliente sin contraseña y realice una copia de seguridad de los datos del cliente.

Inicie sesión como usuario root y cree un par de claves SSH en nuestro sistema de servidor de respaldo.

ssh-keygen

No introduzcas ninguna frase de contraseña, porque queremos que estos sistemas puedan conectarse entre sí sin la intervención del usuario:

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:k/yIpwuk2lqEVxW4O0/6evTjquxCcGffQU0Kgm1ZvPk root@alma8
The key's randomart image is:
+---[RSA 3072]----+
|   o.==. o.      |
|  . =o.....      |
|   ... +.        |
|....+ o...       |
|.ooo.o oS.       |
| o.oo +.E+       |
| .o .*..o .      |
| +....ooo        |
|o..o===+..       |
+----[SHA256]-----+

Configurar la autenticación SSH sin contraseña

A continuación, copie la clave pública SSH en todos sus sistemas cliente remotos.

ssh-copy-id sk@192.168.225.37

Reemplace sk y 192.168.225.37 en el comando anterior con el nombre de usuario y la dirección IP de su sistema remoto. Ingrese la contraseña de usuario de su sistema cliente para copiar el archivo de clave pública:

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
sk@192.168.225.37's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'sk@192.168.225.37'"
and check to make sure that only the key(s) you wanted were added.

Aquí, 192.168.225.37 es la dirección IP de mi sistema cliente remoto (es decir, Fedora Desktop).

Ahora puede ingresar por ssh al sistema cliente sin ninguna contraseña.

Repita el comando anterior para copiar la clave pública ssh en todos sus sistemas cliente para configurar la autenticación sin contraseña.

A continuación, necesitamos configurar el servidor de respaldo.

3.2. Configuración del servidor de respaldo Rsnapshot

Cree un directorio raíz de respaldo para guardar todas las copias de seguridad de su servidor y sistemas cliente.

A los efectos de esta guía, utilizo /rsnapbackup/ como directorio raíz de copia de seguridad. Es el directorio donde voy a almacenar todas las copias de seguridad.

Puede definir su propia ubicación de su elección para almacenar las copias de seguridad.

Creemos el directorio de respaldo raíz en nuestro servidor de respaldo con el comando:

mkdir /rsnapbackup

A continuación, debemos editar y actualizar el directorio de respaldo raíz, los directorios que desea respaldar y los intervalos de respaldo en el archivo de configuración predeterminado de Rsnapshot /etc/rsnapshot.conf.

Antes de editar la configuración, siempre se recomienda hacer una copia de seguridad del archivo de configuración predeterminado en caso de que necesite reconfigurar rsnapshot nuevamente.

cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak

Ahora, edite el archivo de configuración de rsnapshot usando el comando:

nano /etc/rsnapshot.conf

La configuración predeterminada debería funcionar bien. Todo lo que necesita hacer es definir los directorios de respaldo y los intervalos de respaldo.

Aviso: Tenga en cuenta que debe especificar una barra diagonal al final de los nombres de los directorios en el archivo /etc/rsnapshot.conf. Digamos, por ejemplo, que debe especificar el nombre del directorio como /rsnapbackup/, pero no /rsnapbackup. Además, es necesario utilizar tabulaciones (no espacios) entre elementos/campos.

Primero, configuremos el directorio de copia de seguridad raíz, es decir, definamos el directorio donde queremos almacenar las copias de seguridad del sistema de archivos. En nuestro caso, almacenaré las copias de seguridad en el directorio /rsnapbackup/.

All snapshots will be stored under this root directory.
#
snapshot_root   /rsnapbackup/

Definir el directorio raíz de Rsnapshot

Nuevamente, debes usar la tecla TAB entre el elemento snapshot_root y tu directorio de respaldo.

Nota: Rsnapshot no admite una raíz de instantánea remota a través de SSH.

Desplácese un poco hacia abajo y asegúrese de que las siguientes líneas (marcadas en negrita) no estén comentadas:

[...]
#################################
EXTERNAL PROGRAM DEPENDENCIES #
#################################

LINUX USERS: Be sure to uncomment "cmd_cp". This gives you extra features.
EVERYONE ELSE: Leave "cmd_cp" commented out for compatibility.
#
See the README file or the man page for more details.
#
cmd_cp /usr/bin/cp

uncomment this to use the rm program instead of the built-in perl routine.
#
cmd_rm /usr/bin/rm

rsync must be enabled for anything to work. This is the only command that
must be enabled.
#
cmd_rsync /usr/bin/rsync

Uncomment this to enable remote ssh backups over rsync.
#
cmd_ssh /usr/bin/ssh

Comment this out to disable syslog support.
#
cmd_logger /usr/bin/logger

Uncomment this to specify the path to "du" for disk usage checks.
If you have an older version of "du", you may also want to check the
"du_args" parameter below.
#
cmd_du /usr/bin/du

[...]

Descomentar dependencias de programas externos

A continuación, debemos definir los intervalos de respaldo:

#########################################
BACKUP LEVELS / INTERVALS #
Must be unique and in ascending order #
e.g. alpha, beta, gamma, etc. #
#########################################

retain alpha 6
retain beta 7
retain gamma 4
#retain delta 3

Definir niveles de respaldo

Aquí, retain alpha 6 significa que cada vez que se ejecute rsnapshot alpha, creará una nueva instantánea, rotará las antiguas y conservará las seis copias de seguridad más recientes en los directorios denominados alpha.0, alpha.1,... alpha.5 en el directorio raíz de Rsnapshot. Luego, la próxima vez que se ejecute el comando, se eliminará el directorio alpha.5.

De manera similar, cuando llamamos a rsnapshot beta cada vez, creará una nueva instantánea, rotará las antiguas y conservará las 7 copias de seguridad más recientes (delta.0 - delta.6).

Tenga en cuenta que alpha, beta, gamma y delta son solo los nombres para definir los intervalos de respaldo. También puedes definir tus propios intervalos.

Por ejemplo, puede reemplazar los niveles de copia de seguridad predeterminados con algunos nombres significativos de su elección, como se muestra a continuación:

retain  hourly  24
retain  daily   7
retain  weekly  4
retain  monthly 12

Cuando llamamos a rnsapshot cada hora, se creará una nueva copia de seguridad en el directorio /hourly.0/. Cuando ejecuta este comando cada vez, seguirá creando nuevos directorios hasta /hourly.23/.

Esto es lo mismo para las copias de seguridad diarias, semanales y mensuales.

A continuación, elimine el comentario de la siguiente línea si desea configurar el archivo de registro para Rsnapshot:

logfile /var/log/rsnapshot

Si ha cambiado el puerto predeterminado de SSH, debe descomentar esta línea y mencionar el número de puerto válido aquí:

ssh_args -p 2222

Finalmente, debe definir los directorios de los que desea realizar una copia de seguridad. Busque las siguientes directivas en su archivo de configuración de rsnapshot y configure las ubicaciones del directorio de respaldo.

###############################
### BACKUP POINTS / SCRIPTS ###
###############################

LOCALHOST
backup /home/ostechnix/data/ myserverbackup/

Aquí, voy a hacer una copia de seguridad del contenido del directorio /home/ostechnix/data/ y guardarlo en /rsnapbackup/myserverbackup/ directorio.

Aviso: Tenga en cuenta que no especifiqué la ruta completa (es decir, /rsnapbackup/myserverbackup/) en la configuración anterior. Porque ya mencionamos anteriormente el directorio de copia de seguridad raíz. Por lo tanto, no necesitamos especificar el directorio raíz de Rsnapshot aquí.

Asimismo, defina la ubicación de la copia de seguridad de sus sistemas cliente remotos.

REMOTEHOST
backup sk@192.168.225.37:/home/sk/data/ myclientbackup/

Aquí, voy a hacer una copia de seguridad del contenido del directorio /home/sk/data/ de mi sistema cliente remoto y lo guardaré en /rsnapbackup/myclientbackup. Directorio en mi servidor de respaldo.

Nuevamente, tenga en cuenta que no especifiqué la ruta completa (/rsnapbackup/myclientbackup/) en la configuración anterior. Porque ya definimos el directorio de respaldo raíz.

Definir directorios para realizar copias de seguridad en Rsnapshot

Guarde y cierre el archivo /etc/rsnapshot.conf.

Una vez que haya realizado todos los cambios, ejecute el siguiente comando para verificar que el archivo de configuración sea sintácticamente válido.

rsnapshot configtest

Si todo está bien, verá el siguiente resultado.

Syntax OK

3.3. Iniciar copias de seguridad

Ejecute el siguiente comando para iniciar manualmente la copia de seguridad usando Rsnapshot.

rsnapshot alpha

La primera copia de seguridad tardará entre unos minutos y varias horas, según el tamaño de las copias de seguridad. Las copias de seguridad posteriores serán mucho más rápidas, porque Rsnapshot solo realizará copias de seguridad de las diferencias.

Del mismo modo, puedes iniciar otros niveles de copia de seguridad:

rsnapshot beta
rsnapshot gamma
rsnapshot daily

3.4. Verificar y ver copias de seguridad

Comprobemos si las copias de seguridad están realmente almacenadas en el directorio de copia de seguridad raíz del servidor de copia de seguridad.

ls /rsnapbackup/

Verá el siguiente resultado:

alpha.0

Verifique el contenido del directorio alpha.0:

ls /rsnapbackup/alpha.0/

Verá que se crean dos directorios automáticamente, uno para la copia de seguridad local (myserverbackup) y otro para sistemas remotos (myclientbackup).

myclientbackup  myserverbackup

Para verificar las copias de seguridad del sistema cliente, ejecute:

ls /rsnapbackup/alpha.0/myclientbackup/

Verifique las copias de seguridad del sistema del servidor (sistema local):

ls /rsnapbackup/alpha.0/myserverbackup/

Ver copias de seguridad de Rsnapshot

Cuando ejecute Rnaspshot cada uno, creará nuevos directorios como alpha.0, alpha.1, etc., dependiendo de la cantidad de niveles de retención que haya configurado.

# ls /rsnapbackup/
alpha.0  alpha.1

El directorio alpha.0 contendrá la copia de seguridad más reciente.

3.5. Programar copias de seguridad

No es necesario ejecutar el comando rsnapshot para crear copias de seguridad cada vez. Simplemente defina un trabajo cron para automatizar los trabajos de copia de seguridad a intervalos regulares.

Para hacerlo, cree un nuevo archivo de trabajo cron para rsnapshot:

nano /etc/cron.d/rsnapshot

Agregue las siguientes líneas:

0 */4 * * *     /usr/bin/rsnapshot alpha
50 23 * * *     /usr/bin/rsnapshot beta
00 22 1 * *     /usr/bin/rsnapshot delta

La primera línea indica que se tomarán seis instantáneas alfa cada día (a las 0,4,8,12,16 y 20 horas), y se tomarán instantáneas beta cada noche. a las 23:50 y las instantáneas delta se tomarán a las 22:00 horas del primer día de cada mes. Puede ajustar el tiempo según su deseo. Guarde y cierre el archivo.

¡Hecho! A partir de ahora, Rsnapshot hará una copia de seguridad automática de sus datos a la hora definida.

Para obtener más detalles, consulte las páginas del manual.

man rsnapshot

4. Restaurar archivos

¡Restaurar archivos es fácil! Si tiene acceso sudo o root en el servidor de respaldo, puede simplemente copiar los archivos desde el directorio raíz de Rsnapshot, es decir, /rsnapbackup/.

5. Conclusión

Configurar un servidor de respaldo con Rsnapshot en Linux no es tan difícil. La configuración inicial puede parecer difícil y llevar un poco de tiempo. Pero una vez que configure correctamente el servidor de respaldo Rsnapshot, funcionará de inmediato para siempre, sin la intervención del usuario.

Recursos:

  • Sitio web de instantánea
  • Repositorio de GitHub de Rsnapshot

Lectura relacionada:

  • Cómo hacer una copia de seguridad de todo su sistema Linux usando Rsync
  • Cómo hacer una copia de seguridad de archivos y directorios usando Rsync en Linux
  • Cómo hacer una copia de seguridad y restaurar archivos usando Deja Dup en Linux
  • Cómo hacer una copia de seguridad y restaurar el sistema Linux con Timeshift
  • Cómo sincronizar archivos con Unison en Linux
  • Cómo sincronizar directorios locales y remotos en Linux
  • Cómo sincronizar archivos y directorios usando Zaloha.sh
  • CYA: utilidad de restauración e instantánea del sistema para Linux
  • Restic: una aplicación de copia de seguridad rápida, segura y eficiente

Artículos relacionados