Sauvegardes incrémentielles sur un VPS à l'aide de rsync et cron | INTROSERV
EUR
european

EUR

usa

USD

French Fr
Ex. VAT Ex. VAT 0%

Sauvegardes incrémentielles sur un VPS à l'aide de rsync et cron

Introduction

Les sauvegardes sont essentielles pour tout VPS. Elles vous protègent contre les suppressions accidentelles, les erreurs de configuration, la corruption des données ou la compromission du serveur.

Ce manuel explique comment configurer des sauvegardes incrémentielles en utilisant :

  • rsync — outil de copie de fichiers efficace
  • liens physiques — pour éviter les doublons de données dans chaque sauvegarde
  • cron — pour planifier des sauvegardes automatiques

Résultat : chaque instantané ressemble à une sauvegarde complète, mais seuls les fichiers modifiés occupent de l'espace supplémentaire. Cette approche est simple, fiable et adaptée à la plupart des configurations VPS courantes.

Comment fonctionnent les sauvegardes incrémentielles avec rsync

rsync offre deux fonctionnalités clés :

  1. Synchronisation des seuls fichiers modifiés
  2. Option --link-dest : crée des liens physiques pour les fichiers inchangés, permettant plusieurs répertoires de sauvegarde "complets" sans consommer d'espace supplémentaire.

Exemple de structure de répertoire :

/backups/ daily.0/ - sauvegarde d'aujourd'hui daily.1/ - sauvegarde d'hier daily.2/ - sauvegarde d'il y a 2 jours

Chaque dossier apparaît comme une sauvegarde complète, mais seules les différences occupent de l'espace.

Prérequis

Sur le VPS :

  • Installation de Linux
  • Accès en tant que root ou utilisateur avec sudo
  • Espace disque suffisant pour les instantanés de sauvegarde
  • Optionnel : stockage distant si sauvegarde sur un autre serveur

Installez rsync si nécessaire :

sudo apt update

sudo apt install rsync

Info

Avertissement : Arrêtez vos serveurs de base de données ou excluez leurs répertoires de données de la sauvegarde. La sauvegarde en ligne de la base de données via rsync peut entraîner une sauvegarde de base de données corrompue.

Création des répertoires de sauvegarde

Choisissez un emplacement pour les sauvegardes. Habituellement :

  • Système de fichiers local : /backups/
  • Disque externe : /mnt/storage/backups/
  • Serveur distant via SSH : user@backup-server:/data/backups/

Exemple (local) :

sudo mkdir -p /backups

sudo chmod 700 /backups

Commande rsync de base pour les sauvegardes incrémentielles

Voici la commande rsync clé :

rsync -a --delete \ --link-dest=/backups/daily.1 \ /source/data/ \ /backups/daily.0/

Explication :

  • -a — mode archive (préserve les permissions, propriétaires, horodatages, liens symboliques)
  • --delete — supprime les fichiers supprimés sur la source
  • --link-dest — crée des liens physiques vers les fichiers inchangés dans l'instantané précédent
  • /source/data/ — répertoire que vous souhaitez sauvegarder
  • /backups/daily.0/ — instantané d'aujourd'hui

Script de rotation pour les instantanés quotidiens

Créez un script pour :

  1. Faire tourner les sauvegardes existantes
  2. Créer une nouvelle sauvegarde incrémentielle
  3. Conserver N jours (exemple : 7)

Créez le fichier :

sudo nano /usr/local/bin/backup_daily.sh

Collez :

#!/bin/bash BACKUP_DIR="/backups/" SOURCE="/" EXCLUDE="/etc/backup-exclude.txt" DAYS="7" #REMOTE_USER="<YOUR_REMOTE_USER>" #REMOTE_SERVER="<YOUR_REMOTE_SERVER>" REMOTE_DIR="/backups/" # Rotation for ((i=DAYS-1; i>=0; i--)); do if [ -d "$BACKUP_DIR/daily.$i" ]; then rm -rf "$BACKUP_DIR/daily.$((i+1))" mv "$BACKUP_DIR/daily.$i" "$BACKUP_DIR/daily.$((i+1))" fi done # Préparer les répertoires de sauvegarde mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Effectuer la sauvegarde incrémentielle rsync -a --delete \ --link-dest="$BACKUP_DIR/daily.1" \ --exclude-from="$EXCLUDE" \ "$SOURCE" "$BACKUP_DIR/daily.0" if [ -n "$REMOTE_USER" ] && [ -n "$REMOTE_SERVER" ] && [ -n "$REMOTE_DIR" ]; then rsync -azv --delete "$BACKUP_DIR" "$REMOTE_USER@$REMOTE_SERVER:$REMOTE_DIR" fi

Enregistrez et quittez. Rendez-le exécutable :

sudo chmod +x /usr/local/bin/backup_daily.sh

Vous pouvez modifier les variables en haut du script pour l'adapter à vos besoins. Changez SOURCE pour un répertoire spécifique si vous n'avez pas besoin de sauvegarde complète du système de fichiers racine par exemple.

Exclusion des répertoires inutiles

Créez un fichier d'exclusion :

sudo nano /etc/backup-exclude.txt

Exclusions typiques :

  • /proc
  • /sys
  • /tmp
  • /run
  • /dev
  • /mnt
  • /media
  • /var/cache
  • /backups

Planification des sauvegardes avec cron

Modifiez le crontab :

sudo crontab -e

Ajoutez (sauvegarde à 03:00 tous les jours) :

0 3 * * * /usr/local/bin/backup_daily.sh >/var/log/backup.log 2>&1

Cela garantit des instantanés automatiques réguliers.

Sauvegarde sur un serveur distant (optionnel)

Si vous souhaitez une sauvegarde hors site, suivez les étapes suivantes. Créez un dossier de destination sur le serveur cible :

mkdir -p /backups

Assurez-vous que les clés SSH sont configurées. Exécutez la commande suivante pour générer votre clé SSH :

ssh-keygen

Remplacez <YOUR_REMOTE_USER> par votre nom d'utilisateur sur le serveur distant, <YOUR_REMOTE_SERVER> par le nom de domaine de votre serveur distant et exécutez la commande suivante pour copier votre clé SSH sur le serveur distant :

ssh-copy-id <YOUR_REMOTE_USER>@<YOUR_REMOTE_SERVER>

Décommentez les variables REMOTE_USER, REMOTE_SERVER en haut de votre backup_daily.sh, remplacez <YOUR_REMOTE_USER> par votre nom d'utilisateur sur le serveur distant, <YOUR_REMOTE_SERVER> par le nom de domaine de votre serveur distant et enregistrez backup_daily.sh pour activer la sauvegarde distante.

Téléchargement des sauvegardes vers INTROSERV CloudBox

INTROSERV fournit un stockage en ligne qui vous permet de sauvegarder automatiquement ou manuellement des copies sécurisées de vos fichiers et données importants sur des serveurs distants. Pour l'utiliser comme stockage de sauvegarde distant, connectez-vous à l'interface web de CloudBox et ajoutez votre clé ssh publique au profil. Les paramètres du profil se trouvent en haut à droite.

Paramètres de profil CloudBox

Insérez votre clé SSH publique dans la section "Clés publiques" pour télécharger votre clé sur le serveur.

Section clé SSH publique CloudBox

Décommentez les variables REMOTE_USER, REMOTE_SERVER en haut de votre backup_daily.sh, remplacez <YOUR_REMOTE_USER> par votre nom d'utilisateur sur le serveur CloudBox, <YOUR_REMOTE_SERVER> par le nom de domaine de votre serveur CloudBox et enregistrez backup_daily.sh pour activer la sauvegarde distante.

Tester les sauvegardes

Avant de vous fier à votre système, testez les sauvegardes.

  1. Exécutez le script manuellement : sudo /usr/local/bin/backup_daily.sh
  2. Vérifiez les tailles : du -sh /backups/*. Il ne doit y avoir qu'une seule grande sauvegarde.
  3. Vérifiez l'intégrité des fichiers : ls -l /backups/daily.0/etc/

Restaurer les données

Vous pouvez restaurer n'importe quel fichier individuel :

cp /backups/daily.2/etc/nginx/nginx.conf /etc/nginx/

Ou tout restaurer :

sudo rsync -a /backups/daily.0/ /

Info

Avertissement : La restauration des répertoires système écrase les fichiers actuels.

Considérations de sécurité

  • Utilisez des permissions strictes sur les répertoires de sauvegarde (chmod 700).
  • Si vous utilisez SSH, désactivez la connexion par mot de passe, utilisez uniquement des clés.
  • Ne stockez pas les sauvegardes sur le même disque que le serveur si possible.
  • Chiffrez les sauvegardes distantes en utilisant LUKS ou un stockage chiffré si nécessaire.

Surveillance et journalisation

La journalisation est déjà ajoutée dans cron : /var/log/backup.log

Vérifiez régulièrement :

tail -f /var/log/backup.log

Conclusion

L'utilisation de rsync avec cron offre :

  • Des sauvegardes incrémentielles rapides
  • Une utilisation efficace du disque via des liens physiques
  • Un processus de restauration simple
  • Une planification entièrement automatisée

Cette méthode est fiable et facile pour les administrateurs novices et fonctionne parfaitement sur les configurations VPS Linux.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA