Sécurité

Comment automatiser les sauvegardes de son VPS avec Rsync et Cron

Mettez en place des sauvegardes automatiques et incrémentales de votre VPS Linux vers un serveur distant grâce à Rsync, aux clés SSH et à des tâches planifiées Cron.

Niveau

Facile

Durée de lecture

8 min

Étapes

6

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.

1

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 --version
2

Configurer 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_BACKUP
3

Tester 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/
4

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.sh
5

Planifier 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 -l
6

Restaurer 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.

Ce guide vous a servi ? Les autres sont au même endroit.

Revenir à la liste des guides

Une étape qui ne passe pas ?

Collez votre message d'erreur sur le Discord. C'est souvent réglé en quelques minutes, et ça nous signale les passages à préciser dans le guide.