2013-08-03 22:53:04 +02:00
|
|
|
#!/bin/sh
|
|
|
|
# EvoBackup cronjob.
|
|
|
|
|
|
|
|
. /etc/evobackup/conf.d/cron.cf
|
|
|
|
|
|
|
|
# Verify if an EvoBackup is already launched, if true, kill it.
|
|
|
|
if [ -e $PIDFILE ]; then
|
2013-08-05 15:46:18 +02:00
|
|
|
# Killing the childs of evobackup.
|
|
|
|
for pid in $(ps h --ppid $(cat $PIDFILE) -o pid | tr -s '\n' ' '); do
|
|
|
|
kill -9 $pid;
|
|
|
|
done
|
|
|
|
# Then kill the main PID.
|
|
|
|
kill -9 $(cat $PIDFILE)
|
2013-08-03 22:53:04 +02:00
|
|
|
echo "$0 is running (PID $(cat $PIDFILE)). Process killed." >&2
|
|
|
|
fi
|
|
|
|
echo "$$" > $PIDFILE
|
|
|
|
trap "rm -f $PIDFILE" EXIT INT
|
|
|
|
|
|
|
|
# Executes tasks to do before rsync.
|
|
|
|
run-parts /etc/evobackup/actions.d/
|
|
|
|
|
|
|
|
hostname=$(hostname -f)
|
|
|
|
start=$(date --rfc-3339=seconds)
|
|
|
|
tmplog=$(mktemp --tmpdir=/tmp evobackup.XXX)
|
|
|
|
|
|
|
|
# rsync command line to backup all data.
|
2013-08-04 12:06:20 +02:00
|
|
|
rsync -avz --force --ignore-errors --partial \
|
2013-08-03 22:53:04 +02:00
|
|
|
--include-from=/etc/evobackup/conf.d/include.cf \
|
2013-08-04 12:06:20 +02:00
|
|
|
--delete --delete-excluded / -e "ssh -p $SSHPORT -4" \
|
2013-08-03 22:53:04 +02:00
|
|
|
root@${BACKUPSERVER}:/var/backup/ > $tmplog
|
2013-08-03 23:14:54 +02:00
|
|
|
status=$?
|
2013-08-03 22:53:04 +02:00
|
|
|
|
|
|
|
# Keep the last 20 lines
|
|
|
|
tail -20 $tmplog >> $LOG && rm $tmplog
|
|
|
|
|
|
|
|
stop=$(date --rfc-3339=seconds)
|
|
|
|
echo "EvoBackup started at $start." >> /var/log/evobackup.log
|
|
|
|
echo "EvoBackup finished at $stop." >> /var/log/evobackup.log
|
|
|
|
|
|
|
|
# Send a report
|
|
|
|
# Did rsync sucessfully finished?
|
|
|
|
if [ "$status" != 0 ]; then
|
|
|
|
tail -10 $LOG \
|
|
|
|
| mailx -s "[warn] EvoBackup for $hostname did not finish correctly." \
|
|
|
|
$MAIL_TO
|
|
|
|
else
|
|
|
|
tail -10 $LOG \
|
|
|
|
| mailx -s "[info] EvoBackup report for $hostname" $MAIL_TO
|
|
|
|
fi
|