Recherche de site Web

Rsnapshot (basé sur Rsync) - Un utilitaire de sauvegarde du système de fichiers local/distant pour Linux


rsnapshot est un utilitaire de sauvegarde de système de fichiers local/à distance open source écrit en langage Perl qui tire parti de la puissance de rsnapshot. ProgrammeRsync et SSH pour créer des sauvegardes incrémentielles planifiées des systèmes de fichiers Linux/Unix, tout en n'occupant que l'espace de une seule sauvegarde complète plus les différences et conserver ces sauvegardes sur local disque sur un disque dur différent, une clé USB externe , un lecteur monté NFS ou simplement via le réseau vers une autre machine via SSH.

Cet article explique comment installer, configurer et utiliser rsnapshot pour créer des créations incrémentielles horaires, quotidiennes, hebdomadaires et < des sauvegardes locales fortes>mensuelles, ainsi que des sauvegardes à distance. Pour effectuer toutes les étapes de cet article, vous devez être un utilisateur root.

Étape 1 : Installation de Rsnapshot Backup sous Linux

L'installation de rsnapshot à l'aide de Yum et APT peut différer légèrement si vous utilisez Red Hat et Distributions basées sur Debian.

Sur RHEL/CentOS

Vous devrez d'abord installer et activer un référentiel tiers appelé EPEL. Veuillez suivre le lien ci-dessous pour installer et activer sous vos systèmes RHEL/CentOS. Les utilisateurs de Fedora n'ont besoin d'aucune configuration de référentiel spéciale.

  1. Installer et activer le référentiel EPEL dans RHEL/CentOS 6/5/4

Une fois les choses configurées, installez rsnapshot à partir de la ligne de commande, comme indiqué.

yum install rsnapshot
Sur Debian/Ubuntu/Linux Mint

Par défaut, rsnapshot est inclus dans les référentiels Ubuntu, vous pouvez donc l'installer à l'aide de la commande apt-get comme indiqué.

apt-get install rsnapshot

Étape 2 : Configuration de la connexion SSH sans mot de passe

Pour sauvegarder des serveurs Linux distants, votre serveur de sauvegarde rsnapshot pourra se connecter via SSH sans mot de passe. Pour ce faire, vous devrez créer des clés publiques et privées SSH pour vous authentifier sur le serveur rsnapshot. Veuillez suivre le lien ci-dessous pour générer des clés publiques et privées sur votre serveur de sauvegarde rsnapshot.

  1. Créer une connexion sans mot de passe SSH à l'aide de SSH Keygen

Étape 3 : configuration de Rsnapshot

Vous devrez maintenant modifier et ajouter quelques paramètres au fichier de configuration rsnapshot. Ouvrez le fichier rsnapshot.conf avec l'éditeur vi ou nano.

vi /etc/rsnapshot.conf

Créez ensuite un répertoire de sauvegarde dans lequel vous souhaitez stocker toutes vos sauvegardes. Dans mon cas, l'emplacement de mon répertoire de sauvegarde est « /data/backup/ ». Recherchez et modifiez le paramètre suivant pour définir l'emplacement de sauvegarde.

snapshot_root			 /data/backup/

Décommentez également la ligne « cmd_ssh » pour autoriser les sauvegardes à distance via SSH. Pour décommenter la ligne, supprimez le « # » devant la ligne suivante afin que rsnapshot puisse transférer en toute sécurité vos données vers un serveur de sauvegarde.

cmd_ssh			/usr/bin/ssh

Ensuite, vous devez décider combien d'anciennes sauvegardes vous souhaitez conserver, car rsnapshot n'avait aucune idée de la fréquence à laquelle vous souhaitez prendre des instantanés. Vous devez spécifier la quantité de données à enregistrer, ajouter des intervalles à conserver et combien de chacun.

Eh bien, les paramètres par défaut sont assez bons, mais j'aimerais quand même que vous activiez l'intervalle « mensuel » afin que vous puissiez également mettre en place des sauvegardes à plus long terme. Veuillez modifier cette section pour qu'elle ressemble aux paramètres ci-dessous.

#########################################
          BACKUP INTERVALS            #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Une autre chose que vous devez modifier est la variable « ssh_args ». Si vous avez modifié le Port SSH par défaut (22) par autre chose, vous devez spécifier ce numéro de port de votre serveur de sauvegarde distant.

ssh_args		-p 7851

Enfin, ajoutez vos répertoires de sauvegarde locaux et distants que vous souhaitez sauvegarder.

Sauvegarder les répertoires locaux

Si vous avez décidé de sauvegarder vos répertoires localement sur la même machine, l'entrée de sauvegarde ressemblerait à ceci. Par exemple, je fais une sauvegarde de mes répertoires /tecmint et /etc.

backup		/tecmint/		localhost/
backup		/etc/			localhost/
Sauvegarder les répertoires distants

Si vous souhaitez sauvegarder les répertoires d'un serveur distant, vous devez indiquer au rsnapshot où se trouve le serveur et quels répertoires vous souhaitez sauvegarder. Ici, je fais une sauvegarde du répertoire « /home » de mon serveur distant sous le répertoire « /data/backup » sur le serveur rsnapshot.

backup		 [email :/home/ 		/data/backup/

Lire aussi :

  1. Comment sauvegarder/synchroniser des répertoires à l'aide de l'outil Rsync (Remote Sync)
  2. Comment transférer des fichiers/dossiers à l'aide de la commande SCP
Exclure des fichiers et des répertoires

Ici, je vais tout exclure, puis définir spécifiquement ce que je souhaite sauvegarder. Pour ce faire, vous devez créer un fichier d'exclusion.

vi /data/backup/tecmint.exclude

Obtenez d’abord la liste des répertoires que vous souhaitez sauvegarder et ajoutez ( – * ) pour exclure tout le reste. Cela sauvegardera uniquement ce que vous avez répertorié dans le fichier. Mon fichier d'exclusion ressemble à celui ci-dessous.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

L'utilisation de l'option d'exclusion de fichier peut être très délicate en raison de l'utilisation de la récursion rsync. Donc, mon exemple ci-dessus n’est peut-être pas ce que vous recherchez. Ajoutez ensuite le fichier d'exclusion au fichier rsnapshot.conf.

exclude_file    /data/backup/tecmint.exclude

Enfin, vous avez presque terminé la configuration initiale. Enregistrez le fichier de configuration « /etc/rsnapshot.conf » avant d'aller plus loin. Il existe de nombreuses options à expliquer, mais voici mon exemple de fichier de configuration.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

Toutes les options et explications d’arguments ci-dessus sont les suivantes :

  1. config_version 1.2=Version du fichier de configuration
  2. snapshot_root=Destination de sauvegarde pour stocker les instantanés
  3. cmd_cp=Chemin vers la commande de copie
  4. cmd_rm=Chemin pour supprimer la commande
  5. cmd_rsync=Chemin vers rsync
  6. cmd_ssh=Chemin vers SSH
  7. cmd_logger=Chemin d'accès à l'interface de commande shell vers syslog
  8. cmd_du=Commande de chemin d'accès à l'utilisation du disque
  9. intervalle horaire = Combien de sauvegardes horaires conserver.
  10. intervalle quotidien=combien de sauvegardes quotidiennes conserver.
  11. intervalle hebdomadaire=combien de sauvegardes hebdomadaires conserver.
  12. intervalle mensuel=combien de sauvegardes mensuelles conserver.
  13. ssh_args=Arguments SSH facultatifs, tels qu'un port différent (-p )
  14. verbeux=explicite
  15. loglevel=explicite
  16. logfile=Chemin d'accès au fichier journal
  17. exclude_file=Chemin d'accès au fichier d'exclusion (sera expliqué plus en détail)
  18. rsync_long_args=Arguments longs à transmettre à rsync
  19. lockfile=explicite
  20. sauvegarde=Chemin complet vers ce qui doit être sauvegardé suivi du chemin relatif de placement.

Étape 4 : Vérifier la configuration de Rsnapshot

Une fois que vous avez terminé toute votre configuration, il est temps de vérifier que tout fonctionne comme prévu. Exécutez la commande suivante pour vérifier que votre configuration a la syntaxe correcte.

rsnapshot configtest

Syntax OK

Si tout est configuré correctement, vous recevrez un message « Syntaxe OK ». Si vous recevez des messages d'erreur, cela signifie que vous devez corriger ces erreurs avant d'exécuter rsnapshot.

Ensuite, effectuez un test sur l’un des instantanés pour vous assurer que nous générons des résultats corrects. Nous prenons le paramètre « hourly » pour effectuer un test en utilisant l'argument -t (test). Cette commande ci-dessous affichera une liste détaillée des choses qu'elle fera, sans les faire réellement.

rsnapshot -t hourly
Exemple de sortie
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Remarque : La commande ci-dessus indique à rsnapshot de créer une sauvegarde « toutes les heures ». Il affiche en fait les commandes qu'il exécutera lorsque nous l'exécuterons réellement.

Étape 5 : Exécuter Rsnapshot manuellement

Après avoir vérifié vos résultats, vous pouvez supprimer l'option « -t » pour exécuter réellement la commande.

rsnapshot hourly

La commande ci-dessus exécutera le script de sauvegarde avec toute la configuration que nous avons ajoutée dans le fichier rsnapshot.conf et créera un répertoire « backup », puis créera la structure de répertoires en dessous. qui organise nos fichiers. Après avoir exécuté la commande ci-dessus, vous pouvez vérifier les résultats en accédant au répertoire de sauvegarde et répertorier la structure du répertoire à l'aide de la commande ls -l comme indiqué.

cd /data/backup
ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Étape 6 : Automatisation du processus

Pour automatiser le processus, vous devez planifier l'exécution de rsnapshot à certains intervalles à partir de Cron. Par défaut, rsnapshot est livré avec le fichier cron sous « /etc/cron.d/rsnapshot », s'il n'existe pas, créez-en un et ajoutez-y les lignes suivantes.

Par défaut, les règles sont commentées, vous devez donc supprimer le « # » devant la section de planification pour activer ces valeurs.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

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

Laissez-moi vous expliquer exactement ce que font les règles cron ci-dessus :

  1. S'exécute toutes les 4 heures et crée un répertoire horaire sous le répertoire /backup.
  2. S'exécute quotidiennement à 3h30 et crée un répertoire quotidien sous le répertoire /backup.
  3. S'exécute hebdomadairement tous les lundi à 3h00 et crée un répertoire hebdomadaire sous /backup répertoire .
  4. S'exécute tous les mensuels à 2h30 et crée un répertoire mensuel sous le répertoire /backup.

Pour mieux comprendre le fonctionnement des règles cron, je vous suggère de lire notre article qui décrit.

  1. 11 exemples de planification Cron

Étape 7 : Rapports Rsnapshot

Leinstantané fournit un petit script Perl de reporting qui vous envoie une alerte par e-mail avec tous les détails sur ce qui s'est passé lors de la sauvegarde de vos données. Pour configurer ce script, vous devez copier le script quelque part sous « /usr/local/bin » et le rendre exécutable.

cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl

Ensuite, ajoutez le paramètre « –stats » dans votre fichier « rsnapshot.conf » à la section des arguments longs de rsync.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Modifiez maintenant les règles crontab qui ont été ajoutées précédemment et appelez le script rsnapreport.pl pour transmettre les rapports à l'adresse e-mail spécifiée.

This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Une fois que vous avez correctement ajouté les entrées ci-dessus, vous recevrez un rapport sur votre adresse e-mail similaire à celui ci-dessous.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Liens de référence

  1. page d'accueil de rsnapshot

C'est tout pour l'instant, si des problèmes surviennent lors de l'installation, envoyez-moi un commentaire. D'ici là, restez à l'écoute de TecMint pour des articles plus intéressants sur le monde Open source.