Sauvegarde / Tutoriel

Sauvegarder un serveur Linux avec restic

Mettre en place une sauvegarde chiffrée, dédupliquée et automatique vers un NAS, avec rétention et test de restauration.

Sauvegarde Tutoriel Intermédiaire Publié le 18 octobre 2026 14 min de lecture Testé sur : Ubuntu 24.04, restic 0.16. Les commandes sont identiques avec les versions plus récentes.
Baie de serveurs et câbles réseau
Photo : Taylor Vick sur Unsplash

Avant de commencer

  • Un serveur Linux avec un compte sudo
  • Une destination : un NAS joignable en SFTP (SSH), un disque monté, ou un stockage compatible S3
  • Avoir lu la règle 3-2-1 pour savoir où placer cette sauvegarde dans votre stratégie

restic est un outil de sauvegarde libre, en un seul binaire, disponible sous Linux, Windows et macOS. Il chiffre tout avant l'envoi, déduplique les données (seuls les blocs modifiés sont envoyés après la première sauvegarde) et garde un historique que vous élaguez selon vos règles.

Nous allons sauvegarder /etc et /home d'un serveur vers un NAS en SFTP, chaque nuit.

1. Installer restic

sudo apt install restic          # Debian, Ubuntu
sudo dnf install restic          # Fedora, RHEL (dépôt EPEL)
restic version

2. Préparer l'accès au NAS

restic se connecte au NAS en SFTP avec une clé SSH sans phrase de passe, puisque la sauvegarde tourne sans vous. Créez une clé dédiée pour le compte root, qui exécutera la sauvegarde :

sudo ssh-keygen -t ed25519 -f /root/.ssh/restic_nas -N "" -C "restic@$(hostname)"
sudo ssh-copy-id -i /root/.ssh/restic_nas.pub sauvegarde@nas.maison.lan

Côté NAS, utilisez un compte dédié (sauvegarde) qui n'a accès qu'au dossier des sauvegardes.

Puis déclarez la clé pour cet hôte :

sudo nano /root/.ssh/config
Host nas.maison.lan
    User sauvegarde
    IdentityFile /root/.ssh/restic_nas

Testez : sudo ssh nas.maison.lan doit se connecter sans rien demander.

3. Créer le dépôt chiffré

Le mot de passe du dépôt chiffre toutes les données. Générez-en un solide et stockez-le dans un fichier lisible par root seulement :

sudo install -d -m 700 /etc/restic
openssl rand -base64 32 | sudo tee /etc/restic/motdepasse > /dev/null
sudo chmod 600 /etc/restic/motdepasse

Danger

Sans ce mot de passe, la sauvegarde est irrécupérable. Copiez-le immédiatement dans votre gestionnaire de mots de passe. Si le serveur meurt, c'est la seule chose dont vous aurez besoin pour restaurer.

Créez un fichier de variables, utilisé par les commandes et par la tâche automatique :

sudo nano /etc/restic/env
RESTIC_REPOSITORY=sftp:nas.maison.lan:/volume1/sauvegardes/serveur
RESTIC_PASSWORD_FILE=/etc/restic/motdepasse

Initialisez le dépôt :

sudo bash -c 'set -a; . /etc/restic/env; restic init'

4. Première sauvegarde

sudo bash -c 'set -a; . /etc/restic/env; restic backup /etc /home --exclude-caches --tag quotidien'

La première sauvegarde envoie tout. Les suivantes ne transfèrent que les différences et sont bien plus rapides.

Listez les instantanés :

sudo bash -c 'set -a; . /etc/restic/env; restic snapshots'

Bases de données et applications

Copier les fichiers d'une base en cours d'écriture peut produire une sauvegarde incohérente. Faites d'abord un export (pg_dump, mysqldump, sqlite3 base.db ".backup export.db") dans un dossier inclus dans la sauvegarde, ou arrêtez le service le temps de la copie.

5. Automatiser avec un timer systemd

Le service, qui sauvegarde, élague les anciens instantanés et vérifie le dépôt :

sudo nano /etc/systemd/system/restic-sauvegarde.service
[Unit]
Description=Sauvegarde restic vers le NAS
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
# Cache de restic : accélère fortement les sauvegardes suivantes
CacheDirectory=restic
Environment=RESTIC_CACHE_DIR=/var/cache/restic
ExecStart=/usr/bin/restic backup /etc /home --exclude-caches --tag quotidien
ExecStart=/usr/bin/restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
ExecStart=/usr/bin/restic check
Nice=10
IOSchedulingClass=idle

Le minuteur, chaque nuit à 2 h avec un décalage aléatoire :

sudo nano /etc/systemd/system/restic-sauvegarde.timer
[Unit]
Description=Sauvegarde restic quotidienne

[Timer]
OnCalendar=*-*-* 02:00
RandomizedDelaySec=30min
Persistent=true

[Install]
WantedBy=timers.target

Persistent=true lance la sauvegarde au démarrage si le serveur était éteint à l'heure prévue.

Activez et testez :

sudo systemctl daemon-reload
sudo systemctl enable --now restic-sauvegarde.timer
sudo systemctl start restic-sauvegarde.service     # lancement immédiat pour tester
systemctl list-timers restic-sauvegarde.timer
journalctl -u restic-sauvegarde.service -n 50

La politique de rétention

La commande forget conserve :

Règle Conserve
--keep-daily 7 Une sauvegarde par jour sur les 7 derniers jours
--keep-weekly 4 Une par semaine sur les 4 dernières semaines
--keep-monthly 12 Une par mois sur les 12 derniers mois

--prune supprime ensuite réellement les données qui ne servent plus à aucun instantané.

6. Tester la restauration

Une sauvegarde n'a de valeur que si on sait la restaurer. Restaurez dans un dossier temporaire, jamais par-dessus les fichiers en place :

sudo bash -c 'set -a; . /etc/restic/env; restic restore latest --target /tmp/restauration --include /etc/hostname'
cat /tmp/restauration/etc/hostname

restic recrée l'arborescence complète sous le dossier cible : /etc/hostname devient /tmp/restauration/etc/hostname.

Pour récupérer un fichier en naviguant, montez le dépôt (nécessite le paquet fuse3) :

sudo mkdir -p /mnt/restic
sudo bash -c 'set -a; . /etc/restic/env; restic mount /mnt/restic'
# dans un autre terminal : sudo ls /mnt/restic/snapshots/

Astuce

Une fois par mois, vérifiez aussi une partie des données elles-mêmes, pas seulement la structure du dépôt : restic check --read-data-subset=5%

Aller plus loin

  • Deuxième destination (règle 3-2-1) : ajoutez un dépôt hors site (stockage S3 européen, NAS chez un proche) avec un second service, ou copiez le dépôt avec restic copy.
  • Alerte en cas d'échec : ajoutez OnFailure= dans le service vers une unité qui envoie une notification (ntfy, e-mail), ou un ping vers un service comme Healthchecks.
  • Protection contre les rançongiciels : activez les instantanés en lecture seule côté NAS, pour qu'un serveur compromis ne puisse pas effacer son propre historique.

À lire aussi