zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    loj#6433. 「PKUSC2018」最大前缀和(状压dp)
    PKUWC2019游记
    10. Regular Expression Matching
    9. Palindrome Number
    8. String to Integer (atoi)
    7. Reverse Integer
    6. ZigZag Conversion
    5. Longest Palindromic Substring
    4. Median of Two Sorted Arrays
    3. Longest Substring Without Repeating Characters
  • 原文地址:https://www.cnblogs.com/yunweis/p/7727156.html
Copyright © 2011-2022 走看看