Accueil/Documentation/Sécurité/Comment automatiser les sauvegardes de son VPS avec Rsync et Cron
SécuritéDifficulté : Facile8 min de lecture

Comment automatiser les sauvegardes de son VPS avec Rsync et Cron

Introduction

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

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.

terminal - bash
# Sur le VPS source ET sur le serveur de sauvegarde :
sudo apt update
sudo apt install -y rsync

# Vérifier la version
rsync --version

Conseil important

Le serveur de destination peut être un second VPS, un serveur de stockage (NAS) ou une offre de stockage dédiée. L'essentiel est qu'il soit accessible en SSH.

2

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.

terminal - bash
# Depuis votre VPS source, générer une clé dédiée aux sauvegardes
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -C "backup-vps"

# Copier la clé publique vers le serveur de sauvegarde
ssh-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

Conseil important

Utiliser une clé dédiée (backup_key) plutôt que votre clé personnelle permet de la révoquer facilement en cas de besoin, sans impacter vos autres accès.

3

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.

terminal - bash
rsync -avz --delete \
  -e "ssh -i ~/.ssh/backup_key" \
  /var/www /etc \
  backup_user@IP_SERVEUR_BACKUP:/backups/mon-vps/

Conseil important

Les options : -a (archive, préserve permissions/dates), -v (verbeux), -z (compression réseau), --delete (supprime côté backup les fichiers supprimés à la source pour un miroir fidèle).

4

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.

terminal - bash
nano ~/backup.sh

# Contenu du script :
#!/bin/bash
DATE=$(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.log
rsync -az --delete -e "ssh -i $KEY" $SOURCE $DEST >> $HOME/backup.log 2>&1
echo "[$DATE] Sauvegarde terminee" >> $HOME/backup.log

# Rendre le script exécutable
chmod +x ~/backup.sh

Conseil important

Adaptez les variables SOURCE et DEST à vos besoins. Vous pouvez ajouter d'autres dossiers (ex: une exportation de base de données) à la variable SOURCE.

5

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.

terminal - bash
# Éditer la crontab de l'utilisateur
crontab -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ée
crontab -l

Conseil important

La syntaxe Cron est : minute heure jour mois jour_semaine. Ainsi '0 3 * * *' signifie tous les jours à 3h00. Utilisez crontab.guru pour composer vos propres horaires.

6

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.

terminal - bash
# Restaurer le dossier /var/www depuis le serveur de sauvegarde vers le VPS
rsync -avz \
  -e "ssh -i ~/.ssh/backup_key" \
  backup_user@IP_SERVEUR_BACKUP:/backups/mon-vps/www/ \
  /var/www/

Conseil important

Testez régulièrement une restauration sur un dossier temporaire : une sauvegarde jamais testée ne doit jamais être considérée comme fiable.

En conclusion

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.

Un VPS fiable pour vos données

VPS NVMe haute performance avec sauvegardes et Anti-DDoS Gcore inclus, dès 5€/mois.

Voir les VPS NVMe

Foire Aux Questions (FAQ)

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