La copia de seguridad es una de las cosas más críticas en todas las industrias, y es posible que esté buscando qué solución de copia de seguridad es más confiable. ¿Por qué no probar la copia de seguridad de Restic en Linux?
Restic es una solución de respaldo segura, rápida y confiable. Y en este tutorial, aprenderá a configurar el sistema de copia de seguridad Restic en un servidor Linux.
¡Siga leyendo y nunca más pierda ninguno de sus datos!
Requisitos
Este tutorial será una demostración práctica. Para seguir, asegúrese de tener lo siguiente:
- Dos servidores Linux:este tutorial utiliza dos servidores Debian 11 llamados servidor1 y servidor de copia de seguridad .
- Un usuario no root con privilegios sudo.
Instalación de Restic en Linux
Restic almacena datos en el repositorio encriptado, y cada vez que agrega datos al repositorio, Restic crea automáticamente una nueva instantánea. Pero antes de aprovechar la utilidad de respaldo de Restic, primero deberá instalar Restic en su máquina.
1. Abre tu terminal e inicia sesión en server1
máquina.
2. A continuación, ejecute el wget
Comando a continuación para descargar el archivo binario de Restic. En el momento de escribir este artículo, la última versión de Restic es v0.12.1.
wget https://github.com/restic/restic/releases/download/v0.12.1/restic_0.12.1_linux_amd64.bz2
3. Ejecute los siguientes comandos para extraer el restic_0.12.1_linux_amd64.bz2
y verifique el restic_0.12.1_linux_amd64
existe un archivo binario.
# Extract restic_0.12.1_linux_amd64.bz2
bzip2 -dv restic_0.12.1_linux_amd64.bz2
# List the files to verify restic_0.12.1_linux_amd64 exists
ls

4. Ahora, ejecuta el chmod
comando para hacer el restic_0.12.1_linux_amd64
archivo ejecutable, luego cambie el nombre y mueva el archivo al /usr/bin/restic
directorio.
En este punto, ya puede ejecutar el comando restic en su servidor.
# Make Restic file executable
chmod +x restic_0.12.1_linux_amd64
# Installing Restic
mv restic_0.12.1_linux_amd64 /usr/bin/restic
5. Ejecute el restic
Comando a continuación para generar la finalización de bash para Restic. De este modo, los usuarios podrán ejecutar fácilmente el restic
dominio.
restic generate --bash-completion /etc/bash_completion.d/restic
6. Por último, ejecute el siguiente comando para volver a cargar la finalización de bash en su sesión de terminal actual, luego ejecute el restic
comando y presiona TAB para mostrar las opciones disponibles para restic
dominio.
Por último, ejecute los siguientes comandos para volver a cargar la finalización de bash en su sesión de terminal actual. Escriba restic y presione la tecla TAB para mostrar las opciones disponibles para el comando restic.
# reload bash completion
source /etc/profile.d/bash_completion.sh
# verify restic command
restic
Debería ver todas las opciones disponibles del comando restic , como se muestra a continuación.

Configuración de un servidor de respaldo
Ahora que ha instalado Restic en el server1
máquina, el siguiente paso es configurar el backup-server
, para que pueda comenzar a respaldar sus datos a través del protocolo SFTP.
De forma predeterminada, Restic le permite realizar una copia de seguridad de los datos en el directorio local, el servidor remoto y el protocolo SFTP. Restic también le permite realizar copias de seguridad de datos en servicios de copia de seguridad en la nube de terceros, como Amazon S3, Azure Blog Storage, Backblaze B2 y Google Cloud Storage.
1. Abra una nueva terminal e inicie sesión en backup-server
máquina.
2. A continuación, ejecute el siguiente comando para crear un nuevo usuario llamado johndoe
y configurar una contraseña.
# create new user
useradd -m -s /bin/bash johndoe
# setup the password
passwd johndoe
3. Ejecute cada comando a continuación para crear un nuevo directorio de respaldo (/srv/backup
) para Restic y cambie la propiedad (chown
) al johndoe
usuario y grupo. Este directorio almacenará todos los datos de respaldo del server1
máquina.
# create new backup directory
mkdir -p /srv/backup
# change ownership of the backup directory
sudo chown -R johndoe:johndoe /srv/backup
4. Ahora, cambia a server1
máquina y ejecute el siguiente comando para generar una clave SSH.
En lugar de utilizar la autenticación basada en contraseña, optará por la autenticación basada en clave. Una clave SSH es esencial, especialmente cuando se configura una copia de seguridad automática con un script de shell o se usan trabajos Cron.
ssh-keygen
Presione ENTER en las siguientes indicaciones, como se muestra a continuación. Al hacerlo, se establece la ubicación de almacenamiento de su clave SSH en el directorio predeterminado (~/.ssh) y se desactiva la contraseña para su clave privada SSH.
En este punto, en el directorio ~/.ssh , tendrá los archivos id_rsa (clave privada SSH) e id_rsa.pub (su clave pública).

