mirror of
https://github.com/teddysun/across.git
synced 2025-01-18 22:09:35 +08:00
105 lines
2.3 KiB
Bash
105 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
#
|
|
# Auto upload file(s) to FTP server
|
|
#
|
|
# Copyright (C) 2016 Teddysun <i@teddysun.com>
|
|
#
|
|
# 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_command() {
|
|
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_command
|
|
|
|
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"
|