Objet : Pour les administrateurs de serveurs de listes utilisant le logiciel Sympa
Archives de la liste
- From: Bruno Jolys <adresse@cachée>
- To: adresse@cachée
- Subject: Re: [sympa-fr] backup
- Date: Thu, 21 Sep 2017 08:52:26 +0200
Bonjour, Je répare un petit oubli : compresser la base après mysqldump
évidemment, ça tiendra moins de place ! Bien coopérativement Bruno |
#######################################################################
## Par Bruno
## Sympa 6.2.16 (à adapter sinon)
## sans aucune garantie
## GNU GPLv3
#######################################################################
## sauvegarde données Sympa (manuelle ou via cron)
## version 2017-09-21
echo "Sauvegarde des listes Sympa sur $(hostname), le $(date +%d-%m-%Y) vers
$(date +%H:%M)"
# ------------ variable à adapter ------------
# utilisateur local (les sauvegardes seront faites dans
/home/$UTILISATEUR/...)
UTILISATEUR="userssh"
# sympa.conf
SYMPA_CONF="/etc/sympa/sympa/sympa.conf"
# répertoire list_data
LIST_DATA="/home/sympa/list_data"
# nom de domaine
DOMAINE="mon-domaine.org"
# ------------ sauvegarde des membres des listes ------------
# répertoire de sauvegarde
REP_BACKUP_MEMBRES="/home/$UTILISATEUR/backup_membres"
# sous-répertoire nom de domaine
REP_DOMAINE="$REP_BACKUP_MEMBRES/$DOMAINE"
# ne garder que les 15 dernières sauvegardes
if [ -d "$REP_DOMAINE" ]
then
for REP in $( find "$REP_DOMAINE" -iname 'membres_*' | sort --reverse |
sed -n '16~1 p' )
do
[ -d "$REP" ] && find "$REP" -delete
done
fi
# répertoire de sauvegarde du jour
REP_SAUVEGARDE="$REP_DOMAINE/membres_$(date +%Y-%m-%d)"
[ -d "$REP_SAUVEGARDE" ] && find "$REP_SAUVEGARDE" -delete
mkdir -p "$REP_SAUVEGARDE"
# lancement préalable du dump par Sympa
echo ""
echo "Dump en cours..."
logger -i "backup: dump all lists /usr/lib/sympa/bin/sympa.pl --dump=ALL"
/usr/lib/sympa/bin/sympa.pl --dump=ALL
# boucle de récupération
echo ""
echo "Récupération des membres pour chaque liste..."
logger -i "backup: copy subscribers to $REP_SAUVEGARDE"
for F in $( find "/home/sympa/list_data/$DOMAINE" -iname
'subscribers.db.dump' | sort )
do
echo "--> $F";
chown sympa:sympa "$F"
LISTE=$( echo "$F" | sed "s/^.*$DOMAINE\///;s/\/subscribers.db.dump//" )
sed '/^[ ]*$/ d;/^date / d;/^update_date / d;/^reception / d;/^visibility
/ d;s/^email //g' "$F" | sed ':debut;N;s/\n/#/;t debut' | sed 's/#gecos
/|/g;s/#/\n/g' | sed 's/^\([^|]*\)$/\1|/g' > "$REP_SAUVEGARDE/$LISTE.txt"
done
# permissions
chown -R ${UTILISATEUR}:${UTILISATEUR} "$REP_SAUVEGARDE"
# ------------ sauvegarde de la base ------------
# répertoire de sauvegarde
REP_BACKUP_DB="/home/$UTILISATEUR/backup_db"
# sous-répertoire nom de domaine
REP_DOMAINE="$REP_BACKUP_DB/$DOMAINE"
mkdir -p "$REP_BACKUP_DB/$DOMAINE"
# ne garder que les 15 dernières sauvegardes
if [ -d "$REP_DOMAINE" ]
then
for F in $( find "$REP_DOMAINE" -iname 'sympa_*' | sort --reverse | sed
-n '16~1 p' )
do
[ -f "$F" ] && rm "$F"
done
fi
# fichier de sauvegarde
DUMP_FILE="sympa_$(date +%Y-%m-%d).sql"
# base de données Sympa
DBNAME=$( sed '/^db_name/ ! d;s/db_name[ \t]*//' ${SYMPA_CONF} )
DBHOST=$( sed '/^db_host/ ! d;s/db_host[ \t]*//' ${SYMPA_CONF} )
DBUSER=$( sed '/^db_user/ ! d;s/db_user[ \t]*//' ${SYMPA_CONF} )
DBPORT=$( sed '/^db_port/ ! d;s/db_port[ \t]*//' ${SYMPA_CONF} )
DBPASS=$( sed '/^db_passwd/ ! d;s/db_passwd[ \t]*//' ${SYMPA_CONF} )
# sauvegarde
echo ""
echo "Dump de la base de données Sympa..."
logger -i "backup: copy database to $REP_DOMAINE/$DUMP_FILE"
mysqldump --host=$DBHOST --port=$DBPORT --user=$DBUSER --password=$DBPASS
$DBNAME > "$REP_DOMAINE/$DUMP_FILE"
gzip "$REP_DOMAINE/$DUMP_FILE"
# permissions
chown -R ${UTILISATEUR}:${UTILISATEUR} "$REP_DOMAINE"
# ------------ sauvegarde config listes ------------
# répertoire de sauvegarde
REP_BACKUP_LIST_DATA="/home/$UTILISATEUR/backup_list_data"
# sous-répertoire nom de domaine
REP_DOMAINE="$REP_BACKUP_LIST_DATA/$DOMAINE"
# ne garder que les 15 dernières sauvegardes
if [ -d "$REP_DOMAINE" ]
then
for REP in $( find "$REP_DOMAINE" -iname 'list_data_*' | sort --reverse |
sed -n '16~1 p' )
do
[ -d "$REP" ] && find "$REP" -delete
done
fi
# répertoire de sauvegarde du jour
REP_SAUVEGARDE="$REP_DOMAINE/list_data_$(date +%Y-%m-%d)"
[ -d "$REP_SAUVEGARDE" ] && find "$REP_SAUVEGARDE" -delete
mkdir -p "$REP_SAUVEGARDE"
# boucle de récupération
echo ""
echo "Récupération de la config des listes..."
logger -i "backup: copy list_data to $REP_SAUVEGARDE"
for REP in $( find "$LIST_DATA/$DOMAINE" -regextype sed -regex
"$LIST_DATA/$DOMAINE/[^/]*" | sort )
do
LISTE=$( echo $REP | sed 's/^.*\///g' )
echo "--> $LISTE";
mkdir "$REP_SAUVEGARDE/$LISTE"
# boucle sur les fichiers de config (sauf *.dump *.old *.orig *.[0-9]
stats )
for F in $( find "$REP" -type f -regextype sed -regex "$REP/[^/]*" | sed
'/\.dump$/ d;/\.old$/ d;/\.orig$/ d;/\.[0-9]*$/ d;/stats$/ d' )
do
cp "$F" "$REP_SAUVEGARDE/$LISTE/"
done
done
# permissions
chown -R ${UTILISATEUR}:${UTILISATEUR} "$REP_SAUVEGARDE"
# ------------ fin de sauvegarde ------------
echo ""
echo "Sauvegarde terminée vers $(date +%H:%M)"
null
-
Re: [sympa-fr] backup,
Bruno Jolys, 15/09/2017
- Re: [sympa-fr] backup, Bruno Jolys, 21/09/2017
Archives gérées par MHonArc 2.6.19+.