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
Linux FTP 上传一键脚本的更多相关文章
- ftp上传下载脚本
#!/usr/bin/env python #encoding=utf-8 # @Date: 2015-08-10 import datetime from ftplib import FTP &qu ...
- ❝ Windows系统的FTP上传下载脚本 ❞
运行环境:windows 脚本功能:从目标系统下载数据库备份文件*.dmp 执行方法:windows任务计划定时调用文件ftp.bat 文件1:ftp.bat echo 开始备份日期: >> ...
- linux ftp 上传与下载命令解析
month=`date -d "last month" +"%Y%m"` year=`date +"%Y"` rm /home/yourDi ...
- 自动ftp上传文件脚本
方法一: echo "open 21.244.88.129 user glxtftp glbzuser bin prompt off cd /glxt/DBINFO lcd /tmp put ...
- windows下定时利用bat脚本实现ftp上传和下载
前言: 工作中可能会遇到以下情况,利用windows作为中转,来实现两台linux服务器的文件传输. 实现步骤: 1.FTP上传和下载的bat脚本. 脚本分为两部分:可执行bat脚本和ftp命令文件: ...
- Shell脚本调用ftp上传文件
Shell脚本调用ftp上传文件 1.脚本如下 ftp -n<<! open x.x.x.x ###x.x.x.x为ftp地址 user username password ###user ...
- Azure DevOps (六) 通过FTP上传流水线制品到Linux服务器
上一篇我们实现了把流水线的制品保存到azure的流水线制品仓库里去,本篇我们会开始研究azure的发布流水线. 本篇要研究的是把流水线仓库的制品发布到任意一台公网的linux服务器上去,所以我们先研究 ...
- 【完整靠谱版】结合公司项目,仔细总结自己使用百度编辑器实现FTP上传的完整过程
说在前面 工作中会遇到很多需要使用富文本编辑器的地方,比如我现在发布这篇文章离不开这个神器,而且现在网上编辑器太多了.记得之前,由于工作需要自己封装过一个编辑器的公共插件,是用ckeditor改版的, ...
- JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)
package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...
随机推荐
- 【泰语歌】กลับคำสาหล่า 歌手:Mike Piromporn
Darling,Please don't leave me. 很短的一句话,可能会摧毁我们在一起的所有美好时光.
- 加号选择器(ul>li + li)
<head> <meta charset="UTF-8"> <title>+ selector</title> <style& ...
- 【BZOJ2286】[Sdoi2011]消耗战 虚树
[BZOJ2286][Sdoi2011]消耗战 Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的 ...
- 合并子目录(hash)
题目2 : 合并子目录 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的电脑的文件系统中一共有N个文件,例如: /hihocoder/offer22/soluti ...
- es站内站内搜索笔记(一)
es站内站内搜索笔记(一) 第一节: 概述 使用elasticsearch进行网站搜索,es是当下最流行的分布式的搜索引擎及大数据分析的中间件,搜房网的主要功能:强大的搜索框,与百度地图相结合,实现地 ...
- 前端 为什么我选择用框架而不是Jquery
对于很多习惯用Jquery的前端甚至后端,都很不解,为什么不用Jquery而是框架.觉得框架学起来麻烦,成本高,今天我以我浅薄的知识来总结一下为什么前台开发选择用框架: 前台开发,主要的性能是卡在回流 ...
- GridView中给DropDownList动态绑定数据,及选择列表值后自动更新数据库
protected void sgvFile1_RowDataBound(object sender, GridViewRowEventArgs e) { DropDownList ddlAM = ( ...
- MySQL中myisam和innodb的主键索引有什么区别?
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...
- javascript实例:两种方式实现tab栏选项卡
方法1: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- 我的Android进阶之旅------>【强力推荐】Android开源图表库XCL-Charts版本发布及展示页
因为要做图表相关的应用,后来百度发现了一个很好的Android开源图表库(XCL-Charts is a free charting library for Android platform.) 下面 ...