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 ...
随机推荐
- Laravel5.1 数据库-查询构建器
今儿个咱说说查询构建器.它比运行原生SQL要简单些,它的操作面儿也是比较广泛的. 1 查询结果 先来看看它的语法: public function getSelect() { $result = DB ...
- Android开发:使用DialogFragment实现dialog自定义布局
使用DialogFragment实现dialog的自定义布局最大的好处是可以更好控制dialog的生命周期. TestFragment的代码: public class TestFragment ex ...
- 【RSS】我的RSS使用介绍
早就想写一个有关RSS的文章,一直没时间,今天刚好被现DL说了一波,那就先整理出一篇教程吧.后续说不定还有分享: 分享相关PPT: 一.我使用的服务: Feedly:https://feedly.co ...
- 使用MyBatis_Generator工具jar包自动化生成Dto、Dao、Mapping 文件
由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类.Dao接口类甚至Mappi ...
- AJAX 入门
1. 同步交互与异步交互 1.1 同步交互 客户端发送一个请求, 需要等待服务器的响应结束,才能发送第二个请求! 刷新的是整个页面. 1.2 异步交互 客户端发送一个请求,无需等待服务器的响应,然后就 ...
- hdu 2112 HDU Today(map与dijkstra的结合使用)
HDU Today Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- Python判断网络是否可以访问
import urllib url = "http://www.baidu.com" try: status = urllib.urlopen(url).code print st ...
- mysql学习笔记—常用sql函数
SQL 拥有很多可用于计数和计算的内建函数. SQL Aggregate 函数 SQL Aggregate 函数计算从列中取得的值,返回一个单一的值. 有用的 Aggregate 函数: AVG() ...
- 于win2008R2虽然激活,但是一个小时之后就会自动强制关机的问题
写一个批处理文件: taskkill /f /im wlms.exeping -n 4 127.0.0.1shutdown -a 用记事本写下以上的命令,另存为.bat 批处理文件.双击运行,即可. ...
- brew和brew cask安装
brew 是从下载源码解压然后 ./configure && make install ,同时会包含相关依存库.并自动配置好各种环境变量,而且易于卸载. 这个对程序员来说简直是福音,简 ...