Advertisement
teuk

backup_directory_ftp.sh

Jan 4th, 2017
304
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 5.06 KB | None | 0 0
  1. #!/bin/bash
  2. # +--------------------------------------------------------------------------------------+
  3. # ! Script Name : backup_directory_ftp.sh                                                    !
  4. # !                                                                                      !
  5. # ! Make a tarball for a given directory including timedate in a given destination       !
  6. # ! directory, then upload it via ftp                                                    !
  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. # ! 04/01/2017 - Script creation                                                               !
  18. # !--------------------------------------------------------------------------------------------+
  19.  
  20. #----------------------------------------------------------------------------
  21. # SETTINGS
  22. #----------------------------------------------------------------------------
  23.  
  24. BACKUP_LOG_DIR=/var/log/backup
  25. BACKUP_LOG_FILE=${BACKUP_LOG_DIR}/backup_directory_ftp.log
  26. BACKUP_FTP_HOST=192.168.0.8
  27. BACKUP_FTP_LOGIN=backup
  28. BACKUP_FTP_PASSWORD=B4ckup_2017
  29. BACKUP_FTP_PORT=21
  30.  
  31. #----------------------------------------------------------------------------
  32. # FUNCTIONS
  33. #----------------------------------------------------------------------------
  34.  
  35. # Log function
  36. function message {
  37.         if [ ! -z "$0" ] ; then
  38.                 echo -ne "`date +'%d/%m/%Y %H:%M:%S'` $*\n" | tee -a ${BACKUP_LOG_FILE}
  39.         fi
  40. }
  41.  
  42. # Usage function
  43. function usage
  44. {
  45.     if [ ! -z "$1" ]; then
  46.         message "Error : $1"
  47.     fi
  48.     message "Usage : `basename $0` -d <directory_to_backup> -o <tarball_destination>"
  49.     exit 1
  50. }
  51.  
  52. #----------------------------------------------------------------------------
  53. # CHECK LOGFILE DIR
  54. #----------------------------------------------------------------------------
  55.  
  56. if [ ! -d "${BACKUP_LOG_DIR}" ]; then
  57.     echo "Creating backup log directory"
  58.     mkdir -pv ${BACKUP_LOG_DIR}
  59.     if [ $? -ne 0 ]; then
  60.         exit 1
  61.     fi
  62. fi
  63.  
  64. #----------------------------------------------------------------------------
  65. # CHECK COMMAND LINE PARAMETERS
  66. #----------------------------------------------------------------------------
  67. #echo "before getopts:  OPTIND = $OPTIND"
  68. while getopts 'd:o:' opt; do
  69.     case $opt in
  70.         d)
  71.             OPTSFOUND=1
  72.             if [ ! -d ${OPTARG} ]; then
  73.                 usage "Directory to backup : ${OPTARG} is invalid"
  74.             else
  75.                 DIRECTORY_TO_BACKUP=${OPTARG}
  76.             fi
  77.             ;;
  78.         o)
  79.             OPTSFOUND=1
  80.             if [ ! -d ${OPTARG} ]; then
  81.                 usage "Tarball destination directory ${OPTARG} is invalid"
  82.             else
  83.                 BACKUP_DESTINATION_DIRECTORY=${OPTARG}
  84.             fi
  85.             ;;
  86.         \?)
  87.             usage "-$OPTARG is not a valid option"
  88.             ;;
  89.     esac
  90. done
  91. shift $(( $OPTIND-1 ))
  92. #echo "after getopts:  OPTIND = $OPTIND"
  93.  
  94. if [ -z "${DIRECTORY_TO_BACKUP}" ] || [ -z "${BACKUP_DESTINATION_DIRECTORY}" ]; then
  95.     usage "Missing argument"
  96. fi
  97.  
  98. #----------------------------------------------------------------------------
  99. # MAIN
  100. #----------------------------------------------------------------------------
  101.  
  102. message "[+] Start backuping ${DIRECTORY_TO_BACKUP} to ${BACKUP_DESTINATION_DIRECTORY}"
  103.  
  104. TARBALL_FILE=`echo "${DIRECTORY_TO_BACKUP}" | sed -e 's,/,_,g' | sed -e 's,^_,,'`
  105.  
  106. TARBALL_FILE="`hostname`_${TARBALL_FILE}_`date +'%Y_%m_%d-%H_%M_%S'`.tar.bz2"
  107.  
  108. message "Creating ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
  109. tar cjf ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} ${DIRECTORY_TO_BACKUP} 2>/dev/null
  110. if [ $? -eq 0 ]; then
  111.     message "Successfully created ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
  112.     message "[+] FTP Transfer ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
  113.     ftp -i -n ${BACKUP_FTP_HOST} ${BACKUP_FTP_PORT} << END_SCRIPT >/dev/null 2>&1
  114. quote USER ${BACKUP_FTP_LOGIN}
  115. quote PASS ${BACKUP_FTP_PASSWORD}
  116. bin
  117. lcd ${BACKUP_DESTINATION_DIRECTORY}
  118. put ${TARBALL_FILE}
  119. quit
  120. END_SCRIPT
  121.  
  122.     if [ $? -ne 0 ]; then
  123.         message "Error: something went wrong while trasnferring ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
  124.         exit 3
  125.     else
  126.         message "Successfully transfered ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE} to ${BACKUP_FTP_HOST}"
  127.     fi
  128. else
  129.     message "Error: something went wrong while creating ${BACKUP_DESTINATION_DIRECTORY}/${TARBALL_FILE}"
  130.     exit 4
  131. fi
  132.  
  133. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement