Pārlūkot izejas kodu

Add ftp_upload.sh

Teddysun 9 gadi atpakaļ
vecāks
revīzija
103958d102
1 mainītis faili ar 105 papildinājumiem un 0 dzēšanām
  1. 105 0
      ftp_upload.sh

+ 105 - 0
ftp_upload.sh

@@ -0,0 +1,105 @@
+#!/usr/bin/env bash
+#
+# Auto upload file(s) to FTP server
+#
+# Copyright (C) 2016 Teddysun <[email protected]>
+#
+# Argument example:
+# 1) ./ftp_upload.sh filename
+# 2) ./ftp_upload.sh filename1 filename2 filename3 ...
+# 3) ./ftp_upload.sh *.gz
+#
+
+########## START OF CONFIG ##########
+
+# Local directory (current folder)
+LOCALDIR=$( pwd )
+
+# File to log the outcome of backups
+LOGFILE="/var/log/ftp_upload.log"
+
+# FTP server
+# Enter the Hostname or IP address below
+FTP_HOST=""
+
+# FTP username
+# Enter the FTP username below
+FTP_USER=""
+
+# FTP password
+# Enter the username's password below
+FTP_PASS=""
+
+# FTP server remote folder
+# Enter the FTP remote folder below
+# For example: public_html
+FTP_DIR=""
+
+########## END OF CONFIG ##########
+
+
+log() {
+    echo "$(date "+%Y-%m-%d %H:%M:%S")" "$1"
+    echo -e "$(date "+%Y-%m-%d %H:%M:%S")" "$1" >> ${LOGFILE}
+}
+
+# Check ftp command
+check_commands() {
+    # Iterate over the list of binaries, and if one isn't found, abort
+    if [ ! "$(command -v "ftp")" ]; then
+        log "ftp command is not installed, please install it and try again"
+        exit 1
+    fi
+}
+
+# Tranferring backup file to FTP server
+ftp_upload() {
+    cd ${LOCALDIR} || exit
+
+    [ -z ${FTP_HOST} ] && log "Error: FTP_HOST can not be empty!" && exit 1
+    [ -z ${FTP_USER} ] && log "Error: FTP_USER can not be empty!" && exit 1
+    [ -z ${FTP_PASS} ] && log "Error: FTP_PASS can not be empty!" && exit 1
+    [ -z ${FTP_DIR} ] && log "Error: FTP_DIR can not be empty!" && exit 1
+
+    local FTP_OUT_FILE="$1"
+    echo "${FTP_OUT_FILE}" | grep "*" 2>&1 > /dev/null
+    if [ $? -eq 0 ]; then
+        ls ${FTP_OUT_FILE} 2>&1 > /dev/null
+        [ $? -ne 0 ] && log "Error: [${FTP_OUT_FILE}] file(s) not exists!" && exit 1
+    else
+        [ ! -f ${FTP_OUT_FILE} ] && log "Error: [${FTP_OUT_FILE}] not exists!" && exit 1
+    fi
+
+    log "Tranferring [${FTP_OUT_FILE}] to FTP server"
+    ftp -in ${FTP_HOST} 2>&1 >> ${LOGFILE} <<EOF
+user $FTP_USER $FTP_PASS
+binary
+lcd $LOCALDIR
+cd $FTP_DIR
+mput $FTP_OUT_FILE
+quit
+EOF
+    log "Tranfer completed"
+}
+
+
+# Main progress
+STARTTIME=$(date +%s)
+
+[ $# -eq 0 ] && log "Error: argument can not be empty!" && exit 1
+
+log "Upload progress start"
+
+check_commands
+
+for i in $@
+do
+    ftp_upload $i
+done
+
+log "Upload progress complete"
+
+ENDTIME=$(date +%s)
+DURATION=$((ENDTIME - STARTTIME))
+log "All done"
+log "Transfer completed in ${DURATION} seconds"