Restic : sauvegardes chiffrées et dédupliquées sur Debian/Ubuntu

20 juillet 2026 — par admin_libra

Dans un environnement de production, la stratégie de sauvegarde est aussi critique que la haute disponibilité elle-même. Pourtant, beaucoup d’administrateurs se retrouvent avec des outils de backup vieillis — tar + cron, rsync naïf, scripts maison — qui ne garantissent ni l’intégrité des données, ni leur confidentialité, ni l’optimisation de l’espace disque. Restic s’impose en 2025-2026 comme la référence moderne pour répondre à ces trois exigences simultanément.

Développé en Go par Alexander Neumann, Restic offre nativement le chiffrement bout-en-bout (AES-256-CTR + Poly1305-AES), la déduplication par contenu (Rabin fingerprinting sur des blocs de taille variable) et la vérification d’intégrité cryptographique de chaque snapshot. Résultat : 60 à 80 % d’économie d’espace en moyenne sur des workloads serveur typiques, sans jamais stocker un seul octet en clair côté dépôt. Même si le serveur de destination est compromis, vos données restent illisibles.

Dans cet article, nous allons installer et configurer Restic sur Debian 12 (Bookworm) et Ubuntu 24.04 LTS, créer des dépôts sur différents backends (local, SFTP, compatible S3/MinIO), mettre en place une politique de rétention intelligente, puis automatiser l’ensemble via des unités systemd pour une sauvegarde quotidienne sans intervention manuelle.

Installation de Restic

La version disponible dans les dépôts officiels Debian/Ubuntu est parfois en retard sur les releases amont. Restic 0.18.1 est la dernière version stable (septembre 2025). Deux méthodes sont disponibles.

Via apt (méthode simple)

sudo apt update && sudo apt install -y restic
restic version

Via le binaire officiel (méthode recommandée)

Cette méthode garantit d’utiliser la version la plus récente et permet la mise à jour en place avec restic self-update :

RESTIC_VERSION=0.18.1
wget -O /tmp/restic.bz2 
  "https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic_${RESTIC_VERSION}_linux_amd64.bz2"
bunzip2 /tmp/restic.bz2
sudo install -m 755 /tmp/restic /usr/local/bin/restic
restic version

Pour mettre à jour ultérieurement :

sudo restic self-update

Initialiser un dépôt (repository)

Un repository Restic est l’endroit où seront stockés tous vos snapshots. Restic chiffre intégralement les données avant de les envoyer : le backend ne voit jamais rien en clair. Commencez par créer un fichier de mot de passe :

sudo mkdir -p /etc/restic
echo "VotreMotDePasseTrèsSécurisé!" | sudo tee /etc/restic/password.txt
sudo chmod 600 /etc/restic/password.txt

Dépôt local

restic init 
  --repo /srv/restic-repo 
  --password-file /etc/restic/password.txt

Dépôt SFTP (serveur distant)

Assurez-vous que l’authentification par clé SSH est configurée (voir article sur le durcissement SSH). Ajoutez dans ~/.ssh/config pour éviter les déconnexions :

Host backup-server
    ServerAliveInterval 60
    ServerAliveCountMax 240
restic init 
  --repo sftp:backup-user@backup-server:/srv/restic-repo 
  --password-file /etc/restic/password.txt

Dépôt compatible S3 / MinIO

Restic supporte tout service S3-compatible : AWS S3, MinIO (auto-hébergé), Wasabi, Backblaze B2…

export AWS_ACCESS_KEY_ID="votre-access-key"
export AWS_SECRET_ACCESS_KEY="votre-secret-key"

restic init 
  --repo s3:https://minio.example.com/restic-bucket 
  --password-file /etc/restic/password.txt

Pour centraliser la configuration, créez un fichier d’environnement :

cat > /etc/restic/env << 'EOF'
RESTIC_REPOSITORY=/srv/restic-repo
RESTIC_PASSWORD_FILE=/etc/restic/password.txt
EOF
chmod 600 /etc/restic/env

En sourçant ce fichier (source /etc/restic/env), vous n’aurez plus à spécifier --repo et --password-file à chaque commande.

Créer des sauvegardes

Premier backup

source /etc/restic/env
restic backup /etc /home /var/www

Restic affiche des statistiques détaillées à chaque exécution : données nouvelles ajoutées, données déjà présentes (déduplication), durée et vitesse de transfert.

Exclure les répertoires inutiles

Un fichier d’exclusions dédié est plus maintenable qu’une longue liste d’options :

cat > /etc/restic/excludes.txt << 'EOF'
/home/*/.cache
/home/*/.local/share/Trash
/var/cache
/var/tmp
/tmp
*.log.gz
*.sock
EOF
source /etc/restic/env
restic backup 
  --exclude-file /etc/restic/excludes.txt 
  --one-file-system 
  /etc /home /var/www

L’option --one-file-system empêche Restic de traverser les points de montage, évitant d’inclure accidentellement /proc, /sys ou des volumes NFS.

Taguer les snapshots

Les tags permettent d’identifier le contexte de chaque snapshot (production, pré-migration, test…) :

restic backup --tag production --tag web /var/www

Gérer et vérifier les snapshots

Lister les snapshots

source /etc/restic/env
restic snapshots

Vérifier l’intégrité du dépôt

À exécuter régulièrement pour détecter toute corruption silencieuse :

restic check

Pour une vérification complète des données (plus longue) :

restic check --read-data

Restaurer des données

Restaurer le dernier snapshot dans un répertoire temporaire

source /etc/restic/env
restic restore latest --target /mnt/restore

Restaurer un snapshot spécifique

restic snapshots           # identifier l'ID du snapshot
restic restore abc123ef --target /mnt/restore

Restaurer uniquement un sous-répertoire

restic restore latest 
  --include /etc/nginx 
  --target /mnt/restore

Monter le dépôt en lecture seule (FUSE)

Restic peut monter le dépôt comme un système de fichiers pour parcourir les snapshots interactivement :

sudo apt install -y fuse
mkdir /mnt/restic-mount
restic mount /mnt/restic-mount
# Les snapshots sont accessibles sous /mnt/restic-mount/snapshots/
# Ctrl+C pour démonter

Politique de rétention

Sans rotation, le dépôt croît indéfiniment. La commande forget applique une politique de rétention, tandis que prune libère l’espace physique des données orphelines.

source /etc/restic/env
# Simuler d'abord avec --dry-run
restic forget 
  --keep-daily 7 
  --keep-weekly 4 
  --keep-monthly 6 
  --keep-yearly 2 
  --prune 
  --dry-run

# Appliquer réellement
restic forget 
  --keep-daily 7 
  --keep-weekly 4 
  --keep-monthly 6 
  --keep-yearly 2 
  --prune

Cette politique conserve : 1 snapshot par jour (7 jours), 1 par semaine (4 semaines), 1 par mois (6 mois), 1 par an (2 ans). Adaptez ces valeurs à votre RPO.

Automatisation avec systemd

Les timers systemd sont plus robustes que cron : ils rattrapent les exécutions manquées (serveur éteint) grâce à Persistent=true.

Service systemd

cat > /etc/systemd/system/restic-backup.service << 'EOF'
[Unit]
Description=Sauvegarde Restic quotidienne
After=network.target

[Service]
Type=oneshot
EnvironmentFile=/etc/restic/env
ExecStart=/usr/local/bin/restic backup 
  --exclude-file /etc/restic/excludes.txt 
  --one-file-system 
  /etc /home /var/www
ExecStartPost=/usr/local/bin/restic forget 
  --keep-daily 7 
  --keep-weekly 4 
  --keep-monthly 6 
  --prune
StandardOutput=journal
StandardError=journal
EOF

Timer systemd

cat > /etc/systemd/system/restic-backup.timer << 'EOF'
[Unit]
Description=Déclencheur quotidien — Sauvegarde Restic

[Timer]
OnCalendar=daily
RandomizedDelaySec=1h
Persistent=true

[Install]
WantedBy=timers.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now restic-backup.timer
systemctl list-timers restic-backup.timer

La directive RandomizedDelaySec=1h étale aléatoirement le déclenchement pour éviter la saturation du backend si plusieurs serveurs sauvegardent vers le même dépôt.

Surveiller les sauvegardes

# Voir les dernières exécutions
journalctl -u restic-backup.service --since "7 days ago"

# Vérifier l'état du timer
systemctl status restic-backup.timer

À lire également

Références

Index complet

Tous les articles (58)

Date Article Tags
20/07/2026 SSL : Certificat Let's Encrypt avec Certbot sur Debian/Ubuntu (sans Snap) apache certbot certificat 20/07/2026 MariaDB : Tuning mariadb server sous debian / ubuntu et operation de maintenance sauvegarde/restauration debian innodb maintenance 20/07/2026 MariaDB : Mise en place d'une réplication Master → Slave base-de-données binlog debian 20/07/2026 OpenSVC : piloter des conteneurs LXC sur datasets ZFS avec snapshots et réplication sous Debian/Ubuntu conteneurs debian haute-disponibilité 20/07/2026 SCREEN : utilisation et cas d'usage des screens sous Linux administration bash debian 20/07/2026 EtherPAD : installation et configuration d'Etherpad collaboration debian editeur-collaboratif 20/07/2026 Wazuh 4.14 : déployer un SIEM/XDR open source sur Debian/Ubuntu compliance debian fim 20/07/2026 Incus 7.x : gérer conteneurs système et VMs sur Debian/Ubuntu — le successeur communautaire de LXD conteneurs debian incus 20/07/2026 Restic : sauvegardes incrémentielles chiffrées sur Debian et Ubuntu backup chiffrement debian 20/07/2026 Restic : sauvegardes chiffrées et dédupliquées sur Debian/Ubuntu automatisation backup chiffrement 30/06/2026 PHP : gérer plusieurs versions PHP-FPM avec les dépôts Sury sur Debian/Ubuntu administration apache debian 22/06/2026 OS : Cycle de vie LTS et mise à jour des distributions — apt dist-upgrade et do-release-upgrade sous Debian / Ubuntu apt cycle-de-vie debian 17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs