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
Derniers commentaires