Advertisement
teuk

backup_directory.sh

Jan 7th, 2017
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.38 KB | None | 0 0
  1. #!/bin/bash
  2. # +--------------------------------------------------------------------------------------+
  3. # ! Script Name : backup_directory.sh                                                    !
  4. # !                                                                                      !
  5. # ! Make a tarball for a given directory including timedate in a given destination       !
  6. # ! directory                                                                            !
  7. # !                                                                                      !
  8. # ! Add a cron line like this to backup your directory daily at 3 AM:                    !
  9. # ! 0 3 * * * <SCRIPTDIRECTORY>/backup_directory.sh -d /mydir/to/backup -o /mydest       !
  10. # !                                                                                      !
  11. # ! Dont forget to add the user in the line if you use a /etc/cron.d file !              !
  12. # ! 0 3 * * * root <SCRIPTDIRECTORY>/backup_directory.sh -d /mydir/to/backup -o /mydest  !
  13. # !                                                                                      !
  14. # +--------------------------------------------------------------------------------------+-----+
  15. # ! CHANGELOG  :                                                                               !
  16. # !                                                                                            !
  17. # ! 28/03/2011 - 0.1 - Script creation                                                         !
  18. # ! 07/01/2017 - 0.2 - Create BACKUP_LOG_DIR if not exist                                      !
  19. # !--------------------------------------------------------------------------------------------+
  20.  
  21. #----------------------------------------------------------------------------
  22. # SETTINGS
  23. #----------------------------------------------------------------------------
  24.  
  25. BACKUP_LOG_DIR=/var/log/backup
  26. BACKUP_LOG_FILE=${BACKUP_LOG_DIR}/backup_directory.log
  27.  
  28. #----------------------------------------------------------------------------
  29. # FUNCTIONS
  30. #----------------------------------------------------------------------------
  31.  
  32. # Log function
  33. function message {
  34.         if [ ! -z "$0" ] ; then
  35.                 echo -ne "`date +'%d/%m/%Y %H:%M:%S'` $*\n" | tee -a ${BACKUP_LOG_FILE}
  36.         fi
  37. }
  38.  
  39. # Usage function
  40. function usage
  41. {
  42.     if [ ! -z "$1" ]; then
  43.         message "Error : $1"
  44.     fi
  45.     message "Usage : `basename $0` -d <directory_to_backup> -o <tarball_destination>"
  46.     exit 1
  47. }
  48.  
  49. #----------------------------------------------------------------------------
  50. # CHECK BACKUP_LOG_DIR
  51. #----------------------------------------------------------------------------
  52.  
  53. if [ ! -d "${BACKUP_LOG_DIR}" ]; then
  54.     echo "Creating ${BACKUP_LOG_DIR}"
  55.     mkdir -pv ${BACKUP_LOG_DIR}
  56.     if [ $? -ne 0 ]; then
  57.         exit 2
  58.     fi
  59. fi
  60.  
  61. #----------------------------------------------------------------------------
  62. # CHECK COMMAND LINE PARAMETERS
  63. #----------------------------------------------------------------------------
  64. #echo "before getopts:  OPTIND = $OPTIND"
  65. while getopts 'd:o:' opt; do
  66.     case $opt in
  67.         d)
  68.             OPTSFOUND=1
  69.             if [ ! -d ${OPTARG} ]; then
  70.                 usage "Directory to backup : ${OPTARG} is invalid"
  71.             else
  72.                 DIRECTORY_TO_BACKUP=${OPTARG}
  73.             fi
  74.             ;;
  75.         o)
  76.             OPTSFOUND=1
  77.             if [ ! -d ${OPTARG} ]; then
  78.                 usage "Tarball destination directory ${OPTARG} is invalid"
  79.             else
  80.                 BACKUP_DESTINATION_DIRECTORY=${OPTARG}
  81.             fi
  82.             ;;
  83.         \?)
  84.             usage "-$OPTARG is not a valid option"
  85.             ;;
  86.     esac
  87. done
  88. shift $(( $OPTIND-1 ))
  89. #echo "after getopts:  OPTIND = $OPTIND"
  90.  
  91. if [ -z "${DIRECTORY_TO_BACKUP}" ] || [ -z "${BACKUP_DESTINATION_DIRECTORY}" ]; then
  92.     usage "Missing argument"
  93. fi
  94.  
  95. #----------------------------------------------------------------------------
  96. # MAIN
  97. #----------------------------------------------------------------------------
  98.  
  99. message "[+] Start backuping ${DIRECTORY_TO_BACKUP} to ${BACKUP_DESTINATION_DIRECTORY}"
  100.  
  101. TARBALL_FILE=`echo "${DIRECTORY_TO_BACKUP}" | sed -e 's,/,_,g' | sed -e 's,^_,,'`
  102.  
  103. TARBALL_FILE="`hostname`_${TARBALL_FILE}_`date +'%Y_%m_%d-%H_%M_%S'`.tar.bz2"
  104.  
  105. message "Creating ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
  106. tar cjf ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} ${DIRECTORY_TO_BACKUP} 2>/dev/null
  107. if [ $? -eq 0 ]; then
  108.     message "Successfully created ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
  109. else
  110.     message "Error: something went wrong while creating"
  111. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement