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)