Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # +--------------------------------------------------------------------------------------+
- # ! Script Name : backup_directory.sh !
- # ! !
- # ! Make a tarball for a given directory including timedate in a given destination !
- # ! directory !
- # ! !
- # ! Add a cron line like this to backup your directory daily at 3 AM: !
- # ! 0 3 * * * <SCRIPTDIRECTORY>/backup_directory.sh -d /mydir/to/backup -o /mydest !
- # ! !
- # ! Dont forget to add the user in the line if you use a /etc/cron.d file ! !
- # ! 0 3 * * * root <SCRIPTDIRECTORY>/backup_directory.sh -d /mydir/to/backup -o /mydest !
- # ! !
- # +--------------------------------------------------------------------------------------+-----+
- # ! CHANGELOG : !
- # ! !
- # ! 28/03/2011 - 0.1 - Script creation !
- # ! 07/01/2017 - 0.2 - Create BACKUP_LOG_DIR if not exist !
- # !--------------------------------------------------------------------------------------------+
- #----------------------------------------------------------------------------
- # SETTINGS
- #----------------------------------------------------------------------------
- BACKUP_LOG_DIR=/var/log/backup
- BACKUP_LOG_FILE=${BACKUP_LOG_DIR}/backup_directory.log
- #----------------------------------------------------------------------------
- # FUNCTIONS
- #----------------------------------------------------------------------------
- # Log function
- function message {
- if [ ! -z "$0" ] ; then
- echo -ne "`date +'%d/%m/%Y %H:%M:%S'` $*\n" | tee -a ${BACKUP_LOG_FILE}
- fi
- }
- # Usage function
- function usage
- {
- if [ ! -z "$1" ]; then
- message "Error : $1"
- fi
- message "Usage : `basename $0` -d <directory_to_backup> -o <tarball_destination>"
- exit 1
- }
- #----------------------------------------------------------------------------
- # CHECK BACKUP_LOG_DIR
- #----------------------------------------------------------------------------
- if [ ! -d "${BACKUP_LOG_DIR}" ]; then
- echo "Creating ${BACKUP_LOG_DIR}"
- mkdir -pv ${BACKUP_LOG_DIR}
- if [ $? -ne 0 ]; then
- exit 2
- fi
- fi
- #----------------------------------------------------------------------------
- # CHECK COMMAND LINE PARAMETERS
- #----------------------------------------------------------------------------
- #echo "before getopts: OPTIND = $OPTIND"
- while getopts 'd:o:' opt; do
- case $opt in
- d)
- OPTSFOUND=1
- if [ ! -d ${OPTARG} ]; then
- usage "Directory to backup : ${OPTARG} is invalid"
- else
- DIRECTORY_TO_BACKUP=${OPTARG}
- fi
- ;;
- o)
- OPTSFOUND=1
- if [ ! -d ${OPTARG} ]; then
- usage "Tarball destination directory ${OPTARG} is invalid"
- else
- BACKUP_DESTINATION_DIRECTORY=${OPTARG}
- fi
- ;;
- \?)
- usage "-$OPTARG is not a valid option"
- ;;
- esac
- done
- shift $(( $OPTIND-1 ))
- #echo "after getopts: OPTIND = $OPTIND"
- if [ -z "${DIRECTORY_TO_BACKUP}" ] || [ -z "${BACKUP_DESTINATION_DIRECTORY}" ]; then
- usage "Missing argument"
- fi
- #----------------------------------------------------------------------------
- # MAIN
- #----------------------------------------------------------------------------
- message "[+] Start backuping ${DIRECTORY_TO_BACKUP} to ${BACKUP_DESTINATION_DIRECTORY}"
- TARBALL_FILE=`echo "${DIRECTORY_TO_BACKUP}" | sed -e 's,/,_,g' | sed -e 's,^_,,'`
- TARBALL_FILE="`hostname`_${TARBALL_FILE}_`date +'%Y_%m_%d-%H_%M_%S'`.tar.bz2"
- message "Creating ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
- tar cjf ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} ${DIRECTORY_TO_BACKUP} 2>/dev/null
- if [ $? -eq 0 ]; then
- message "Successfully created ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
- else
- message "Error: something went wrong while creating"
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement