Le script du jour n’est pas de moi mais de Jacques Foucry, plume émérite de l’univers OS X Server.
Ce script s’intéresse à la création d’un backup de l’OpenDirectory de votre serveur, en utilisant des commandes compatibles avec Admin Serveur.
La version que vous trouverez ci-dessous est une adaptation du script proposé sur le blog de Jacques Foucry : http://adminblog.foucry.net/?p=597.
N’hésitez pas à visiter cette page, car l’ensemble du fonctionnement de ce script y est détaillé. L’auteur met également à destination un petit tutoriel pour lancer de manière récurrente ce script via launchd.
Mes modifications portent sur :
- un peu de cosmétique en regroupant les variables en début de script,
- une petite modification pour permette l’envoi d’email dans un environnement n’utilisant la commande sendmail fournie par le système OS X, pour ceux qui utilisent Kerio Connect sur leur serveur Mac.
#!/bin/sh LOG_LOCATION="/var/log/opendirectory-backup" LOGS="$LOG_LOCATION/logs-tmp.log" LOG_MAIL="$LOG_LOCATION/logs-tmp.log" LOG_CUMUL="$LOG_LOCATION/odbackup.log" COMMANDS="$LOG_LOCATION/sacommands.txt" LOCATION="/var/odbackup" MAIL_ADMIN="nom@domaine.fr" MAIL_SENDER="nom@domaine.fr" DATE_DU_JOUR=$(date) OD_PASS="motdepassearchiveOD" if [ `whoami` != 'root' ] then echo "Ce script doit être utilisé par le compte root. Utilisez SUDO." exit 1 fi if [ ! -d $LOCATION ] then mkdir -p $LOCATION fi [ -f $LOGS ] && rm $LOGS [ -f $LOG_MAIL ] && rm $LOG_MAIL [ -f $COMMANDS ] && rm $COMMANDS echo " " >> $LOGS echo "****************************** $DATE_DU_JOUR ******************************" >> $LOGS find $LOCATION/odbackup-* -mtime +60 -exec rm -rf {} \; (umask 077 ; touch /var/log/opendirectory-backup/sacommands.txt) FILE=odbackup-`date "+%Y%m%d%H%M%S"` echo "dirserv:backupArchiveParams:archivePassword = $OD_PASS" > $COMMANDS echo "dirserv:backupArchiveParams:archivePath = $LOCATION/$FILE" >> $COMMANDS echo "dirserv:command = backupArchive" >> $COMMANDS /usr/sbin/serveradmin command < $COMMANDS ret=$? echo "To: $MAIL_ADMIN" > $LOG_MAIL echo "From: Server Daily Report <$MAIL_SENDER>" >> $LOG_MAIL echo "Subject: Backup OD" - `date` >> $LOG_MAIL if [ $ret -eq 0 ] then echo "Le master OpenDirectory a bien été sauvegardé. Il est stocké à l'emplacement suivant : $LOCATION/$FILE et reste accessible 60 jours. Au-delà des 60 jours ce backup sera supprimé." >> $LOG_MAIL else echo "Le master OpenDirectory n'a pas été correctement sauvegardé. Merci d'effectuer une sauvegarde manuelle avec les utilitaires Admin Serveur" >> $LOG_MAIL fi # Envoi d'email (non compatible avec Kerio Connect, à utliser si vous n'utilisez pas Kerio Connect) # cat $LOGS | sendmail -f $MAIL_ADMIN -t # Envoi d'email pour les utilisateurs de Kerio Connect (plus trivial) mail -s "Rapport backup Open Directory (${0})" $MAIL_ADMIN <"${LOG_MAIL}" cat $LOGS >> $LOG_CUMUL cat $LOG_MAIL >> $LOG_CUMUL rm $LOGS rm $LOG_MAIL rm $COMMANDS exit 0