27 octobre 2026

Configurer une réplication de fichiers NFS entre deux serveurs RHEL 9 avec rsync et systemd

Configurer une réplication de fichiers NFS entre deux serveurs RHEL 9 avec rsync et systemdlinux
Photo: Brett Sayles / Pexels
🖥️ Illustration
root@primary.example.com:~# rsync -az –delete -e « ssh -i /home/rsync-sync/.ssh/id_ed25519 » /export/shared/ rsync-sync@secondary.example.com:/export/shared/
sending incremental file list
created directory /export/shared/subdir
./
subdir/
subdir/file1.txt
subdir/file2.log
sent 12.34K bytes received 1.23K bytes 27.14K bytes/sec
total size is 45.67M speedup is 3.45

Contexte

Dans un environnement Linux, il est fréquent de partager des fichiers via NFS entre plusieurs serveurs. Pour garantir la disponibilité et la résilience des données, on peut répliquer régulièrement le contenu d’un export NFS vers un serveur de secours. La combinaison rsync (synchronisation efficace) et systemd (planification fiable) permet d’automatiser cette tâche sans dépendre de cron.

rsync NFS RHEL9linux
Photo: panumas nikhomkhai / Pexels

Quand l’utiliser ?

  • Vous avez deux serveurs RHEL 9 (serveur primary et serveur secondary) qui exportent le même répertoire NFS.
  • Vous souhaitez que les changements du serveur primaire soient propagés toutes les 15 minutes vers le serveur secondaire.
  • Vous avez besoin d’une solution simple, sans installer de logiciel de réplication dédié.

🔹 Étapes de mise en place

  1. Pré‑requis : les deux serveurs doivent disposer d’un accès réseau mutuel et d’un export NFS déjà configuré.
  2. Installer rsync sur les deux machines.
  3. sudo dnf install -y rsync
  4. Créer un compte de réplication dédié (optionnel mais recommandé).
  5. sudo useradd -r -s /sbin/nologin rsync-sync
    sudo passwd -l rsync-sync
  6. Configurer l’accès SSH sans mot de passe entre le serveur primaire et secondaire pour l’utilisateur rsync-sync.
  7. # Sur le serveur primaire
    sudo -u rsync-sync ssh-keygen -t ed25519 -N "" -f /home/rsync-sync/.ssh/id_ed25519
    sudo -u rsync-sync ssh-copy-id -i /home/rsync-sync/.ssh/id_ed25519.pub rsync-sync@secondary.example.com
  8. Créer le script de réplication sur le serveur primaire.
  9. sudo tee /usr/local/bin/rsync_nfs.sh > /dev/null <<'EOF'
    #!/bin/bash
    SRC="/export/shared"
    DEST="rsync-sync@secondary.example.com:/export/shared"
    LOG="/var/log/rsync_nfs.log"
    rsync -az --delete -e "ssh -i /home/rsync-sync/.ssh/id_ed25519" "$SRC/" "$DEST/" >> "$LOG" 2>&1
    EOF
    sudo chmod +x /usr/local/bin/rsync_nfs.sh
  10. Créer le service systemd qui exécutera le script.
  11. sudo tee /etc/systemd/system/rsync-nfs.service > /dev/null <<'EOF'
    [Unit]
    Description=Synchronisation NFS vers serveur secondaire
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=oneshot
    User=rsync-sync
    ExecStart=/usr/local/bin/rsync_nfs.sh
    EOF
    
    sudo tee /etc/systemd/system/rsync-nfs.timer > /dev/null <<'EOF'
    [Unit]
    Description=Timer pour rsync-nfs.service toutes les 15 minutes
    
    [Timer]
    OnBootSec=5min
    OnUnitActiveSec=15min
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    EOF
    
    # Activer le timer
    sudo systemctl daemon-reload
    sudo systemctl enable --now rsync-nfs.timer
  12. Vérifier le bon fonctionnement en consultant le journal.
  13. sudo systemctl status rsync-nfs.service
    sudo journalctl -u rsync-nfs.service -n 20

⚠️ Méthode alternative

Si vous préférez éviter SSH, vous pouvez utiliser rsync en mode daemon (port 873) et sécuriser l’accès avec hosts.allow/hosts.deny ou un pare‑feu. Le principe reste le même, mais le script devra appeler rsync rsync://rsync-sync@secondary.example.com/export/shared/.

✅ Bonnes pratiques de sécurité

  • Utilisez un compte système sans shell (/sbin/nologin) pour la réplication.
  • Restreignez la clé SSH à l’exécution de rsync uniquement : ajoutez command="rsync --server ..." dans ~/.ssh/authorized_keys.
  • Activez SELinux en mode enforcing et assurez‑vous que le contexte rsync_var_run_t est appliqué aux répertoires.
  • Surveillez les logs (/var/log/rsync_nfs.log) et configurez une alerte en cas d’échec.

✅ Conclusion

Vous avez maintenant un mécanisme fiable et léger qui réplique automatiquement vos exports NFS toutes les 15 minutes. La solution repose uniquement sur des outils natifs de RHEL 9, garantit la cohérence des données grâce à --delete, et profite de la robustesse de systemd pour la planification. N’hésitez pas à ajuster la fréquence ou à ajouter des notifications par e‑mail en enrichissant le script.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *