diff --git a/crons/evobackup-inc.sh b/crons/evobackup-inc.sh index 9f79a15..b3f5669 100644 --- a/crons/evobackup-inc.sh +++ b/crons/evobackup-inc.sh @@ -11,13 +11,13 @@ shopt -s nullglob for client in ${CONFDIR}/*; do start=$(date --rfc-3339=seconds) backupname=${client#/etc/evobackup/conf.d/incs/} - echo "Incrementals of $backupname started at $start. " \ + echo "Incrementals of $backupname started at ${start}." \ >> $tmplog [[ ! -d ${INCDIR}/${backupname} ]] && mkdir -p ${INCDIR}/${backupname} # Do the incrementals. cp -alx ${JAILDIR}/${backupname} ${INCDIR}/${backupname}/${DATEDIR} stop=$(date --rfc-3339=seconds) - echo "Incrementals of $backupname ended at $stop." >> $tmplog + echo "Incrementals of $backupname ended at ${stop}." >> $tmplog done # Save tmplog to global log. cat $tmplog >> $LOGFILE diff --git a/crons/evobackup-rm.sh b/crons/evobackup-rm.sh index d3d0092..45b7a63 100644 --- a/crons/evobackup-rm.sh +++ b/crons/evobackup-rm.sh @@ -10,36 +10,37 @@ tmplog=$(mktemp --tmpdir=/tmp evobackup.tmplog.XXX) # Don't return *, if bash glob don't find files/dir. shopt -s nullglob -# For each client, delete needed incrementals. +# For each client (machine to backup), delete old incrementals according to the +# config file. for client in ${CONFDIR}/*; do - # 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 - rm -r $inc - rm -r $emptydir - stop=$(date --rfc-3339=seconds) - echo "Deletion of ${backupname}/${inc#${INCDIR}/${backupname}/} ended at ${stop}." >> $tmplog - done + # 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 + rm -r $inc + rm -r $emptydir + stop=$(date --rfc-3339=seconds) + echo "Deletion of ${backupname}/${inc#${INCDIR}/${backupname}/} ended at ${stop}." >> $tmplog + done done # Save tmplog to global log. cat $tmplog >> $LOGFILE # Send mail report. -< $tmplog mailx -s mail -s "[info] EvoBackup - deletion of obsolete incrementals" $MAIL_TO +< $tmplog mailx -s "[info] EvoBackup - deletion of obsolete incrementals" $MAIL_TO # Cleaning rm -rf $tmpdir rm $tmplog \ No newline at end of file diff --git a/crons/zzz_evobackup b/crons/zzz_evobackup index 52ba843..1846ed7 100644 --- a/crons/zzz_evobackup +++ b/crons/zzz_evobackup @@ -30,7 +30,7 @@ rsync -avzh --stats --force --ignore-errors --partial \ root@${BACKUPSERVER}:/var/backup/ > $tmplog status=$? -# Keep the last 30 lines +# Keep the last 30 lines & clean temporary log. tail -30 $tmplog >> $LOG && rm $tmplog stop=$(date --rfc-3339=seconds)