Linux FTP 上傳一鍵腳本


下面來介紹一下這個 FTP 上傳一鍵腳本 ftp_upload.sh。

用途:用於在Linux系統下搭建FTP客戶端向FTP服務器端上傳文件;

總結一下 ftp_upload.sh 特點:
1、支持文件批量上傳至 FTP 指定目錄;
2、沒有了。

1、下載該腳本並賦予執行權限
下載腳本到本地待上傳文件的目錄下,比如:/data/www/default,如果沒有,需要先創建。
創建文件夾的命令為:

cd /data/www/default
wget --no-check-certificate https://github.com/teddysun/across/raw/master/ftp_upload.sh
chmod +x ftp_upload.sh
2、修改並配置腳本
請使用 vim 或 nano 等工具來修改。
關於變量名的一些說明:
LOCALDIR (腳本當前所在目錄)
LOGFILE (腳本運行產生的日志文件路徑)
FTP_HOST (連接的 FTP 域名或 IP 地址)
FTP_USER (連接的 FTP 的用戶名)
FTP_PASS (連接的 FTP 的用戶的密碼)
FTP_DIR (連接的 FTP 的遠程目錄,比如: public_html)
一些注意事項的說明:
1)腳本需要用到 ftp 命令,請事先安裝好;yum -y install ftp
2)腳本運行產生的日志文件路徑不要亂改;
3)腳本需運行在待上傳文件的目錄下;
4)腳本后面跟含有通配符的參數時,一定要加雙引號。

3、腳本運行示例
腳本會顯示待上傳文件列表,並在最后統計出所需時間。

1)上傳當前目錄下的文件 filename.tgz

./ftp_upload.sh filename.tgz
2)上傳當前目錄下的多個文件 filename1.tgz,filename2.tgz,filename3.tgz

./ftp_upload.sh filename1.tgz filename2.tgz filename3.tgz
3)上傳當前目錄下的通配符文件 *.tgz(注意此時后面跟的參數要加雙引號)

./ftp_upload.sh "*.tgz"
4)上傳當前目錄下的多個通配符文件 *.tgz,*.gz(注意此時后面跟的參數要加雙引號)

./ftp_upload.sh "*.tgz" "*.gz"
-----------------------------------------------------------------------------------------
腳本 如下;

#!/usr/bin/env bash
#
# 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 "*.extension"
# 4) ./ftp_upload.sh "*.extension1" "*.extension2"
#

########## 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

echo "$@" | grep "*" > /dev/null 2>&1
if [ $? -eq 0 ]; then
ls $@ > /dev/null 2>&1
[ $? -ne 0 ] && log "Error: [$@] file(s) not exists!" && exit 1
else
for f in $@
do
[ ! -f ${f} ] && log "Error: [${f}] not exists!" && exit 1
done
fi

local FTP_OUT_FILE=("$@")

log "Tranferring file(s) list below to FTP server:"
for file in ${FTP_OUT_FILE[@]}
do
log "$file"
done
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 to FTP server completed"
}


# Main progress
STARTTIME=$(date +%s)

[ $# -eq 0 ] && log "Error: argument can not be empty!" && exit 1

check_command

ftp_upload "$@"


ENDTIME=$(date +%s)
DURATION=$((ENDTIME - STARTTIME))
log "All done"
log "Transfer completed in ${DURATION} seconds"

--------------------------------------------------------------------------------------------------------------------------------------

此文為轉載,原文鏈接 https://teddysun.com/484.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM