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

Rsync Mirror AJLSM

De AJLSM
Aller à la navigation Aller à la recherche

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.

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]

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
  • CLIENT : envoi d’un rapport HTML individuel
  • ADMIN_GROUP : regroupement dans le rapport admin global
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

---

Fin de la documentation

[modifier | modifier le wikicode]