Configurer le serveur de sauvegarde à l'aide de Rsnapshot sous Linux
Tutoriel Rsnapshot pour les débutants
Ce guide explique ce qu'est Rsnapshot, comment installer Rsnapshot sous Linux et comment configurer un serveur de sauvegarde à l'aide de Rsnapshot sous Linux.
1. Introduction
Rsnapshot est un utilitaire d'instantané de système de fichiers basé sur rsync pour les systèmes d'exploitation Linux et Unix. Il vous permet de créer facilement des instantanés périodiques de machines locales et de machines distantes via ssh.
L'avantage de rsnapshot est qu'il utilise largement les liens physiques chaque fois que cela est possible, pour réduire considérablement l'espace disque requis.
Étant donné que rsnapshot ne conserve qu'un nombre fixe d'instantanés, la quantité d'espace disque utilisée n'augmentera pas continuellement.
Rnapshot est une application de sauvegarde gratuite et open source qui prend en charge les sauvegardes incrémentielles. Il est entièrement écrit en Perl et devrait fonctionner sur la plupart des systèmes de type Unix.
Sans plus tarder, voyons comment installer, configurer et configurer le serveur de sauvegarde à l'aide de Rsnapshot sous Linux.
2. Installez Rsnapshot sous Linux
Rsnapshot est fourni pour de nombreuses distributions Linux.
Installer Rsnapshot dans Alpine Linux :
sudo apk add rsnapshot rsync
Installer Rsnapshot avec Arch Linux, EndeavourOS et Manjaro Linux :
sudo pacman -S rsnapshot rsync
Installez Rsnapshot dans Debian, Ubuntu, Linux Mint, Pop_OS ! :
sudo apt install rsnapshot rsync
Installez Rsnapshot dans CentOS, Fedora, RHEL, AlmaLinux, Rocky Linux :
Rsnapshot n'est pas disponible dans les référentiels par défaut des systèmes d'exploitation d'entreprise tels que CentOS, RHEL, AlmaLinux et Rocky Linux. Vous devez activer le référentiel [EPEL] pour pouvoir installer Rsnapshot.
sudo dnf install epel-release
Ensuite, installez Rsnapshot à l'aide de la commande :
sudo dnf install rsnapshot rsync
Installez Rsnapshot dans openSUSE :
sudo zypper install rsnapshot rsync
3. Configurer le serveur de sauvegarde à l'aide de Rsnapshot sous Linux
Pour les besoins de ce guide, j'utiliserai deux systèmes de test.
L'un est un serveur de sauvegarde fonctionnant avec AlmaLinux 8 et un autre fait office de système client. Le client fonctionne avec le bureau Fedora 34.
Les détails du serveur de sauvegarde et du client sont indiqués ci-dessous.
Serveur de sauvegarde :
- OS : système minimal AlmaLinux 8 64 bits
- Adresse IP : 192.168.122.25/24
- Répertoire racine de Rsnapshot : /rsnapbackup
- Répertoire à sauvegarder : /home/ostechnix/data/
Client :
- OS : Fedora Workstation 34
- Adresse IP : 192.168.225.37/24
- Répertoire à sauvegarder : /home/sk/data/
3.1. Configurer l'authentification SSH sans mot de passe sur le serveur de sauvegarde
Pour sauvegarder les fichiers d'un système client distant via SSH, vous devez configurer une authentification SSH sans mot de passe pour les systèmes clients distants, afin que la sauvegarde se connecte automatiquement au système client sans mot de passe et sauvegarde les données client.
Connectez-vous en tant qu'utilisateur root
et créez une paire de clés SSH dans notre système de serveur de sauvegarde.
ssh-keygen
Ne saisissez aucune phrase secrète, car nous souhaitons que ces systèmes puissent se connecter les uns aux autres sans aucune intervention de l'utilisateur :
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]-----+
Configurer l'authentification SSH sans mot de passe
Ensuite, copiez la clé publique SSH sur tous vos systèmes clients distants.
ssh-copy-id sk@192.168.225.37
Remplacez sk
et 192.168.225.37
dans la commande ci-dessus par le nom d'utilisateur et l'adresse IP de votre système distant. Entrez le mot de passe utilisateur de votre système client pour copier le fichier de clé publique :
/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.
Ici, 192.168.225.37 est l'adresse IP de mon système client distant (c'est-à-dire Fedora Desktop).
Vous pouvez désormais vous connecter au système client sans aucun mot de passe.
Répétez la commande ci-dessus pour copier la clé publique ssh sur tous vos systèmes clients afin de configurer une authentification sans mot de passe.
Ensuite, nous devons configurer le serveur de sauvegarde.
3.2. Configuration du serveur de sauvegarde Rsnapshot
Créez un répertoire de sauvegarde racine pour enregistrer toutes les sauvegardes de votre serveur et de vos systèmes clients.
Pour les besoins de ce guide, j'utilise /rsnapbackup/
comme répertoire de sauvegarde racine. C'est le répertoire dans lequel je vais stocker toutes les sauvegardes.
Vous pouvez définir votre propre emplacement de votre choix pour stocker les sauvegardes.
Créons le répertoire de sauvegarde racine sur notre serveur de sauvegarde avec la commande :
mkdir /rsnapbackup
Ensuite, nous devons modifier et mettre à jour le répertoire de sauvegarde racine, les répertoires que vous souhaitez sauvegarder et les intervalles de sauvegarde dans le fichier de configuration par défaut de Rsnapshot /etc/rsnapshot.conf
.
Avant de modifier la configuration, il est toujours recommandé de faire une sauvegarde du fichier de configuration par défaut au cas où vous auriez besoin de reconfigurer rsnapshot à nouveau.
cp /etc/rsnapshot.conf /etc/rsnapshot.conf.bak
Maintenant, modifiez le fichier de configuration rsnapshot à l'aide de la commande :
nano /etc/rsnapshot.conf
La configuration par défaut devrait fonctionner correctement. Tout ce que vous avez à faire est simplement de définir les répertoires de sauvegarde et les intervalles de sauvegarde.
Attention : Veuillez noter que vous devez spécifier une barre oblique finale à la fin des noms de répertoires dans le fichier /etc/rsnapshot.conf
. Disons par exemple que vous devez spécifier le nom du répertoire comme /rsnapbackup/
, mais pas /rsnapbackup
. De plus, vous devez utiliser des tabulations (et non des espaces) entre les éléments/champs.
Tout d’abord, configurons le répertoire de sauvegarde racine, c’est-à-dire définissons le répertoire dans lequel nous souhaitons stocker les sauvegardes du système de fichiers. Dans notre cas, je stockerai les sauvegardes dans le répertoire /rsnapbackup/
.
All snapshots will be stored under this root directory.
#
snapshot_root /rsnapbackup/
Définir le répertoire racine de Rsnapshot
Encore une fois, vous devez utiliser la touche TAB entre l'élément snapshot_root et votre répertoire de sauvegarde.
Remarque : Rsnapshot ne prend pas en charge une racine d'instantané distant via SSH.
Faites défiler un peu vers le bas et assurez-vous que les lignes suivantes (marquées en gras) ne sont pas commentées :
[...]
#################################
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
[...]
Décommenter les dépendances externes du programme
Ensuite, nous devons définir les intervalles de sauvegarde :
#########################################
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
Définir les niveaux de sauvegarde
Ici, conserver alpha 6 signifie qu'à chaque fois que rsnapshot alpha est exécuté, il créera un nouvel instantané, fera pivoter les anciens et conservera les six sauvegardes les plus récentes dans les répertoires nommés. alpha.0
, alpha.1
,... alpha.5
dans le répertoire racine de Rsnapshot. Ensuite, lors de la prochaine exécution de la commande, le répertoire alpha.5
sera supprimé.
De même, lorsque nous appelons rsnapshot beta
à chaque fois, il créera un nouvel instantané, fera pivoter les anciens et conservera les 7 sauvegardes les plus récentes (delta.0 - delta.6).
Veuillez noter que alpha
, beta
, gamma
et delta
ne sont que les noms permettant de définir les intervalles de sauvegarde. Vous pouvez également définir vos propres intervalles.
Par exemple, vous pouvez remplacer les niveaux de sauvegarde par défaut par des noms significatifs de votre choix, comme ci-dessous :
retain hourly 24
retain daily 7
retain weekly 4
retain monthly 12
Lorsque nous appelons rnsapshot toutes les heures
, cela créera une nouvelle sauvegarde dans le répertoire
. Lorsque vous exécutez cette commande à chaque fois, elle continuera à créer de nouveaux répertoires jusqu'à
.
Il en va de même pour les sauvegardes quotidiennes, hebdomadaires et mensuelles.
Ensuite, décommentez la ligne suivante si vous souhaitez définir le fichier journal pour Rsnapshot :
logfile /var/log/rsnapshot
Si vous avez modifié le port par défaut SSH, vous devez décommenter cette ligne et mentionner ici le numéro de port valide :
ssh_args -p 2222
Enfin, vous devez définir les répertoires que vous souhaitez sauvegarder. Recherchez les directives suivantes dans votre fichier de configuration rsnapshot et définissez les emplacements du répertoire de sauvegarde.
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
LOCALHOST
backup /home/ostechnix/data/ myserverbackup/
Ici, je vais sauvegarder le contenu du répertoire /home/ostechnix/data/
et le sauvegarder dans /rsnapbackup/myserverbackup/
répertoire.
Attention : Veuillez noter que je n'ai pas spécifié le chemin complet (c'est-à-dire /rsnapbackup/myserverbackup/
) dans la configuration ci-dessus. Parce que nous avons déjà mentionné le répertoire de sauvegarde racine plus tôt. Nous n'avons donc pas besoin de spécifier le répertoire racine de Rsnapshot ici.
De même, définissez l’emplacement de sauvegarde de vos systèmes clients distants.
REMOTEHOST
backup sk@192.168.225.37:/home/sk/data/ myclientbackup/
Ici, je vais sauvegarder le contenu du répertoire /home/sk/data/
de mon système client distant et l'enregistrer dans /rsnapbackup/myclientbackup //répertoire
sur mon serveur de sauvegarde.
Encore une fois, veuillez noter que je n'ai pas spécifié le chemin complet (/rsnapbackup/myclientbackup/
) dans la configuration ci-dessus. Parce que nous avons déjà défini le répertoire de sauvegarde racine.
Définir les répertoires à sauvegarder dans Rsnapshot
Enregistrez et fermez le fichier /etc/rsnapshot.conf
.
Une fois que vous avez effectué toutes vos modifications, exécutez la commande suivante pour vérifier que le fichier de configuration est syntaxiquement valide.
rsnapshot configtest
Si tout va bien, vous verrez le résultat suivant.
Syntax OK
3.3. Démarrer les sauvegardes
Exécutez la commande suivante pour démarrer manuellement la sauvegarde à l'aide de Rsnapshot.
rsnapshot alpha
La première sauvegarde prendra quelques minutes à plusieurs heures selon la taille des sauvegardes. Les sauvegardes ultérieures seront beaucoup plus rapides, car Rsnapshot ne sauvegardera que les différences.
De même, vous pouvez démarrer d'autres niveaux de sauvegarde :
rsnapshot beta
rsnapshot gamma
rsnapshot daily
3.4. Vérifier et afficher les sauvegardes
Vérifions si les sauvegardes sont réellement stockées dans le répertoire de sauvegarde racine du serveur de sauvegarde.
ls /rsnapbackup/
Vous verrez le résultat suivant :
alpha.0
Vérifiez le contenu du répertoire alpha.0
:
ls /rsnapbackup/alpha.0/
Vous verrez que deux répertoires sont automatiquement créés, un pour la sauvegarde locale (myserverbackup) et un autre pour les systèmes distants (myclientbackup).
myclientbackup myserverbackup
Pour vérifier les sauvegardes du système client, exécutez :
ls /rsnapbackup/alpha.0/myclientbackup/
Vérifiez les sauvegardes du système serveur (système local) :
ls /rsnapbackup/alpha.0/myserverbackup/
Affichage des sauvegardes Rsnapshot
Lorsque vous exécutez Rnaspshot chacun, il créera de nouveaux répertoires tels que alpha.0
, alpha.1
et ainsi de suite, en fonction du nombre de niveaux de conservation que vous avez configurés.
# ls /rsnapbackup/
alpha.0 alpha.1
Le répertoire alpha.0
contiendra la sauvegarde la plus récente.
3.5. Planifier des sauvegardes
Vous n'avez pas besoin d'exécuter la commande rsnapshot pour créer des sauvegardes à chaque fois. Définissez simplement une tâche cron pour automatiser les tâches de sauvegarde à intervalles réguliers.
Pour ce faire, créez un nouveau fichier de tâche cron pour rsnapshot :
nano /etc/cron.d/rsnapshot
Ajoutez les lignes suivantes :
0 */4 * * * /usr/bin/rsnapshot alpha
50 23 * * * /usr/bin/rsnapshot beta
00 22 1 * * /usr/bin/rsnapshot delta
La première ligne indique qu'il y aura six instantanés alpha pris chaque jour (à 0,4,8,12,16 et 20 heures), des instantanés bêta pris chaque nuit. à 23h50, et des instantanés delta seront pris à 22h00 le premier jour de chaque mois. Vous pouvez ajuster le timing selon votre souhait. Enregistrez et fermez le fichier.
Fait! Désormais, Rsnapshot sauvegardera automatiquement vos données à l'heure définie.
Pour plus de détails, reportez-vous aux pages de manuel.
man rsnapshot
4. Restaurer les fichiers
Restaurer des fichiers est facile ! Si vous disposez d'un accès sudo
ou root
sur le serveur de sauvegarde, vous pouvez simplement copier les fichiers du répertoire racine de Rsnapshot, c'est-à-dire /rsnapbackup/
.
5. Conclusion
Configurer un serveur de sauvegarde avec Rsnapshot sous Linux n'est pas si difficile. La configuration initiale peut paraître difficile et prendre un peu de temps. Mais une fois que vous avez correctement configuré le serveur de sauvegarde Rsnapshot, il fonctionnera immédiatement, sans aucune intervention de l'utilisateur.
Ressources :
- Site Web Rsnapshot
- Dépôt GitHub Rsnapshot
Lecture connexe :
- Comment sauvegarder l'intégralité de votre système Linux à l'aide de Rsync
- Comment sauvegarder des fichiers et des répertoires à l'aide de Rsync sous Linux
- Comment sauvegarder et restaurer des fichiers à l'aide de Deja Dup sous Linux
- Comment sauvegarder et restaurer le système Linux avec Timeshift
- Comment synchroniser des fichiers avec Unison sous Linux
- Comment synchroniser les répertoires locaux et distants sous Linux
- Comment synchroniser des fichiers et des répertoires à l'aide de Zaloha.sh
- CYA - Utilitaire d'instantané et de restauration du système pour Linux
- Restic - Une application de sauvegarde rapide, sécurisée et efficace