Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ##########################################################
- # Autor: Dennis Ullrich ##
- # E-Mail: request@decstasy.de ##
- # Last edit: 2014-12-17 ##
- # Version: 0.4 ##
- # License: GNU General Public License (GPL) ##
- # Designed for: Daily Cron Backup ##
- # Description: Makes a fucki'n backup ^.^ ##
- ##########################################################
- # Where the backup will be stored
- backupdir="/var/backups/inc-backup"
- # How many Days the backup will store the files (do not enter a value < 2)
- days="31"
- # Where the list of the folders, which should be backed up, is located
- backuplist="$backupdir/backup.conf"
- # Log directory
- logdir="$backupdir/logs"
- #------------ No further editing needed
- case $1 in
- *) if [ ! -d $logdir ]
- then
- mkdir -p -v $logdir;
- fi
- logfile="$logdir/`date +"%Y.%m.%d"`.log"
- touch $logfile
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Removing old logs (older than $days)" | tee -a $logfile
- find $logdir -mtime +$days -exec rm -v {} \; | tee -a $logfile
- if [ ! -d "$backupdir" ]
- then
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Creating backupdir" | tee -a $logfile
- mkdir -p -v $backupdir | tee -a $logfile
- fi
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Set backuppath to $backupdir/backup.`date +"%Y.%m.%d"`" | tee -a $logfile
- backuppath="$backupdir/backup.`date +"%Y.%m.%d"`"
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Creating backupdir $backuppath" | tee -a $logfile
- mkdir $backuppath | tee -a $logfile
- if [ -d "$backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`" ]; then
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Moving oldest backup content ($backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`/*) to $backuppath" | tee -a $logfile
- mv $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`/* $backuppath | tee -a $logfile
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Removing $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`" | tee -a $logfile
- rm -rf $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"` | tee -a $logfile
- fi
- if [ -d "$backupdir/backup.`date --date='01 day ago' +"%Y.%m.%d"`" ]
- then
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Copying (updating) backup from yesterday hardlinked into backupdir." | tee -a $logfile
- cp -alu $backupdir/backup.`date --date='01 day ago' +"%Y.%m.%d"`/* $backuppath | grep -v '^cp: cannot create hard link' | tee -a $logfile
- fi
- if [ -e $backuplist ]
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Starting preflight check from $backuplist" | tee -a $logfile
- for line in $(cat "$backuplist"); do
- if [ ! -d $line ]
- echo "ERROR: Directory $line from backuplist does not exist. Backup aborted!" | tee -a $logfile
- exit 1
- fi
- done
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Preflight check passed." | tee -a $logfile
- else
- echo "ERROR: $backuplist is not valid. Backup aborted!" | tee -a $logfile
- exit 1
- fi
- for line in $(cat "$backuplist"); do
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Started backup from ${line}" | tee -a $logfile
- rsync -a -v --delete --checksum ${line} $backuppath/ >> $logfile.filelist
- done
- echo "`date +"%Y.%m.%d %H:%M:%S"` - Daily Backup is finished!" | tee -a $logfile
- ;;
- esac
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement