ftp_upload.sh 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #!/usr/bin/env bash
  2. #
  3. # Upload file(s) to FTP server
  4. #
  5. # Copyright (C) 2016 Teddysun <[email protected]>
  6. #
  7. # Argument example:
  8. # 1) ./ftp_upload.sh filename
  9. # 2) ./ftp_upload.sh filename1 filename2 filename3 ...
  10. # 3) ./ftp_upload.sh *.extension
  11. #
  12. ########## START OF CONFIG ##########
  13. # Local directory (current folder)
  14. LOCALDIR=$( pwd )
  15. # File to log the outcome of backups
  16. LOGFILE="/var/log/ftp_upload.log"
  17. # FTP server
  18. # Enter the Hostname or IP address below
  19. FTP_HOST=""
  20. # FTP username
  21. # Enter the FTP username below
  22. FTP_USER=""
  23. # FTP password
  24. # Enter the username's password below
  25. FTP_PASS=""
  26. # FTP server remote folder
  27. # Enter the FTP remote folder below
  28. # For example: public_html
  29. FTP_DIR=""
  30. ########## END OF CONFIG ##########
  31. log() {
  32. echo "$(date "+%Y-%m-%d %H:%M:%S")" "$1"
  33. echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}
  34. }
  35. # Check ftp command
  36. check_command() {
  37. if [ ! "$(command -v "ftp")" ]; then
  38. log "ftp command is not installed, please install it and try again"
  39. exit 1
  40. fi
  41. }
  42. # Tranferring backup file to FTP server
  43. ftp_upload() {
  44. cd ${LOCALDIR} || exit
  45. [ -z ${FTP_HOST} ] && log "Error: FTP_HOST can not be empty!" && exit 1
  46. [ -z ${FTP_USER} ] && log "Error: FTP_USER can not be empty!" && exit 1
  47. [ -z ${FTP_PASS} ] && log "Error: FTP_PASS can not be empty!" && exit 1
  48. [ -z ${FTP_DIR} ] && log "Error: FTP_DIR can not be empty!" && exit 1
  49. local FTP_OUT_FILE="$1"
  50. echo "${FTP_OUT_FILE}" | grep "*" 2>&1 > /dev/null
  51. if [ $? -eq 0 ]; then
  52. ls ${FTP_OUT_FILE} 2>/dev/null
  53. [ $? -ne 0 ] && log "Error: [${FTP_OUT_FILE}] file(s) not exists!" && exit 1
  54. else
  55. [ ! -f ${FTP_OUT_FILE} ] && log "Error: [${FTP_OUT_FILE}] not exists!" && exit 1
  56. fi
  57. log "Tranferring [${FTP_OUT_FILE}] to FTP server"
  58. ftp -in ${FTP_HOST} 2>&1 >> ${LOGFILE} <<EOF
  59. user $FTP_USER $FTP_PASS
  60. binary
  61. lcd $LOCALDIR
  62. cd $FTP_DIR
  63. mput $FTP_OUT_FILE
  64. quit
  65. EOF
  66. log "Tranfer completed"
  67. }
  68. # Main progress
  69. STARTTIME=$(date +%s)
  70. [ $# -eq 0 ] && log "Error: argument can not be empty!" && exit 1
  71. check_command
  72. for i in $@
  73. do
  74. ftp_upload $i
  75. done
  76. ENDTIME=$(date +%s)
  77. DURATION=$((ENDTIME - STARTTIME))
  78. log "All done"
  79. log "Transfer completed in ${DURATION} seconds"