Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Sauvegarde rsync mirror eole2 2 beotos3

De AJLSM
Aller à la navigation Aller à la recherche

Sauvegarde rsync mirror (beotos3)

[modifier | modifier le wikicode]
Notice :
Pour vérifier les commandes en cours et avoir un état actuel du fonctionnement, lancer la commande suite : check-backup-rsync (sur beotos3).

Ce système permet de synchroniser les données clients depuis le serveur de données **eole2** vers le serveur de sauvegarde **beotos3**.

Il fournit :

  • synchronisation incrémentale via rsync
  • protection contre suppression accidentelle
  • quarantaine des fichiers supprimés
  • rapports HTML
  • envoi de courriels de supervision
  • rotation automatique des logs

Le système est installé dans :

/opt/rsync_mirror

---

                 +-----------------------+
                 |        eole2          |
                 | serveur de données    |
                 | 193.70.47.97          |
                 +-----------+-----------+
                             |
                             | rsync (SSH)
                             v
                 +-----------------------+
                 |        beotos3        |
                 | serveur de sauvegarde |
                 +-----------+-----------+
                             |
             +---------------+---------------+
             |                               |
             v                               v

      miroir principal                quarantaine
     /var/data/<client>         /data-backup/rsync-quarantine

                             |
                             v
                     rapports + mails

---

Fonctionnement d'une synchronisation

[modifier | modifier le wikicode]
  1. lecture de config.sh
  2. lecture de targets.csv
  3. vérification source et destination
  4. comptage des fichiers source
  5. lancement de rsync
  6. déplacement des suppressions en quarantaine
  7. génération des rapports HTML
  8. envoi du courriel de synthèse

---

/opt/rsync_mirror
├── archive-logs-rsync-mirror.sh
├── config.sh
├── logs/
├── purge_quarantine.sh
├── reports/
│   ├── admin/
│   └── clients/
├── rsync_mirror_clients.sh
├── targets.csv
└── tmp/

---

Description des scripts

[modifier | modifier le wikicode]

Fichier de configuration global.

Il contient :

  • chemins de travail
  • paramètres rsync
  • configuration mail
  • mode test
  • paramètres de sécurité

Paramètres importants

[modifier | modifier le wikicode]

Mode test :

DRY_RUN=1

Mode réel :

DRY_RUN=0

Expéditeur mail :

MAIL_SENDER="arvers@ajlsm.com"

Mode mail :

MAIL_MODE="admin_only"

---

Liste des cibles synchronisées.

Format :

type;label;src;dst;emails;organisation;group

Exemple :

CLIENT;ad53;/var/data/ad53-data;/var/data/ad53-data;contact@client.tld;AD53;clients

Signification :

Champ Description
type CLIENT ou ADMIN_GROUP
label identifiant court
src chemin source sur eole2
dst destination sur beotos3
emails destinataires
organisation nom client
group catégorie logique

---

rsync_mirror_clients.sh

[modifier | modifier le wikicode]

Script principal.

Fonctions :

  • lecture de targets.csv
  • synchronisation rsync
  • création des rapports
  • gestion de la quarantaine
  • envoi des mails

Sécurités :

  • arrêt si source absente
  • arrêt si destination absente
  • arrêt si source anormalement vide
  • alerte si suppression massive

---

purge_quarantine.sh

[modifier | modifier le wikicode]

Nettoie les fichiers en quarantaine.

Les fichiers supprimés sont conservés pendant 7 jours.

Emplacement :

/data-backup/rsync-quarantine

Structure :

rsync-quarantine
 └── client
     └── date

Après expiration du délai, les fichiers sont supprimés.

---

archive-logs-rsync-mirror.sh

[modifier | modifier le wikicode]

Script de rotation des logs.

Fonctions :

  • archive mensuelle des logs
  • compression en .gz
  • conservation de 3 mois

Exemples :

session_2026-03.log.gz
report_admin_2026-03.html.gz

---

Répertoire :

/opt/rsync_mirror/logs

Types de logs :

  • session rsync
  • logs rsync bruts
  • logs par client

Exemples :

session_2026-03-09_12-34.log
rsync_raw_2026-03-09_12-34.log
ad53_2026-03-09_12-34.log

---

Répertoire :

/opt/rsync_mirror/reports

Structure :

reports
 ├── admin
 └── clients

Rapport admin :

report_admin_YYYY-MM-DD_HH-MM.html

---

Les fichiers supprimés par rsync sont déplacés dans :

/data-backup/rsync-quarantine

Structure :

rsync-quarantine
 └── client
     └── YYYY-MM-DD_HH-MM

Exemple :

/data-backup/rsync-quarantine/ad53/2026-03-09_12-34/

---

Lorsque :

DRY_RUN=1
  • aucune modification n'est appliquée
  • la quarantaine est créée
  • les fichiers ne sont pas réellement déplacés

---

Crontab actuelle :

# rsync entre eole et beotos
18 17 * * 5 /opt/rsync_mirror/rsync_mirror_clients.sh

# rotation des logs
15 6 1 * * /opt/rsync_mirror/archive-logs-rsync-mirror.sh >> /opt/rsync_mirror/logs/archive-logs-rsync-mirror-run.log 2>&1

Cron recommandé pour la quarantaine :

30 6 * * * /opt/rsync_mirror/purge_quarantine.sh >> /opt/rsync_mirror/logs/purge-quarantine-run.log 2>&1

---

Procédure de test

[modifier | modifier le wikicode]

Mettre le script en mode test :

DRY_RUN=1

Lancer :

/opt/rsync_mirror/rsync_mirror_clients.sh

Vérifier :

  • les logs
  • les rapports
  • les mails

---

Sauvegarde de la configuration

[modifier | modifier le wikicode]

Fichiers critiques :

  • config.sh
  • targets.csv
  • rsync_mirror_clients.sh

Sauvegarde simple :

cp targets.csv targets.csv.bak
cp config.sh config.sh.bak

---

Élément Rôle
config.sh configuration globale
targets.csv liste des synchronisations
rsync_mirror_clients.sh script principal
purge_quarantine.sh nettoyage quarantaine
archive-logs-rsync-mirror.sh rotation logs
logs journaux techniques
reports rapports HTML

Troubleshooting – rsync mirror beotos3

[modifier | modifier le wikicode]

Cette page regroupe les procédures de diagnostic et de dépannage du système de synchronisation rsync.

---

Vérifier que le cron fonctionne

[modifier | modifier le wikicode]

Voir le cron :

crontab -l

Cron attendu :

18 17 * * 5 /opt/rsync_mirror/rsync_mirror_clients.sh

Voir les logs récents :

ls -ltr /opt/rsync_mirror/logs | tail

Vérifier le dernier run :

tail -50 /opt/rsync_mirror/logs/session_*.log

---

Lancer une synchronisation manuelle

[modifier | modifier le wikicode]

Pour tester sans attendre le cron :

/opt/rsync_mirror/rsync_mirror_clients.sh

Voir les logs :

tail -100 /opt/rsync_mirror/logs/session_*.log

---

Mode test (DRY RUN)

[modifier | modifier le wikicode]

Dans :

/opt/rsync_mirror/config.sh

Mettre :

DRY_RUN=1

Dans ce mode :

  • aucun fichier n'est modifié
  • les suppressions sont simulées
  • les mails et rapports sont générés

---

Vérifier la connexion SSH vers eole2

[modifier | modifier le wikicode]

Test :

ssh root@193.70.47.97

Si problème :

Vérifier la clé :

ls -l /root/.ssh/id_rsa

Tester rsync simple :

rsync -av root@193.70.47.97:/var/data/

---

Vérifier les mails

[modifier | modifier le wikicode]

Test simple :

printf "From: arvers@ajlsm.com\nTo: arvers@ajlsm.com\nSubject: test rsync\n\nTest mail\n" | sendmail -t

Voir la queue mail :

mailq

Voir les logs postfix :

tail -50 /var/log/mail.log

Vérifier que postfix écoute seulement en local :

postconf inet_interfaces

Doit retourner :

inet_interfaces = loopback-only

---

Vérifier les suppressions détectées

[modifier | modifier le wikicode]

Dans les logs :

grep deleting /opt/rsync_mirror/logs/rsync_raw_*.log

Ou :

grep "Number of deleted files" /opt/rsync_mirror/logs/*.log

---

Vérifier la quarantaine

[modifier | modifier le wikicode]

Emplacement :

/data-backup/rsync-quarantine

Structure :

rsync-quarantine
 └── client
     └── date

Exemple :

ls /data-backup/rsync-quarantine/ad53/

---

Restaurer un fichier depuis la quarantaine

[modifier | modifier le wikicode]

Exemple :

cp /data-backup/rsync-quarantine/ad53/2026-03-09_12-34/fichier \
   /var/data/ad53-data/

---

Vérifier le nombre de fichiers source

[modifier | modifier le wikicode]

Le script vérifie que la source ne semble pas vide.

Commande utilisée :

ssh root@193.70.47.97 "find /var/data/ad53-data -type f | wc -l"

Si le nombre est anormalement faible, la synchronisation est annulée.

Message dans les logs :

[SECURITY] Synchronisation annulée pour éviter une purge accidentelle

---

Vérifier les suppressions massives

[modifier | modifier le wikicode]

Si beaucoup de fichiers sont supprimés :

le script déclenche une alerte.

Voir dans les logs :

grep SECURITY /opt/rsync_mirror/logs/*.log

---

Vérifier les rapports HTML

[modifier | modifier le wikicode]

Rapports admin :

ls /opt/rsync_mirror/reports/admin

Rapports clients :

ls /opt/rsync_mirror/reports/clients

Ouvrir un rapport :

less report_admin_YYYY-MM-DD_HH-MM.html

---

Vérifier la rotation des logs

[modifier | modifier le wikicode]

Script :

archive-logs-rsync-mirror.sh

Voir les archives :

ls /opt/rsync_mirror/logs/*.gz

Les archives sont :

  • mensuelles
  • conservées 3 mois

---

Vérifier la purge de quarantaine

[modifier | modifier le wikicode]

Script :

purge_quarantine.sh

Test manuel :

/opt/rsync_mirror/purge_quarantine.sh

Voir les répertoires :

ls /data-backup/rsync-quarantine

---

Diagnostiquer un problème rsync

[modifier | modifier le wikicode]

Test direct :

rsync -av root@193.70.47.97:/var/data/ad53-data/ /tmp/test/

Vérifier :

  • droits SSH
  • espace disque
  • latence réseau

---

Vérifier l'espace disque

[modifier | modifier le wikicode]

Sur beotos3 :

df -h

Sur le pool ZFS :

zfs list

---

Vérifier les gros transferts

[modifier | modifier le wikicode]

Voir les stats rsync :

grep "Total transferred file size" /opt/rsync_mirror/logs/*.log

---

Checklist rapide

[modifier | modifier le wikicode]
Vérification Commande
cron crontab -l
logs tail -50 logs/session_*.log
mail tail -50 /var/log/mail.log
rsync rsync -av source destination
quarantaine ls /data-backup/rsync-quarantine
rapports ls reports/admin
espace disque df -h

Restaurer un fichier supprimé

[modifier | modifier le wikicode]
ls /data-backup/rsync-quarantine/client/

cp /data-backup/rsync-quarantine/client/date/fichier \
   /var/data/client/

Architecture du système de sauvegarde rsync (beotos3)

[modifier | modifier le wikicode]

Cette page décrit l'architecture du système de synchronisation entre les serveurs **eole2** et **beotos3**.

Le système est basé sur :

  • rsync
  • SSH
  • quarantaine des suppressions
  • rapports HTML
  • supervision par courriel

---


Objectif du système

[modifier | modifier le wikicode]

Assurer une **copie miroir sécurisée des données clients** du serveur de production vers le serveur de sauvegarde.

Le système protège contre :

  • suppression accidentelle
  • source vide ou mal montée
  • suppression massive
  • erreur humaine

---

Infrastructure

[modifier | modifier le wikicode]
          SERVEUR SOURCE
          eole2
          193.70.47.97
          /var/data/<clients>

                │
                │ rsync via SSH (mode PULL)
                ▼

          SERVEUR BACKUP
          beotos3
          /var/data/<clients>

                │
                ├── logs
                ├── rapports HTML
                └── quarantaine

---

Principe du mode PULL

[modifier | modifier le wikicode]

La synchronisation est lancée **depuis beotos3**.

Avantages :

  • le serveur backup initie les connexions
  • aucune ouverture réseau sur eole2
  • meilleure sécurité
  • possibilité d'arrêter la synchronisation si problème

Commande utilisée :

rsync root@eole2:/var/data/client-data/ /var/data/client-data/

---

Flux de synchronisation

[modifier | modifier le wikicode]
1. Cron démarre rsync_mirror_clients.sh
2. Lecture de config.sh
3. Lecture de targets.csv
4. Pour chaque client :
      vérification source
      vérification destination
      comptage des fichiers source
      lancement rsync
      analyse des suppressions
      déplacement vers quarantaine
      génération du rapport
5. génération du rapport global admin
6. envoi du mail
7. écriture des logs

---

Sécurité contre suppression accidentelle

[modifier | modifier le wikicode]

Le système inclut plusieurs protections.

Vérification de la source

[modifier | modifier le wikicode]

Avant rsync :

ssh eole2 "find /var/data/client -type f | wc -l"

Si la source semble vide :

  • synchronisation annulée

Message :

[SECURITY] Synchronisation annulée pour éviter une purge accidentelle

---

Détection de suppression massive

[modifier | modifier le wikicode]

Si trop de fichiers sont supprimés :

  • alerte dans le rapport
  • vérification manuelle recommandée

Objectif :

éviter la propagation d'une suppression massive vers le backup.

---

Quarantaine des suppressions

[modifier | modifier le wikicode]

Les fichiers supprimés par rsync sont conservés temporairement.

Emplacement :

/data-backup/rsync-quarantine

Structure :

rsync-quarantine
 └── client
     └── YYYY-MM-DD_HH-MM

Exemple :

/data-backup/rsync-quarantine/ad53/2026-03-09_12-34/

Durée de conservation :

7 jours

Après ce délai :

  • purge automatique via script

---

Logs et rapports

[modifier | modifier le wikicode]

Logs techniques

[modifier | modifier le wikicode]
/opt/rsync_mirror/logs

Types :

  • session rsync
  • logs rsync bruts
  • logs par client

---

/opt/rsync_mirror/reports

Structure :

reports
 ├── admin
 └── clients

Rapport admin :

report_admin_YYYY-MM-DD_HH-MM.html

---

Envoi des mails

[modifier | modifier le wikicode]

Le script envoie :

  • un rapport global admin
  • éventuellement des rapports clients

Configuration :

MAIL_MODE="admin_only"
MAIL_SENDER="arvers@ajlsm.com"

Postfix est configuré pour écouter uniquement en local :

inet_interfaces = loopback-only

---

Rotation des logs

[modifier | modifier le wikicode]

Script :

archive-logs-rsync-mirror.sh

Fonctions :

  • compression mensuelle
  • conservation 3 mois

Exemples :

session_2026-03.log.gz
report_admin_2026-03.html.gz

---

Purge de la quarantaine

[modifier | modifier le wikicode]

Script :

purge_quarantine.sh

Supprime :

  • les répertoires de quarantaine de plus de 7 jours

---

Synchronisation hebdomadaire :

18 17 * * 5 /opt/rsync_mirror/rsync_mirror_clients.sh

Rotation logs :

15 6 1 * * /opt/rsync_mirror/archive-logs-rsync-mirror.sh

Purge quarantaine :

30 6 * * * /opt/rsync_mirror/purge_quarantine.sh

---

Avantages de cette architecture

[modifier | modifier le wikicode]
  • synchronisation incrémentale rapide
  • sécurité contre suppression accidentelle
  • conservation temporaire des suppressions
  • supervision par mail
  • historique des opérations

---

Ce système n'est pas :

  • une sauvegarde versionnée
  • une sauvegarde immuable

C'est un **miroir sécurisé avec quarantaine temporaire**.

---

Évolutions possibles

[modifier | modifier le wikicode]

Améliorations possibles :

  • seuil configurable de suppression massive
  • journalisation Prometheus
  • dashboard Grafana
  • snapshot ZFS automatique

Restauration des données – rsync mirror beotos3

[modifier | modifier le wikicode]

Cette page décrit les procédures de restauration des données à partir du serveur de sauvegarde **beotos3**.

Les restaurations peuvent se faire :

  • depuis le miroir principal
  • depuis la quarantaine

---


Types de restauration

[modifier | modifier le wikicode]
Situation Méthode
fichier supprimé récemment quarantaine
fichier modifié ou corrompu miroir principal
dossier supprimé quarantaine
client supprimé entièrement restauration complète

---

  1. 1. Restaurer un fichier supprimé

Si un fichier a été supprimé récemment, il peut être présent dans la quarantaine.

Emplacement :

/data-backup/rsync-quarantine

Structure :

rsync-quarantine
 └── client
     └── date

Exemple :

/data-backup/rsync-quarantine/ad53/2026-03-09_12-34/

Chercher le fichier :

find /data-backup/rsync-quarantine/ad53 -name "fichier.pdf"

Restaurer :

cp /data-backup/rsync-quarantine/ad53/2026-03-09_12-34/fichier.pdf \
   /var/data/ad53-data/

---

  1. 2. Restaurer un dossier supprimé

Chercher le dossier :

find /data-backup/rsync-quarantine/ad53 -type d -name "dossier"

Restaurer :

cp -r /data-backup/rsync-quarantine/ad53/2026-03-09_12-34/dossier \
      /var/data/ad53-data/

---

  1. 3. Restaurer plusieurs fichiers

Utiliser rsync :

rsync -av \
/data-backup/rsync-quarantine/ad53/2026-03-09_12-34/ \
/var/data/ad53-data/

---

  1. 4. Restaurer un client complet

Si un client entier est supprimé sur la production.

Exemple client :

ad53

Restaurer :

rsync -av /var/data/ad53-data/ \
          root@eole2:/var/data/ad53-data/

---

  1. 5. Restaurer vers eole2

Si la restauration doit être faite sur le serveur de production.

Exemple :

rsync -av \
/var/data/ad53-data/ \
root@193.70.47.97:/var/data/ad53-data/

---

  1. 6. Vérifier les données avant restauration

Toujours vérifier :

  • taille
  • nombre de fichiers
  • date

Commandes utiles :

du -sh dossier
ls -ltr
find dossier | wc -l

---

  1. 7. Vérifier l'intégrité après restauration

Après restauration :

ls -l fichier

ou :

diff source destination

---

  1. 8. Durée de conservation de la quarantaine

Les fichiers supprimés sont conservés pendant :

7 jours

Après ce délai :

  • ils sont supprimés automatiquement par :
purge_quarantine.sh

---

  1. 9. Restaurer après suppression massive

Procédure :

1 vérifier la cause 2 désactiver rsync 3 restaurer depuis la quarantaine 4 vérifier la source

Désactiver temporairement rsync :

crontab -e

Commenter :

#18 17 * * 5 /opt/rsync_mirror/rsync_mirror_clients.sh

---

  1. 10. Vérifier ce qui a été supprimé

Voir dans les logs :

grep deleting /opt/rsync_mirror/logs/rsync_raw_*.log

ou :

grep "Number of deleted files" /opt/rsync_mirror/logs/*.log

---

  1. 11. Vérifier les suppressions pour un client

Exemple :

grep ad53 /opt/rsync_mirror/logs/*.log

---

  1. 12. Bonnes pratiques

Toujours :

  • vérifier le fichier avant restauration
  • restaurer d'abord dans un dossier temporaire
  • vérifier les droits

Exemple :

mkdir /tmp/restore-test
cp fichier /tmp/restore-test

---

  1. 13. Commandes utiles

Chercher un fichier :

find /var/data -name fichier

Voir les suppressions :

grep deleting logs/*

Voir la quarantaine :

ls /data-backup/rsync-quarantine

---

  1. 14. Checklist restauration rapide
Étape Commande
chercher le fichier find /data-backup/rsync-quarantine
vérifier ls -l
restaurer cp fichier destination
vérifier ls destination