2014-01-30 17:00:27 +01:00
|
|
|
#!/bin/bash
|
2013-08-03 22:53:04 +02:00
|
|
|
|
|
|
|
# Handle removing of incrementals.
|
|
|
|
|
|
|
|
. /etc/evobackup/conf.d/incrementals.cf
|
|
|
|
|
2014-01-30 16:39:34 +01:00
|
|
|
tmpdir=$(mktemp --tmpdir=/tmp -d evobackup.tmpdir.XXX)
|
|
|
|
emptydir=$(mktemp --tmpdir=/tmp -d evobackup.empty.XXX)
|
|
|
|
tmplog=$(mktemp --tmpdir=/tmp evobackup.tmplog.XXX)
|
2014-01-30 15:25:11 +01:00
|
|
|
# Don't return *, if bash glob don't find files/dir.
|
|
|
|
shopt -s nullglob
|
2014-01-30 16:39:34 +01:00
|
|
|
|
2014-02-02 20:24:26 +01:00
|
|
|
# For each client (machine to backup), delete old incrementals according to the
|
|
|
|
# config file.
|
2013-08-03 22:53:04 +02:00
|
|
|
for client in ${CONFDIR}/*; do
|
2014-02-02 20:24:26 +01:00
|
|
|
# Get only the name of the backup.
|
|
|
|
backupname=${client#${CONFDIR}/}
|
|
|
|
# List actual incrementals backup.
|
|
|
|
for inc in ${INCDIR}/${backupname}/*; do
|
|
|
|
echo $inc
|
|
|
|
done > ${tmpdir}/${backupname}.files
|
|
|
|
# List non-obsolete incrementals backup.
|
|
|
|
for incConf in $(cat ${CONFDIR}/${backupname}); do
|
|
|
|
mydate=$(echo $incConf | cut -d. -f1)
|
|
|
|
before=$(echo $incConf | cut -d. -f2)
|
|
|
|
date -d "$(date $mydate) $before" "+%Y-%m-%d"
|
|
|
|
done > ${tmpdir}/${backupname}.keep
|
|
|
|
# Delete obsolete incrementals backup
|
|
|
|
for inc in $(grep -v -f ${tmpdir}/${backupname}.keep ${tmpdir}/${backupname}.files); do
|
|
|
|
start=$(date --rfc-3339=seconds)
|
|
|
|
echo "Deletion of ${backupname}/${inc#${INCDIR}/${backupname}/} started at ${start}." >> $tmplog
|
|
|
|
# We use rsync to delete since it is faster than rm!
|
|
|
|
rsync -a --delete ${emptydir}/ $inc
|
2014-02-05 16:04:52 +01:00
|
|
|
rmdir $inc
|
2014-02-02 20:24:26 +01:00
|
|
|
stop=$(date --rfc-3339=seconds)
|
|
|
|
echo "Deletion of ${backupname}/${inc#${INCDIR}/${backupname}/} ended at ${stop}." >> $tmplog
|
|
|
|
done
|
2014-01-30 16:39:34 +01:00
|
|
|
done
|
2014-02-05 16:04:52 +01:00
|
|
|
|
|
|
|
# Send mail report only if incrementals where deleted.
|
|
|
|
if [ -s $tmplog ]; then
|
|
|
|
# Save tmplog to global log & send mail.
|
|
|
|
cat $tmplog >> $LOGFILE
|
|
|
|
< $tmplog mailx -s "[info] EvoBackup - deletion of obsolete incrementals" $MAIL_TO
|
|
|
|
fi
|
2013-08-03 22:53:04 +02:00
|
|
|
# Cleaning
|
2014-02-05 16:04:52 +01:00
|
|
|
rm -rf $tmpdir $emptydir $tmplog
|