5. Ejecute el ls
comando a continuación para verificar que el id_rsa y id_rsa.pub los archivos existen en el ~/.ssh
directorio.
ls ~/.ssh/

6. A continuación, ejecute el ssh-copy-id
Comando a continuación para subir la clave pública SSH al backup-server
. En esta demostración, el backup-server
usa el nombre de usuario johndoe
y la dirección IP 172.16.1.150
.
ssh-copy-id [email protected]
Cuando se complete la carga, recibirá el mensaje Número de claves añadidas:1 en su terminal.

7. Por último, ejecuta el ssh
Comando a continuación para verificar y conectarse al backup-server
.
ssh [email protected]
Tenga en cuenta que inició sesión automáticamente en el servidor de copia de seguridad sin autenticación de contraseña.

Inicializar un nuevo repositorio
Ahora ha configurado el servidor de copia de seguridad de Restic, por lo que el siguiente paso es inicializar un nuevo repositorio. Restic almacenará los datos de respaldo en un repositorio, y cada acción de respaldo crea una nueva instantánea dentro de ese repositorio.
1. Ejecute el restic
comando a continuación para inicializar (init
) un repositorio (-r
) utilizando el protocolo SFTP.
restic -r sftp:[email protected]:/srv/backup init
2. Ingrese una contraseña segura para el repositorio y confírmela. Recuerde la contraseña, ya que la usará para descifrar sus datos de respaldo.
Como se muestra a continuación, el nuevo repositorio (a9073b62d0) se crea en el servidor SFTP (sftp:[email protected]:/srv/backup).

3. Por último, ejecuta el restic
Comando a continuación para verificar el repositorio. Se le pedirá que ingrese la contraseña que anotó previamente para el repositorio (paso dos).
restic -r sftp:[email protected]:/srv/backup check
Si no hay ningún error, obtendrá el mensaje No se encontraron errores, que se muestra a continuación.

Copia de seguridad de datos en un repositorio
Ahora ha inicializado el repositorio usando el servidor SFTP en el backup-server
. Pero, ¿cómo se hace una copia de seguridad de los datos con Restic? Hará una copia de seguridad de los datos de server1
al repositorio en el backup-server
.
1. Ejecute el restic
Comando a continuación para hacer una copia de seguridad de los datos del /var/www/wordpress
directorio al repositorio.
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress
Ingrese la contraseña para el repositorio y, cuando se complete el proceso de copia de seguridad, Restic crea la instantánea (736949a9), como se muestra a continuación.

2. A continuación, ejecute el siguiente comando para enumerar todos los snapshots
.
restic -r sftp:[email protected]:/srv/backup snapshots
Asegúrese de que la instantánea (736949a9) esté disponible en la lista, como se muestra a continuación

3. Ejecute el siguiente comando para listar todos los archivos (ls
) en la instantánea (736949a9
).
restic -r sftp:[email protected]:/srv/backup ls 736949a9
Verá la lista de archivos en la instantánea (736949a9), que son los datos de la copia de seguridad del directorio /var/www/wordpress/ .

Además, puede ejecutar el siguiente comando para hacer una copia de seguridad de varios directorios (/var/www/wordpress y /var/www/html) en el mismo repositorio.
restic -r sftp:[email protected]:/srv/backup backup /var/www/wordpress /var/www/html
Observe a continuación que Restic creó una nueva instantánea (7b6e321e).

4. Ahora, ejecute cada comando a continuación para enumerar todas las instantáneas, las estadísticas de los archivos de copia de seguridad y la diferencia entre dos instantáneas (736949a9
y 7b6e321e
).
# checking list snapshots
restic -r sftp:[email protected]:/srv/backup snapshots
# show stats of repository
restic -r sftp:[email protected]:/srv/backup stats
# checking different between two snapshots
restic -r sftp:[email protected]:/srv/backup diff 736949a9 7b6e321e
A continuación, las instantáneas 736949a9 y 7b6e321e tienen los mismos datos de respaldo (/var/www/wordpress). Tenga en cuenta que los tamaños de sus archivos en el repositorio también son los mismos, ya que Restic solo realiza copias de seguridad de los cambios en los archivos, lo que hace que Restic sea rápido y eficiente.

