Une infrastructure sans sauvegarde est une infrastructure à risque. Qu'il s'agisse d'une erreur humaine, d'une corruption de données ou d'un incident, disposer de copies récentes et externalisées de vos fichiers est vital. Rsync est l'outil idéal : il ne copie que les fichiers modifiés (sauvegarde incrémentale), ce qui le rend extrêmement rapide et économe. Couplé à Cron, il permet d'automatiser entièrement vos sauvegardes vers un serveur distant.
Installer Rsync sur les deux serveurs
Rsync doit être présent à la fois sur le serveur source (votre VPS) et sur le serveur de destination (votre stockage de sauvegarde). Il est souvent déjà installé par défaut.
# Sur le VPS source ET sur le serveur de sauvegarde :sudo apt updatesudo apt install -y rsync # Vérifier la versionrsync --versionConfigurer une connexion SSH par clé
Pour que Cron puisse lancer les sauvegardes sans intervention, la connexion SSH vers le serveur distant doit se faire sans mot de passe, via une clé SSH.
# Depuis votre VPS source, générer une clé dédiée aux sauvegardesssh-keygen -t ed25519 -f ~/.ssh/backup_key -C "backup-vps" # Copier la clé publique vers le serveur de sauvegardessh-copy-id -i ~/.ssh/backup_key.pub backup_user@IP_SERVEUR_BACKUP # Tester la connexion (elle ne doit PAS demander de mot de passe)ssh -i ~/.ssh/backup_key backup_user@IP_SERVEUR_BACKUPTester une première sauvegarde manuelle
Avant d'automatiser, lancez Rsync manuellement pour vérifier que tout fonctionne. Cet exemple sauvegarde le dossier /var/www et /etc vers le serveur distant.
rsync -avz --delete \ -e "ssh -i ~/.ssh/backup_key" \ /var/www /etc \ backup_user@IP_SERVEUR_BACKUP:/backups/mon-vps/Créer un script de sauvegarde
Centralisez votre commande dans un script réutilisable. Il horodatera chaque exécution dans un fichier journal, utile pour vérifier le bon déroulement des sauvegardes.
nano ~/backup.sh # Contenu du script :#!/bin/bashDATE=$(date '+%Y-%m-%d %H:%M:%S')SOURCE="/var/www /etc"DEST="backup_user@IP_SERVEUR_BACKUP:/backups/mon-vps/"KEY="$HOME/.ssh/backup_key" echo "[$DATE] Debut de la sauvegarde" >> $HOME/backup.logrsync -az --delete -e "ssh -i $KEY" $SOURCE $DEST >> $HOME/backup.log 2>&1echo "[$DATE] Sauvegarde terminee" >> $HOME/backup.log # Rendre le script exécutablechmod +x ~/backup.shPlanifier la sauvegarde avec Cron
Cron est le planificateur de tâches de Linux. Ajoutez une ligne à votre crontab pour exécuter le script automatiquement, par exemple chaque nuit à 3h du matin.
# Éditer la crontab de l'utilisateurcrontab -e # Ajouter cette ligne pour une exécution quotidienne à 03h00 :0 3 * * * /bin/bash $HOME/backup.sh # Vérifier que la tâche est bien enregistréecrontab -lRestaurer des données depuis la sauvegarde
Une sauvegarde n'a de valeur que si vous savez la restaurer. La restauration consiste simplement à inverser la source et la destination de la commande Rsync.
# Restaurer le dossier /var/www depuis le serveur de sauvegarde vers le VPSrsync -avz \ -e "ssh -i ~/.ssh/backup_key" \ backup_user@IP_SERVEUR_BACKUP:/backups/mon-vps/www/ \ /var/www/Pour terminer
Vos données sont désormais sauvegardées automatiquement et externalisées chaque nuit, sans aucune intervention de votre part. En cas d'incident, vous pourrez restaurer votre VPS en quelques minutes. C'est l'assurance vie indispensable de toute infrastructure sérieuse.
Problèmes fréquents
Rsync fait-il des sauvegardes incrémentales ou complètes ?
Par défaut, Rsync ne transfère que les fichiers nouveaux ou modifiés depuis la dernière exécution : la première sauvegarde est complète, les suivantes sont incrémentales et donc très rapides. Pour conserver un historique daté (plusieurs versions), utilisez l'option --link-dest.
Comment conserver plusieurs jours de sauvegardes ?
Vous pouvez créer un dossier daté à chaque exécution et utiliser 'find /backups -type d -mtime +7 -exec rm -rf {} +' dans votre script pour supprimer automatiquement les sauvegardes de plus de 7 jours (politique de rétention).
Ma tâche Cron ne s'exécute pas, pourquoi ?
Les causes fréquentes sont : un chemin relatif au lieu d'absolu dans le script, des permissions manquantes sur le script (chmod +x), ou la clé SSH inaccessible. Consultez votre fichier backup.log et les logs Cron ('grep CRON /var/log/syslog') pour diagnostiquer.
