下面来介绍一下这个 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
|