Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Rsync Mirror AJLSM
Sauvegarde rsync AJLSM – Documentation d’exploitation
[modifier | modifier le wikicode]""Documentation partiellement obsolète.""
""Voir la mise à jour ici : http://mw.ajlsm.com/wiki/Sauvegarde_rsync_mirror_eole2_2_beotos3""
Présentation générale
[modifier | modifier le wikicode]Ce système permet d’exécuter des sauvegardes rsync entre serveurs en produisant :
- un rsync par répertoire
- un rapport HTML par client
- un rapport HTML global pour l’administration
- des notifications par courriel configurables
- un mode test (dry-run) sans impact sur les données
Un répertoire correspond à :
- soit un client (rapport + mail dédié)
- soit un périmètre interne AJLSM (rapport agrégé, mail unique admin)
---
Arborescence standard
[modifier | modifier le wikicode]/opt/rsync_mirror/ ├── config.sh ├── targets.csv ├── rsync_mirror_clients.sh ├── logs/ ├── reports/ │ ├── clients/ │ └── admin/ └── tmp/
---
Fichier de configuration : config.sh
[modifier | modifier le wikicode]Le fichier config.sh centralise tous les paramètres.
Chemins
[modifier | modifier le wikicode]BASE_DIR="/opt/rsync_mirror" LOG_DIR="$BASE_DIR/logs" REPORT_DIR="$BASE_DIR/reports" TMP_DIR="$BASE_DIR/tmp" CLIENT_REPORT_DIR="$REPORT_DIR/clients" ADMIN_REPORT_DIR="$REPORT_DIR/admin" TARGETS_FILE="$BASE_DIR/targets.csv"
---
Modes d’exécution
[modifier | modifier le wikicode]DRY-RUN
[modifier | modifier le wikicode]Permet de simuler les transferts sans modifier les données.
DRY_RUN=1
- rsync utilise
--dry-run - aucune écriture
- statistiques complètes
- recommandé pour les tests initiaux
---
Mode de notification mail
[modifier | modifier le wikicode]MAIL_MODE="admin_only"
Valeurs possibles :
| Valeur | Comportement |
|---|---|
| prod | Mails clients + admin |
| admin_only | Mails UNIQUEMENT vers l’admin |
| disabled | Aucun mail |
---
Copie admin des mails clients
[modifier | modifier le wikicode]ADMIN_CC_CLIENTS=1
- 1 : l’admin reçoit aussi les rapports clients
- 0 : seuls les clients reçoivent leur mail
---
Configuration SSH / rsync
[modifier | modifier le wikicode]RSYNC_USER="root" RSYNC_HOST="beotos3" RSYNC_SSH_OPTS="-i /root/.ssh/id_rsa -p 22 -o ConnectTimeout=30"
Options rsync utilisées :
RSYNC_OPTS=( -a --delete-after --safe-links --omit-dir-times --stats --human-readable --temp-dir="/var/data/tmp" )
---
Configuration des mails
[modifier | modifier le wikicode]ADMIN_EMAILS="arvers@ajlsm.com" MAIL_SENDER="supervision@ajlsm.com" MAIL_SUBJECT_PREFIX="[Sauvegarde AJLSM]"
---
Fichier des cibles : targets.csv
[modifier | modifier le wikicode]Chaque ligne correspond à **un rsync**.
Format :
type;label;src;dst;emails;organisation;group
Types
[modifier | modifier le wikicode]- CLIENT : envoi d’un rapport HTML individuel
- ADMIN_GROUP : regroupement dans le rapport admin global
Exemple
[modifier | modifier le wikicode]CLIENT;ad64;/var/data/ad64-data/;/var/data/ad64-data/;ad64-projet@ajlsm.com;Archives départementales des Pyrénées-Atlantiques; ADMIN_GROUP;template;/var/data/template-data/;/var/data/template-data/;;;admin
---
Script principal : rsync_mirror_clients.sh
[modifier | modifier le wikicode]Le script :
- lit
targets.csv - exécute un rsync par ligne
- génère :
- logs détaillés
- rapports HTML unitaires
- rapport HTML admin global
- gère les modes DRY / PROD / ADMIN_ONLY
Le script est à rendre exécutable :
chmod +x /opt/rsync_mirror/rsync_mirror_clients.sh
---
Lancement manuel
[modifier | modifier le wikicode]Mode test complet (recommandé)
[modifier | modifier le wikicode]Dans config.sh :
DRY_RUN=1 MAIL_MODE="admin_only" ADMIN_CC_CLIENTS=0
Puis :
/opt/rsync_mirror/rsync_mirror_clients.sh
Résultat :
- aucune écriture
- un seul mail admin
- rapports HTML générés
---
Mode production
[modifier | modifier le wikicode]Dans config.sh :
DRY_RUN=0 MAIL_MODE="prod" ADMIN_CC_CLIENTS=1
Puis lancement manuel ou cron.
---
Intégration cron
[modifier | modifier le wikicode]Exemple : lancement chaque nuit à 01h00
0 1 * * * /opt/rsync_mirror/rsync_mirror_clients.sh
---
Rotation des logs
[modifier | modifier le wikicode]La rotation est gérée via logrotate.
Fichier : /etc/logrotate.d/rsync_mirror
/opt/rsync_mirror/logs/*.log {
daily
rotate 14
compress
missingok
notifempty
dateext
create 0640 root root
}
---
Vérifications post-exécution
[modifier | modifier le wikicode]- Logs :
/opt/rsync_mirror/logs/
- Rapports clients :
/opt/rsync_mirror/reports/clients/
- Rapport admin global :
/opt/rsync_mirror/reports/admin/
---
Bonnes pratiques
[modifier | modifier le wikicode]- Toujours tester en DRY_RUN avant la mise en production
- Ne jamais modifier le script avec sed
- Les changements se font uniquement via :
- config.sh
- targets.csv
- Sauvegarder config.sh et targets.csv dans un dépôt Git
---