Sauvegardes incrémentielles sur un VPS à l'aide de rsync et de 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 de cron

Introduction

Les sauvegardes sont indispensables pour tout serveur virtuel (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 à l'aide de :

  • rsync — un outil efficace de copie de fichiers
  • les liens physiques — pour éviter la duplication des 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 de VPS courantes.

Fonctionnement des sauvegardes incrémentielles avec rsync

rsync offre deux fonctionnalités clés :

  1. Synchronisation des fichiers modifiés uniquement
  2. L'option--link-dest: crée des liens physiques pour les fichiers inchangés, ce qui permet d'avoir plusieurs répertoires de sauvegarde « complets » sans consommer d'espace supplémentaire.

Exemple de structure de répertoires :

/backups/ daily.0/ - today's backup daily.1/ - yesterday's backup daily.2/ - backup from 2 days ago

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

Prérequis

Sur le VPS :

  • Installation Linux
  • Accès en tant qu’administrateur (root) ou utilisateur disposant des droits sudo
  • Espace disque suffisant pour les instantanés de sauvegarde
  • Facultatif : stockage à distance si la sauvegarde est effectuée sur un autre serveur

Installez rsync si nécessaire :

sudo apt update sudo apt install rsync

Warning

Arrêtez vos serveurs de bases de données ou excluez leurs répertoires de données de la sauvegarde. Une sauvegarde en ligne des bases de données via rsync peut entraîner une corruption de la sauvegarde.

Création des répertoires de sauvegarde

Choisissez un emplacement pour les sauvegardes. Généralement :

  • 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 principale :

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

Explication :

  • -a — mode archive (conserve les droits d’accès, les propriétaires, les horodatages et les liens symboliques)
  • --delete — supprime les fichiers supprimés sur la source
  • --link-dest — crée des liens physiques vers les fichiers inchangés de l'instantané précédent
  • /source/data/ — répertoire que vous souhaitez sauvegarder
  • /backups/daily.0/ — instantané du jour

Script de rotation pour les instantanés quotidiens

Créez un script pour :

  1. Réaliser la rotation des sauvegardes existantes
  2. Créer une nouvelle sauvegarde incrémentielle
  3. Conserver N jours (exemple : 7)

Créer un fichier :

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

Coller :

#!/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/" # Rotate 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 # Prepare backup directories mkdir -p "$BACKUP_DIR/daily.0" if [ ! -d "$BACKUP_DIR/daily.1" ]; then mkdir -p "$BACKUP_DIR/daily.1" fi # Perform incremental backup 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

Enregistrer et quitter. Rendre le script 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. Remplacez SOURCE par un répertoire spécifique si vous n'avez pas besoin d'une sauvegarde complète du système de fichiers racine, par exemple.

Exclure les répertoires inutiles

Créer un fichier d'exclusion :

sudo nano /etc/backup-exclude.txt

Exclusions courantes :

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

Planification des sauvegardes avec cron

Modifier le fichier crontab :

sudo crontab -e

Ajouter (sauvegarde tous les jours à 3 h) :

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

Cela garantit des sauvegardes automatiques régulières.

Sauvegarde sur un serveur distant (facultatif)

Si vous souhaitez effectuer 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, puis 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 et REMOTE_SERVER en haut de votre fichier backup_daily.sh, remplacez <VOTRE_UTILISATEUR_DISTANT> par votre nom d'utilisateur sur le serveur distant, <VOTRE_SERVEUR_DISTANT> par le nom de domaine de votre serveur distant, puis enregistrez le fichier backup_daily.sh pour activer la sauvegarde à distance.

Transfert des sauvegardes vers INTROSERV CloudBox

INTROSERV fournit un espace de 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 espace de stockage de sauvegarde à distance, connectez-vous à l’interface web de CloudBox et ajoutez votre clé SSH publique à votre profil. Les paramètres du profil se trouvent dans le coin supérieur droit.

CloudBox profile settings

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

CloudBox public SSH key section

Décommentez les variables REMOTE_USER et REMOTE_SERVER en haut de votre fichier 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, puis enregistrez le fichier backup_daily.sh pour activer la sauvegarde à distance.

Test des sauvegardes

Avant de compter sur 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 sauvegarde volumineuse.
  3. Vérifiez l'intégrité des fichiers : ls -l /backups/daily.0/etc/

Restauration des données

Vous pouvez restaurer n'importe quel fichier individuellement :

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

Ou tout restaurer :

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

Warning

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

Considérations de sécurité

  • Appliquez des droits d'accès stricts aux répertoires de sauvegarde (chmod 700).
  • Si vous utilisez SSH, désactivez la connexion par mot de passe et utilisez uniquement des clés.
  • Dans la mesure du possible, ne stockez pas les sauvegardes sur le même disque que le serveur.
  • Chiffrez les sauvegardes à distance à l'aide de LUKS ou d'un stockage chiffré si nécessaire.

Surveillance et journalisation

La journalisation est déjà configuré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 de l'espace disque grâce aux liens physiques
  • Un processus de restauration simple
  • Une planification entièrement automatisée

Cette méthode est fiable et facile à mettre en œuvre pour les administrateurs débutants ; elle fonctionne parfaitement sur les configurations de 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