Sauvegardes au quotidien – Rdiff-Backup et MySqlDump

rdiff-backup sauvegarde sima78J’avais déjà écrit un billet intitulé « Scripts de sauvegardes journalières et hebdomadaires » et un commentaire de Tetsumaki m’a donner à réfléchir.

Pourquoi je fais compliqué quand ont peut faire simple?

Soit, j’aime les scripts, et du coup il m’arrive de m’emballer et il fallait un disque de sauvegarde assez « gros »… Et j’ai décidé de regarder du côté de Rdiff-Backup. J’ai été séduit !

Je fais donc un nouveau billet sur le sujet de la sauvegarde sans pour autant supprimer l’autre…

Rdiff-Backup existe aussi pour Windows, je suppose qu’il doit exister une interface graphique , j’avoue ne pas avoir cherché puisque je m’en sert pour la sauvegarde d’un serveur, qui n’a pas d’interface graphique et de façon automatisée.

Bien entendu, une sauvegarde ne se fait pas sur une partition du disque dur, pas même sur un autre disque dur sur le même pc, mais sur un disque externe ou un pc distant…

Une modification à été apporté le 07/12/2023 concernant le message d’érreur :

/bin/sh: 1: root: not found

Lire la suite…

Sauvegarde avec Rdiff-Backup et MysqlDump.

Dans un premier temps j’ai défini les répertoires que je souhaitais sauvegarder, puis j’ai créé un fichier texte pour les regrouper.
Dans cet exemple, je décide de sauvegarder « /etc », « /home », « /var »

# nano /root/scripts/include-dir.txt

Copiez ce qu’il y a ci-dessous:

/etc
/home
/var

Maintenant nous allons créer le script dans la « cron.daily »

# nano /etc/cron.daily/backup

Copiez en adaptant ce qui suit.

#!/bin/bash
rdiff-backup --include-globbing-filelist /root/scripts/include-dir.txt --exclude '**' / /dir/de/sauvegarde/backup/

/dir/de/sauvegarde/backup/ est la destination de la sauvegarde, je vous laisse l’adapter selon vos choix.

Le rendre exécutable:

chmod +x /etc/cron.daily/backup

Je souhaite également sauvegarder des bases de données, on peut aussi le faire via Rdiff-backup, personnellement le préfère utiliser « mysqldump » (et oui, je suis un animal d’habitudes) :

# nano /etc/cron.daily/mysql-backup

Copiez en adaptant ce qui suit.

#!/bin/bash
mysqldump -u nextcloud -motdepasse nextcloud > /dir/de/sauvegarde/bd/nextcloud.sql
mysqldump -u dolibarr -motdepasse dolibarr > /dir/de/sauvegarde/bd/dolibarr.sql
mysqldump -u grr -motdepasse grr > /dir/de/sauvegarde/bd/grr.sql

Le rendre exécutable:

chmod +x /etc/cron.daily/mysql-backup

Pour que cela se fasse automatiquement et chaque jour, mettez le tout dans votre crontab:

# crontab -e

Copiez en adaptant ce qui suit.

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 10 * * * root sh /etc/cron.daily/backup >/var/log/monbackup 2>&1 # JOB_BACKUP
0 15 * * * root sh /etc/cron.daily/mysql-backup >/var/log/monsav-bd 2>&1 # JOB_MYSQL-BACKUP

<Ajout du 07/12/2023>

J’ai le message d’erreur suivant : /bin/sh: 1: root: not found

Il arrive que root n’a pas de Shell et que l’user principal peut utiliser « sudo » sans confirmation de mot de passe, le cas par exemple de Raspberry, d’où un mot de passe fort pour cette user.

# nano /etc/cron.daily/backup

Copiez en adaptant ce qui suit.

#!/bin/bash
sudo rdiff-backup --include-globbing-filelist /root/scripts/include-dir.txt --exclude '**' / /dir/de/sauvegarde/backup/
# crontab -e

Copiez en adaptant ce qui suit.

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 10 * * * /etc/cron.daily/backup >/var/log/monbackup 2>&1 # JOB_BACKUP
0 15 * * * /etc/cron.daily/mysql-backup >/var/log/monsav-bd 2>&1 # JOB_MYSQL-BACKUP

</Ajout du 07/12/2023>

Ceci-dit, il faut vérifier les sauvegardes, moi je simule une restauration dans un dossier de test, ici « test-sauv »

rdiff-backup --force -r now /dir/de/sauvegarde/backup/ /home/sima78/backup/rdiff-backup-data/test-sauv/

On peut voir les statistiques de la dernière sauvegarde

rdiff-backup-statistics /dir/de/sauvegarde/backup/

Ou la liste des incréments d’une sauvegarde

rdiff-backup -l /dir/de/sauvegarde/backup/

Vous pouvez aussi spécifier une durée de rétention des sauvegardes, dans le cas ci-dessous je supprime au-delà de 10 jours

rdiff-backup --remove-older-than 10D --force /dir/de/sauvegarde/backup/

Vous pouvez mettre D pour(Day), W pour(Week), M pour (Month) et Y pour (Year).
Donc voilà ma base, maintenant vous pouvez affiner comme par exemple avec mysqldump par lequel il est possible d’exporter plusieurs bases de données en une seule commande:

mysqldump --databases database1 database2 [...] > /home/sima78/my_databases.sql

Bref plein de possibilités il suffit de faire un « man » pour s’en rendre compte

man rdiff-backup
man mysqldump

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *