Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Sauvegarde rsync mirror eole2 2 beotos3
Sauvegarde rsync mirror (beotos3)
[modifier | modifier le wikicode]Objectif
[modifier | modifier le wikicode]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
---
Architecture
[modifier | modifier le wikicode] +-----------------------+
| 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]- lecture de config.sh
- lecture de targets.csv
- vérification source et destination
- comptage des fichiers source
- lancement de rsync
- déplacement des suppressions en quarantaine
- génération des rapports HTML
- envoi du courriel de synthèse
---
Arborescence
[modifier | modifier le wikicode]/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]config.sh
[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"
---
targets.csv
[modifier | modifier le wikicode]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
---
Logs
[modifier | modifier le wikicode]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
---
Rapports
[modifier | modifier le wikicode]Répertoire :
/opt/rsync_mirror/reports
Structure :
reports ├── admin └── clients
Rapport admin :
report_admin_YYYY-MM-DD_HH-MM.html
---
Quarantaine
[modifier | modifier le wikicode]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/
---
Mode DRY_RUN
[modifier | modifier le wikicode]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
---
Cron
[modifier | modifier le wikicode]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
---
Résumé
[modifier | modifier le wikicode]| É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 |
| 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
---
Rapports HTML
[modifier | modifier le wikicode]/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
---
Cron
[modifier | modifier le wikicode]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
---
Limitations
[modifier | modifier le wikicode]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. 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/
---
- 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/
---
- 3. Restaurer plusieurs fichiers
Utiliser rsync :
rsync -av \ /data-backup/rsync-quarantine/ad53/2026-03-09_12-34/ \ /var/data/ad53-data/
---
- 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/
---
- 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/
---
- 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
---
- 7. Vérifier l'intégrité après restauration
Après restauration :
ls -l fichier
ou :
diff source destination
---
- 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
---
- 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
---
- 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
---
- 11. Vérifier les suppressions pour un client
Exemple :
grep ad53 /opt/rsync_mirror/logs/*.log
---
- 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
---
- 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
---
- 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 |