#!/bin/bash # EvoBackup cronjob. . /etc/evobackup/conf.d/cron.cf # Verify if an EvoBackup is already launched, if true, kill it. if [ -e $PIDFILE ]; then # 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) 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. rsync -avzh --stats --force --ignore-errors --partial \ --include-from=/etc/evobackup/conf.d/include.cf \ --delete --delete-excluded / -e "ssh -p $SSHPORT -4" \ root@${BACKUPSERVER}:/var/backup/ > $tmplog status=$? # Keep the last 30 lines & clean temporary log. tail -30 $tmplog >> $LOG && rm $tmplog stop=$(date --rfc-3339=seconds) echo "EvoBackup started at $start." >> $LOG echo "EvoBackup finished at $stop." >> $LOG # Send a report # Did rsync sucessfully finished? if [ "$status" != 0 ]; then tail -30 $LOG \ | mailx -s "[warn] EvoBackup for $hostname did not finish correctly." \ $MAIL_TO else tail -30 $LOG \ | mailx -s "[info] EvoBackup report for $hostname" $MAIL_TO fi