Mise en place d'un système de sauvegarde


Système des 3-2-1 :
3 copies (source principale + 2 backups) différentes sur au moins 2 supports distincts dont 1 hors site.

Types de sauvegarde :
- complète
- incrémentale
- différentielle

Outils possibles : rsync, clonezilla, dd, cp, borgbackup, timeshift

En pratique

Préparation de la communication distante (SSH) :
1. Génération clés privée-publique sur source
ssh-keygen
2. Export de clés sur serveur distant
ssh-copy-id -i ~/.ssh/id_rsa.pub -p $BACKUP_PORT $BACKUP_USER@BACKUP_ADDRESS

Création du dépôt de sauvegarde (à faire une seule fois avant la première sauvegarde) sur le serveur distant
borg init -e $encryption ssh://$BACKUP_USER@$BACKUP_ADDRESS:$BACKUP_PORT/$BACKUP_PATH/$BACKUP_NAME
où $ENCRYPTION vaut none si pas d'encryption ou repokey-black2 (recommandé)

Export de la base de données
mysqldump -u $DATABASE_USER $DATABASE_NAME -p $DATABASE_PASS > $DATABASE_NAME

Sauvegarde du répertoire $FOLDER_TO_BACKUP
borg create -v --info --stats ssh://$BACKUP_USER@$BACKUP_ADDRESS:$BACKUP_PORT/$BACKUP_PATH/$BACKUP_NAME::{now} $FOLDER_TO_BACKUP

Liste des points de sauvegarde local

borg list $BACKUP_PATH/$BACKUP_NAME

Montage d'un point de sauvegarde pour récupération de fonnées
mount $BACKUP_PATH/$BACKUP_NAME::$DATE $MOUNT_POINT
puis transfert (via cp ou rsync)

Purge avec conservation 1/jour (7 derniers jours), 1/semaine (4 dernières semaines) et 1/mois (6 derniers mois)
borg prune -v $BORG_REPOSITORY --keep-daily=7 --keep-weekly=4 --keep-monthly=6

Automatisation possible via le démon CRON
crontab -e

Bibliographie :
- https://www.blog-libre.org/2016/08/21/borgbackup-borg-pour-les-intimes/
- https://borgbackup.readthedocs.io/
- https://fr.wikipedia.org/wiki/Sauvegarde_(informatique)