Advertisement
Guest User

daily-backup.sh

a guest
Feb 9th, 2015
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.19 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. ##########################################################
  4. #         Autor: Dennis Ullrich             ##
  5. #    E-Mail: request@decstasy.de            ##
  6. #     Last edit: 2014-12-17             ##
  7. #       Version: 0.4                    ##
  8. #   License: GNU General Public License (GPL)   ##
  9. #  Designed for: Daily Cron Backup          ##
  10. #   Description: Makes a fucki'n backup ^.^     ##
  11. ##########################################################
  12.  
  13. # Where the backup will be stored
  14. backupdir="/var/backups/inc-backup"
  15.  
  16. # How many Days the backup will store the files (do not enter a value < 2)
  17. days="31"
  18.  
  19. # Where the list of the folders, which should be backed up, is located
  20. backuplist="$backupdir/backup.conf"
  21.  
  22. # Log directory
  23. logdir="$backupdir/logs"
  24.  
  25. #------------ No further editing needed
  26.  
  27. case $1 in
  28. *)  if [ ! -d $logdir ]
  29.     then
  30.         mkdir -p -v $logdir;
  31.     fi
  32.     logfile="$logdir/`date +"%Y.%m.%d"`.log"
  33.     touch $logfile
  34.     echo "`date +"%Y.%m.%d %H:%M:%S"` - Removing old logs (older than $days)" | tee -a $logfile
  35.     find $logdir -mtime +$days -exec rm -v {} \; | tee -a $logfile
  36.  
  37.     if [ ! -d "$backupdir" ]
  38.     then
  39.         echo "`date +"%Y.%m.%d %H:%M:%S"` - Creating backupdir" | tee -a $logfile
  40.         mkdir -p -v $backupdir  | tee -a $logfile
  41.     fi
  42.  
  43.     echo "`date +"%Y.%m.%d %H:%M:%S"` - Set backuppath to $backupdir/backup.`date +"%Y.%m.%d"`"  | tee -a $logfile
  44.     backuppath="$backupdir/backup.`date +"%Y.%m.%d"`"
  45.  
  46.     echo "`date +"%Y.%m.%d %H:%M:%S"` - Creating backupdir $backuppath"  | tee -a $logfile
  47.     mkdir $backuppath  | tee -a $logfile
  48.     if [ -d "$backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`" ]; then
  49.         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
  50.         mv $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`/* $backuppath  | tee -a $logfile
  51.         echo "`date +"%Y.%m.%d %H:%M:%S"` - Removing $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"`" | tee -a $logfile
  52.         rm -rf $backupdir/backup.`date --date="$days day ago" +"%Y.%m.%d"` | tee -a $logfile
  53.     fi
  54.  
  55.     if [ -d "$backupdir/backup.`date --date='01 day ago' +"%Y.%m.%d"`" ]
  56.     then
  57.         echo "`date +"%Y.%m.%d %H:%M:%S"` - Copying (updating) backup from yesterday hardlinked into backupdir."  | tee -a $logfile
  58.         cp -alu $backupdir/backup.`date --date='01 day ago' +"%Y.%m.%d"`/* $backuppath | grep -v '^cp: cannot create hard link'  | tee -a $logfile
  59.     fi
  60.  
  61.     if [ -e $backuplist ]
  62.         echo "`date +"%Y.%m.%d %H:%M:%S"` - Starting preflight check from $backuplist"  | tee -a $logfile
  63.         for line in $(cat "$backuplist"); do
  64.             if [ ! -d $line ]
  65.                 echo "ERROR: Directory $line from backuplist does not exist. Backup aborted!"  | tee -a $logfile
  66.                 exit 1
  67.             fi
  68.         done
  69.         echo "`date +"%Y.%m.%d %H:%M:%S"` - Preflight check passed."  | tee -a $logfile
  70.     else
  71.         echo "ERROR: $backuplist is not valid. Backup aborted!"  | tee -a $logfile
  72.         exit 1
  73.     fi
  74.  
  75.     for line in $(cat "$backuplist"); do
  76.             echo "`date +"%Y.%m.%d %H:%M:%S"` - Started backup from ${line}"  | tee -a $logfile
  77.         rsync -a -v --delete --checksum ${line} $backuppath/ >> $logfile.filelist
  78.     done
  79.     echo "`date +"%Y.%m.%d %H:%M:%S"` - Daily Backup is finished!" | tee -a $logfile
  80. ;;
  81. esac
  82.  
  83. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement