Une sauvegarde que vous pouvez restaurer fait la différence entre un après-midi pénible et la perte d’un projet. Le guide de sauvegarde de base d’un VPS en présente le principe. Celui-ci va plus loin avec restic et BorgBackup : deux outils qui réalisent des sauvegardes chiffrées et dédupliquées vers un second serveur ou vers un stockage d’objets.
Pourquoi restic ou borg plutôt que de simples copies
- Déduplication. Seules les données modifiées sont stockées, si bien que les instantanés quotidiens restent petits.
- Chiffrement. Les données sont chiffrées avant de quitter votre serveur.
- Instantanés. Vous pouvez restaurer l’état de n’importe quel jour passé.
- Vérification. Les deux outils peuvent vérifier l’intégrité du dépôt.
Choisissez-en un. Restic est simple et fonctionne avec de nombreux types de stockage, dont SFTP et le stockage compatible S3. Borg est très efficace et fonctionne via SSH vers un serveur sur lequel borg est installé.
Où envoyer les sauvegardes
Ne stockez jamais l’unique sauvegarde sur le même serveur. Utilisez un second VPS dans un autre emplacement, un bucket compatible S3 ou une storage box. Un petit VPS avec un gros disque constitue une cible de sauvegarde peu coûteuse. Voir les offres de VPS.
Restic : mise en place
sudo apt install -y restic
export RESTIC_REPOSITORY="sftp:backup@backup.example.com:/srv/restic/myserver"
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
Créez le fichier de mot de passe avec un long mot de passe aléatoire et conservez-en une copie hors ligne. Sans ce mot de passe, les sauvegardes ne peuvent pas être restaurées.
restic backup /etc /home /var/www --exclude-caches
restic snapshots
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
restic check
Borg : mise en place
sudo apt install -y borgbackup
export BORG_REPO="ssh://backup@backup.example.com/srv/borg/myserver"
borg init --encryption=repokey-blake2
borg create --stats --compression zstd ::'{hostname}-{now:%Y-%m-%d}' /etc /home /var/www
borg prune --keep-daily 7 --keep-weekly 4 --keep-monthly 6
borg check
Exportez et conservez la clé du dépôt avec borg key export.
Les bases de données demandent des précautions
Ne copiez pas les fichiers d’une base de données en cours d’utilisation. Faites-en d’abord un dump et sauvegardez le dump :
mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
sudo -u postgres pg_dumpall | gzip > /var/backups/pg.sql.gz
La planifier
Lancez la sauvegarde depuis un timer systemd ou cron. Une simple ligne cron :
15 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Faites-vous alerter en cas d’échec, par exemple avec un ping de supervision à la fin du script.
Tester une restauration
restic restore latest --target /tmp/restore-test --include /etc/nginx
ls /tmp/restore-test
Testez de temps en temps une vraie restauration sur une machine de rechange. Une sauvegarde que vous n’avez jamais testée n’est qu’un espoir.