Accueil » Formations » Hygiène numérique » Sauvegardes 3-2-1 avec Restic » TP06 – Automatiser les sauvegardes avec systemd
← Sauvegardes 3-2-1 avec Restic

// travaux pratiques · Hygiène numérique

TP06 - Automatiser les sauvegardes avec systemd

  • TP 6 / 8
  • 7 étapes
  • ≈ 60 min
  • Accès libre

Objectif : automatiser chaque nuit la sauvegarde des fichiers et de la base de données de srv01 avec un service et un timer systemd, appliquer la rétention et exploiter les journaux pour détecter un échec.

Prérequis :

  • TP04 et TP05 terminés (dépôt SFTP opérationnel, MariaDB installé).
  • Session root sur srv01.

Actions à réaliser :

  1. Centraliser la configuration dans un fichier d’environnement.

    cat > /etc/restic/sftp.env <<'EOF'
    RESTIC_REPOSITORY=sftp:restic@192.168.56.20:/srv/restic/srv01
    RESTIC_PASSWORD_FILE=/etc/restic/sftp.pass
    EOF
    chmod 600 /etc/restic/sftp.env
  2. Écrire le script de sauvegarde.

    cat > /usr/local/sbin/restic-backup.sh <<'EOF'
    #!/bin/bash
    set -euo pipefail
    restic backup /etc /srv/data --exclude-file=/etc/restic/excludes.txt --tag fichiers --tag auto
    restic backup --tag base-de-donnees --tag auto --stdin-filename all-databases.sql \
      --stdin-from-command -- mariadb-dump --all-databases --single-transaction
    restic forget --tag auto --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
    EOF
    chmod 700 /usr/local/sbin/restic-backup.sh

    Avec set -e, tout code de retour différent de 0 (y compris le code 3, fichiers illisibles) interrompt le script et marque le service en échec.

  3. Créer le service.

    cat > /etc/systemd/system/restic-backup.service <<'EOF'
    [Unit]
    Description=Sauvegarde restic de srv01
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    Type=oneshot
    EnvironmentFile=/etc/restic/sftp.env
    ExecStart=/usr/local/sbin/restic-backup.sh
    Nice=10
    IOSchedulingClass=idle
    EOF
  4. Créer le timer.

    cat > /etc/systemd/system/restic-backup.timer <<'EOF'
    [Unit]
    Description=Sauvegarde restic quotidienne
    
    [Timer]
    OnCalendar=*-*-* 01:00:00
    RandomizedDelaySec=15min
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    EOF
    systemctl daemon-reload
    systemctl enable --now restic-backup.timer
    systemctl list-timers restic-backup.timer

    Persistent=true déclenche la sauvegarde au démarrage si la machine était éteinte à l’heure prévue.

  5. Lancer une exécution immédiate et lire le journal.

    systemctl start restic-backup.service
    systemctl status restic-backup.service --no-pager
    journalctl -u restic-backup.service -n 30 --no-pager
  6. Provoquer un échec et le détecter. Coupez l’accès au serveur de sauvegarde, relancez, puis rétablissez :

    iptables -I OUTPUT -d 192.168.56.20 -j REJECT
    systemctl start restic-backup.service
    systemctl is-failed restic-backup.service
    iptables -D OUTPUT -d 192.168.56.20 -j REJECT

    systemctl is-failed répond failed : c’est l’état que votre supervision doit surveiller.

  7. Contrôler la fraîcheur des sauvegardes.

    apt -y install jq
    set -a; . /etc/restic/sftp.env; set +a
    restic snapshots --tag auto --latest 1 --json | jq -r '.[] | .time + " " + (.paths | join(","))'

Vérification / résultat attendu :

  • systemctl list-timers affiche la prochaine exécution vers 1 h du matin.
  • Après l’exécution manuelle, deux nouveaux instantanés étiquetés auto existent (fichiers et base de données).
  • L’échec simulé est visible dans journalctl et via systemctl is-failed.

Pour aller plus loin : ajoutez une directive OnFailure= dans la section [Unit] pour déclencher une unité d’alerte (courriel, webhook vers votre outil de supervision), et planifiez un second timer hebdomadaire qui exécute restic check --read-data-subset=1/5. Pour réduire les privilèges, la documentation de restic décrit l’exécution avec DynamicUser=yes et la seule capacité CAP_DAC_READ_SEARCH.

// formation sur mesure

Former votre équipe sur ce sujet ?

Azur Secure anime des sessions intra-entreprise, à distance ou dans vos locaux sur la Côte d'Azur, adaptées au niveau de vos équipes.

Demander un programme
Défiler vers le haut