Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # +--------------------------------------------------------------------------------------+
- # ! Script Name : backup_directory_ftp.sh !
- # ! !
- # ! Make a tarball for a given directory including timedate in a given destination !
- # ! directory, then upload it via ftp !
- # ! !
- # ! 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 : !
- # ! !
- # ! 04/01/2017 - Script creation !
- # !--------------------------------------------------------------------------------------------+
- #----------------------------------------------------------------------------
- # SETTINGS
- #----------------------------------------------------------------------------
- BACKUP_LOG_DIR=/var/log/backup
- BACKUP_LOG_FILE=${BACKUP_LOG_DIR}/backup_directory_ftp.log
- BACKUP_FTP_HOST=192.168.0.8
- BACKUP_FTP_LOGIN=backup
- BACKUP_FTP_PASSWORD=B4ckup_2017
- BACKUP_FTP_PORT=21
- #----------------------------------------------------------------------------
- # 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 LOGFILE DIR
- #----------------------------------------------------------------------------
- if [ ! -d "${BACKUP_LOG_DIR}" ]; then
- echo "Creating backup log directory"
- mkdir -pv ${BACKUP_LOG_DIR}
- if [ $? -ne 0 ]; then
- exit 1
- 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}"
- message "[+] FTP Transfer ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
- ftp -i -n ${BACKUP_FTP_HOST} ${BACKUP_FTP_PORT} << END_SCRIPT >/dev/null 2>&1
- quote USER ${BACKUP_FTP_LOGIN}
- quote PASS ${BACKUP_FTP_PASSWORD}
- bin
- lcd ${BACKUP_DESTINATION_DIRECTORY}
- put ${TARBALL_FILE}
- quit
- END_SCRIPT
- if [ $? -ne 0 ]; then
- message "Error: something went wrong while trasnferring ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
- exit 3
- else
- message "Successfully transfered ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
- fi
- else
- message "Error: something went wrong while creating ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
- exit 4
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement