Mon CV

Backup de l’OpenDirectory sur Mac OS X Server

16 mai 2013

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
Posted in Apple et MacintoshTags: