Un VPS peut tomber en panne, être supprimé par erreur ou être cassé par une mauvaise mise à jour. La seule protection est une sauvegarde que vous avez testée. Ce guide met en place des sauvegardes simples, automatisées et chiffrées avec des outils gratuits.
La règle 3-2-1
Gardez 3 copies de vos données, sur 2 types de stockage différents, avec 1 copie ailleurs, complètement. Pour un VPS, cela signifie généralement les données en production, un instantané local et une copie hors site chez un autre fournisseur ou dans un autre pays.
Quoi sauvegarder
- Les fichiers du site web et les téléversements (
/var/www). - Les bases de données, d’abord exportées dans un fichier (ne copiez jamais les fichiers d’une base en cours d’utilisation).
- La configuration :
/etc/nginx, les modifications dans/etc, les fichiers Docker Compose et les volumes. - Les tâches cron et tous les scripts personnalisés.
Vous pouvez réinstaller le système d’exploitation en quelques minutes. Ce que vous ne pouvez pas réinstaller, ce sont vos données et vos paramètres.
Utiliser restic pour des sauvegardes chiffrées et dédupliquées
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
restic init
Créez le fichier de mot de passe avec une longue chaîne aléatoire et conservez-en une copie en lieu sûr. Si vous perdez ce mot de passe, les sauvegardes ne pourront pas être ouvertes. restic prend aussi en charge le stockage compatible S3, vous pouvez donc envoyer vers n’importe quel stockage d’objets.
Un script de sauvegarde
#!/bin/bash
set -e
export RESTIC_REPOSITORY=sftp:backup@other-server:/backups/vps1
export RESTIC_PASSWORD_FILE=/root/.restic-pass
mysqldump --single-transaction --all-databases | gzip > /var/backups/db.sql.gz
restic backup /var/www /etc /var/backups/db.sql.gz
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --prune
Enregistrez-le sous /usr/local/bin/backup.sh, rendez-le exécutable et planifiez-le :
sudo chmod +x /usr/local/bin/backup.sh
echo "30 3 * * * root /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1" | sudo tee /etc/cron.d/backup
Tester une restauration
restic snapshots
restic restore latest --target /tmp/restore-test --include /etc/nginx
Une sauvegarde que vous n’avez jamais restaurée n’est qu’un espoir. Testez une fois par trimestre, et toujours après avoir changé quoi que ce soit.
Les instantanés aident, mais ne suffisent pas
Les instantanés du fournisseur sont rapides et pratiques avant des changements risqués, mais ils vivent chez le même fournisseur et sur le même compte. Considérez-les comme un confort et gardez une copie hors site indépendante.