Exclusión de archivos en procesos de copia de seguridad
La copia de seguridad de los datos es útil, pero ¿cómo se excluyen los datos innecesarios? Restic te permite excluir archivos/directorios con el --exclude-file
opción durante el proceso de copia de seguridad.
El --exclude-file
La opción puede excluir archivos basura, como archivos de registro, lo que hace que el proceso de copia de seguridad sea más rápido y limpio.
1. Ejecute el siguiente comando para crear un nuevo directorio llamado /opt/backup
para almacenar los archivos respaldados.
mkdir -p /opt/backup
2. A continuación, cree un nuevo archivo (/opt/backup/excludes.txt
) con su editor de texto preferido y complete la siguiente configuración.
La siguiente configuración le dice a Restic que excluya archivos con diferentes tipos de archivos.
# excludes files .zip
*.tar.gz
# excludes directory logs
logs
# exclude .txt files on the directory data
data/*.txt
3. Ejecute el siguiente comando para hacer una copia de seguridad de los datos de /var/www/html directorio al repositorio (-r
). El --exclude-files
opción le dice a Restic que excluya los archivos y directorios enumerados en exludes.txt expediente.
restic -r sftp:[email protected]:/srv/backup backup /var/www/html --exclude-file=/opt/backup/excludes.txt
A continuación, Restic crea la nueva instantánea de copia de seguridad ca99be01, excluyendo los archivos que usted especificó en excludes.txt archivo.

4. Ahora, ejecute el siguiente comando para verificar la lista de archivos (ls
) en la instantánea ca99be01
.
restic -r sftp:[email protected]:/srv/backup ls ca99be01
Verá todos los archivos respaldados excepto aquellos que definió en el archivo de configuración (excludes.txt ).

5. Finalmente, ejecuta el tree
Comando a continuación para verificar que la exclusión de datos funcione con Restic.
tree /var/www/html/
Como puede ver a continuación, el directorio /var/www/html contiene archivos de texto en su interior, pero Restic no los excluyó de la copia de seguridad.

Eliminar instantáneas del repositorio
En la mayoría de los casos, es posible que solo necesite dos o tres versiones de instantáneas como máximo. Entonces, ¿por qué no eliminar las instantáneas más antiguas? La eliminación de instantáneas requiere que conozca el ID de la instantánea, por lo tanto, consulte primero la lista de instantáneas.
1. Ejecute el siguiente comando para enumerar todas las instantáneas en el repositorio.
restic -r sftp:[email protected]:/srv/backup snapshots
Elija una ID de la instantánea para eliminar (736949a9).

2. A continuación, ejecute los siguientes comandos para eliminar (forget
) instantánea específica (736949a9
), y sus datos restantes del repositorio.
# Removes snapshot only
restic -r sftp:[email protected]:/srv/backup forget 736949a9
# Removes remaining data from repository
restic -r sftp:[email protected]:/srv/backup prune

3. Ejecute el siguiente comando para realizar un --dry-run
y ver qué instantáneas se eliminarán (forget
) y qué dos versiones de instantáneas se conservarán (--keep-last 2
).
Antes de eliminar instantáneas, siempre se recomienda un simulacro para evitar perder instantáneas importantes.
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune --dry-run

4. Ejecute el siguiente comando para eliminar (forget
) versiones antiguas de instantáneas y conservar las dos últimas (--keep-last 2
) del repositorio.
restic -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune

5. Finalmente, ejecute el siguiente comando para enumerar todas las instantáneas existentes.
restic -r sftp:[email protected]:/srv/backup snapshots
Puede ver a continuación que solo quedan las dos últimas versiones de instantáneas.

Restauración de datos en el repositorio
Quizás eliminó accidentalmente datos cruciales del repositorio. Si es así, ¿cómo los recuperas? Afortunadamente, Restic le permite descifrar y restaurar los datos de la copia de seguridad siempre que conozca la ID de la instantánea de la copia de seguridad.
1. Ejecute el restic
Comando a continuación para verificar las instantáneas disponibles en el repositorio.
restic -r sftp:[email protected]:/srv/backup snapshots
A continuación se muestra un ejemplo de instantáneas disponibles en el repositorio. Tenga en cuenta la ID de la instantánea de los datos de la copia de seguridad para restaurar.

2. A continuación, ejecute los siguientes comandos para crear un directorio de restauración (/opt/restore
) y restaure su instantánea de destino (6b44ac32
) a ese directorio de restauración.
# Create a restore directory
mkdir -p /opt/restore
# Restore snapshot data to the /opt/restore directory
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore

3. Finalmente, ejecuta el ls
Comando a continuación para verificar los datos restaurados.
ls /opt/restore/var/www/wordpress
Como se muestra a continuación, verá la lista de archivos restaurados a partir de la instantánea (6b44ac32).

Restauración de archivos específicos
Acaba de restaurar datos perdidos, pero ¿qué sucede si solo necesita restaurar un archivo específico? Con Restic, puede apuntar a un archivo específico agregando el --include
opción en el restic
comando.
1. Ejecute el siguiente comando para crear un directorio para almacenar el archivo específico para restaurar desde una instantánea.
mkdir -p /opt/restore/specific
2. A continuación, ejecute el restic
comandos a continuación para restaurar un directorio específico (/var/www/wordpress/wp-content
) y un archivo específico (wp-config.php
) de la instantánea (6b44ac32
). Cada comando establece el directorio de restauración de destino en el /opt/restore/specific
directorio.
# restore specific directory wp-config
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-content
# restore specific file wp-config.php
restic -r sftp:[email protected]:/srv/backup restore 6b44ac32 --target /opt/restore/specific --include /var/www/wordpress/wp-config.php

3. Por último, ejecuta el ls
comando a continuación para verificar el archivo restaurado y el directorio en el directorio (/opt/restore/specific
).
ls /opt/restore/specific/var/www/wordpress
Si la restauración funcionó correctamente, vería el directorio (wp-content) y el archivo (wp-config.php) restaurados desde la instantánea (6b44ac32).

Copia de seguridad de datos automáticamente con Restic y Cron
En este punto, ya ha aprendido todo el uso básico de la herramienta de copia de seguridad Restic. Pero dado que la copia de seguridad manual de los datos puede ser una molestia, ¿por qué hacer una copia de seguridad automática de los datos en su sistema Linux? Restic, junto con Cron, puede hacer maravillas, como automatizar el proceso de copia de seguridad de datos.
1. Cree un nuevo archivo (/opt/backup/.secret
) usando su editor preferido e ingrese la contraseña de su repositorio. Esta demostración usa la contraseña ResticRepositoryPassword
para el repositorio Restic.
2. A continuación, ejecute el siguiente comando para cambiar el permiso de /opt/backup/.secret
archivo a 600
. El código de permiso 600
otorga permiso de lectura y escritura solo al /opt/backup/.secret
propietario del archivo.
chmod 600 /opt/backup/.secret
3. Ejecute el crontab
Comando a continuación para crear un nuevo trabajo Cron. El -u root
La opción indica que el trabajo de Cron se ejecutará como usuario raíz.
crontab -u root -e
4. Seleccione su editor preferido y el archivo de configuración de Cron se abre en ese editor. Pero esta demostración usa el nano editor.

5. Finalmente, complete la configuración de Cron con la siguiente configuración para configurar la copia de seguridad automática y guardar los cambios.
El siguiente script realiza lo siguiente:
- Ejecute el
restic
ordena cada1.AM
a directorios de copia de seguridad (/var/www/wordpress
y/var/www/html
) al servidor SFTP del repositorio (sftp:[email protected]:/srv/backup
).
- Eliminar instantáneas antiguas automáticamente en
2.AM
y conserve las dos últimas versiones de las instantáneas.
- Especifica (
--password-file
) el archivo (/opt/backup/.secret
) que contiene su contraseña para el repositorio de Restic, por lo que no tiene que codificar su contraseña en la configuración de Cron.
# Runs daily backup at 1.AM
0 1 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup backup --verbose /var/www/{wordpress,html}
# Runs every 2.AM, and always keeps the last 2 backup snapshots
0 2 * * * restic --password-file /opt/backup/.secret -r sftp:[email protected]:/srv/backup forget --keep-last 2 --prune
Conclusión
En este tutorial, aprendió cómo instalar Restic en Linux y diferentes formas de hacer una copia de seguridad de sus datos, desde directorios hasta archivos específicos con instantáneas. Además de la copia de seguridad de datos, ha descubierto que puede restaurar datos perdidos inesperadamente. La automatización juega un papel importante en la copia de seguridad de sus datos, así que mantenga los trabajos de Cron en ejecución para proteger sus datos.
En este punto, está listo para hacer una copia de seguridad de más datos con Restic. ¿Y por qué no aprovechar su copia de seguridad mediante el uso de etiquetas, políticas de filtrado y servicios de copia de seguridad en la nube?