#!/bin/sh
 
BACKUP_DIR="/home/backup"
DIRECTORY_LIST="/usr/local/etc/scripts/backup-list/dir.list"
LOGFILE="/var/log/backup.log"
LOG_DATE=`/bin/date "+%H:%M:%S %d.%m.%Y"`
DATE=`/bin/date "+%Y-%m-%d"`
SED="/usr/bin/sed"
 
dar="/usr/local/bin/dar"
 
case $1 in
full)
    rm ${BACKUP_DIR}/*.dar 2>&1 >/dev/null
    for BACKUP in `cat ${DIRECTORY_LIST}`
    do
        BACKUP_ARK=`echo ${BACKUP} | sed 's/// /g' | awk '{ print $2 ; }'`
        if ${dar} -m 1024 -y9 -D -R ${BACKUP} -c ${BACKUP_DIR}/${BACKUP_ARK}-${DATE} > /dev/null ;
        then
            if ${dar} -t ${BACKUP_DIR}/${BACKUP_ARK}-${DATE} > /dev/null ;
            then
                echo "${LOG_DATE} | Backup ${BACKUP_ARK}-${DATE} is successfully created and tested." >> ${LOGFILE}
            else
                echo "${LOG_DATE} | Backup ${BACKUP_ARK}-${DATE} is successfully created, validation failed." >> ${LOGFILE}
            fi
        else
            echo "${LOG_DATE} | During backup ${BACKUP_ARK}-${DATE} the error occurred." >> ${LOGFILE}
        fi
    done
;;
differential)
    for BACKUP in `cat ${DIRECTORY_LIST}`
    do
        BACKUP_ARK=`echo ${BACKUP} | sed 's/// /g' | awk '{ print $2 ; }'`
        PREV_BACKUP=`/bin/ls -rU ${BACKUP_DIR}/${BACKUP_ARK}-*.dar | /usr/bin/tail -n 1`
        if ${dar} -m 1024 -y9 -D -R ${BACKUP} -c ${BACKUP_DIR}/${BACKUP_ARK}-${DATE}-diff -A ${PREV_BACKUP%%.*} > /dev/null ;
        then
            if ${dar} -t ${BACKUP_DIR}/${BACKUP_ARK}-${DATE}-diff > /dev/null ;
            then
                echo "${LOG_DATE} | Backup ${BACKUP_ARK}-${DATE}-diff is successfully created and tested." >> ${LOGFILE}
            else
                echo "${LOG_DATE} | Backup ${BACKUP_ARK}-${DATE}-diff is successfully created, validation failed." >> ${LOGFILE}
            fi
        else
            echo "${LOG_DATE} | During backup ${BACKUP_ARK}-${DATE}-diff the error occurred." >> ${LOGFILE}
        fi
    done
;;
check)
    for BACKUP in `cat ${DIRECTORY_LIST}`
    do
        BACKUP_ARK=`echo ${BACKUP} | sed 's/// /g' | awk '{ print $2 ; }'`
        CHECK_BACKUP=`/bin/ls -rU ${BACKUP_DIR}/${BACKUP_ARK}*.dar | /usr/bin/tail -n 1 | cut -d . -f 1,1`
        ${dar} -t ${CHECK_BACKUP}
    done
 
;;
esac
Последнее изменение:
Опубликовано: