forked from ScoDoc/DocScoDoc
96 lines
2.6 KiB
Bash
96 lines
2.6 KiB
Bash
#!/bin/bash
|
|
|
|
# Script effectuant un backup des principaux repertoires
|
|
# du serveur ScoDoc vers une machine distante.
|
|
# utilise rsync (pour ne cpier que les fichiers modifies)
|
|
# et ssh (pour se connecter de faon securisee).
|
|
#
|
|
# L'utilisateur root du serveur scodoc (qui execute ce script)
|
|
# doit pouvoir se conencter directement (sans mot de passe) sur
|
|
# la machine distante (installer les cles ssh necessaires).
|
|
#
|
|
# A adapter a vos besoins. Utilisation a vos risques et perils.
|
|
#
|
|
# E. Viennet, 2002, 2021
|
|
|
|
# Installation:
|
|
# 1- Installer rsync:
|
|
# apt-get install rsync
|
|
# 2- mettre en place un job cron:
|
|
# par exemple copier ce script dans /etc/cron.daily/
|
|
# (et le rendre executable avec chmod +x ...)
|
|
|
|
# -------------------- CONFIGURATION A ADAPTER
|
|
|
|
remotehost=XXXX # nom ou IP du serveur de sauvegarde
|
|
destdir=/home/SAU-SCODOC # repertoire sur serveur de sauvegarde
|
|
|
|
logfile=/var/log/rsynclog # log sur serveur scodoc
|
|
|
|
# A qui envoyer un mail en cas d'erreur de la sauvegarde:
|
|
SUPERVISORMAIL=emmanuel.viennet@example.com
|
|
|
|
CALLER=$(basename $0)
|
|
MACHINE=$(hostname -s)
|
|
|
|
# -----------------------------------------------------
|
|
|
|
# ----------------------------------
|
|
# Subroutine to terminate abnormally
|
|
# ----------------------------------
|
|
terminate()
|
|
{
|
|
dateTest=$(date)
|
|
|
|
mail -s "Attention: Probleme sauvegarde ScoDoc" $SUPERVISORMAIL <<EOF
|
|
The execution of script $CALLER was not successful on $MACHINE.
|
|
|
|
Look at logfile $logfile"
|
|
|
|
$CALLER terminated, exiting now with rc=1."
|
|
|
|
EOF
|
|
|
|
# repeat message for logs...
|
|
echo "The execution of script $CALLER was not successful on $MACHINE."
|
|
echo
|
|
echo "Look at logfile $logfile"
|
|
echo
|
|
echo "$CALLER terminated, exiting now with rc=1."
|
|
dateTest=$(date)
|
|
echo "End of script at: $dateTest"
|
|
echo ""
|
|
|
|
exit 1
|
|
}
|
|
|
|
# --------------------------------------
|
|
# Subroutine to mirror a dir using rsync (mirror on REMOTE HOST)
|
|
# Variables:
|
|
# remotehost : hostname on which is the mirror
|
|
# srcdir : directory to mirror on local host
|
|
# destdir : directory on remotehost where to put the copy
|
|
# logfile : filename to log actions
|
|
# --------------------------------------
|
|
rsync_mirror_to_remote()
|
|
{
|
|
echo "--------------- mirroring $MACHINE:$srcdir to $remotehost:$destdir" >> $logfile 2>&1
|
|
echo "starting at $(date)" >> $logfile 2>&1
|
|
rsync -vaze ssh --delete --rsync-path=/usr/bin/rsync "$srcdir" "$remotehost:$destdir" >> $logfile 2>&1
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo Error in rsync: code=$?
|
|
terminate
|
|
fi
|
|
|
|
echo "ending at $(date)" >> $logfile 2>&1
|
|
echo "---------------" >> $logfile 2>&1
|
|
}
|
|
|
|
|
|
|
|
# ----------- REPERTOIRES A SAUVEGARDER:
|
|
for srcdir in /etc /home /root /opt /usr/local /var; do
|
|
rsync_mirror_to_remote
|
|
done
|