1.说明

本文提供一个Shell脚本,

可以自动连接到SFTP服务器,

然后上传或者下载指定的文件,

进而可以使用Linux的corntab命令,

定时执行脚本上传下载文件,

实现文件的同步或者备份功能。

2.FTP和SFTP的区别

一般使用FTP来上传下载文件,

但是Linux的默认是不提供FTP的,

需要额外安装FTP服务器,

而且会占用一定的VPS服务器资源。

这里建议使用SFTP代替FTP,

可以不用额外安装任何服务器端程序,

使用只有SSH的Linux服务器的时候,

开启SSH默认就开启了SFTP,

不需要单独配置就可以使用。

SFTP加密传输认证信息和数据,

相对来说会更安全。

3.安装lftp

在脚本中需要使用lftp命令来连接SFTP服务器,

如果没有需要使用root用户安装,

yum安装命令如下:

yum install lftp -y

自动上传下载文件的关键是自动输入用户名密码,

但使用ssh的工具scp、sftp和ssh不能自动输入密码,

所以这里使用lftp实现。

4.上传脚本

上传脚本uploadFile.sh内容如下:

#!/bin/bash
# SFTP配置信息
# IP
IP=10.21.19.84
# 端口
PORT=22
# 用户名
USER=yuwen
# 密码
PASSWORD=ai123456
# 需要上传的文件名
FILE=test.txt
# 需要上传的文件所在目录
CLIENTDIR=/home/yuwen/sftp/upload
# 上传到目标服务器的目录
SEVERDIR=/home/yuwen/sftp/download lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${SEVERDIR}/
lcd ${CLIENTDIR}
put ${FILE}
by
EOF

脚本上半部分主要配置目标服务器信息,

包括IP地址,SFTP端口,用户名,密码,

以及需要上传的文件的本地路径和远程路径。

脚本下半部分是实现自动上传的关键,

首先自动登录SFTP服务器,

然后cd切换远程目录,

lcd切换本地目录,

put把文件上传到服务器。

5.下载脚本

修改脚本uploadFile.sh内容,

把put上传命令改为get命令即可:

get ${FILE}

6.定时执行脚本

每天凌晨2点执行上传脚本:

0 2 * * * sh /home/yuwen/uploadFile.sh

查看当前的crontab任务:

crontab -l

编辑crontab任务:

crontab -e

7.参考文章

定时执行Linux shell脚本实现SFTP定时上传下载文件
ftp/sftp定时自动上传文件脚本(CentOS)
浅谈ftp和sftp的区别
sftp登录及命令行用法
Linux下犀利的FTP工具-lftp

Shell自动上传下载文件到SFTP服务器的更多相关文章

  1. ftp自动上传下载文件脚本

    FTP自动登录批量下载文件 从ftp服务器192.168.1.60 上的/home/data 到本地的/home/databackup目录 #!/bin/bash ftp -v -n 192.168. ...

  2. windows上python上传下载文件到linux服务器指定路径【转】

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  3. 上传下载文件到Linux服务器

    转自链接:https://blog.csdn.net/drdongshiye/article/details/89430535Mac的终端是十分强大 , 可以通过命令进行上传下载下载文件夹 scp - ...

  4. Java上传文件至SFTP服务器

    Windows搭建SFTP服务器 https://www.cnblogs.com/wangjunguang/p/9453611.html 注意点: 1.以管理员权限运行FreeSSHd 2.如果无法启 ...

  5. C#FTP下载文件出现远程服务器返回错误: (500) 语法错误,无法识别命令

    如果下载多个文件的时候,有时候莫名其妙的出现500服务器错误,很有可能是没有设置KeepAlive 属性导致的. 出现应用程序未处理的异常:2015/1/6 11:40:56 异常类型:WebExce ...

  6. SecureCRT 上传/下载文件到Linux服务器

    1. 安装上传/.下载软件 a) cd /tmp wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz tar zxvf lrzsz-0. ...

  7. paramiko向服务器自动上传下载文件

    import paramikoimport os def download_from(ip,u,p): file_list=['file2',file3','file4'] file_path=&qu ...

  8. linux上创建ftp服务器下载文件///使用AWS服务器作为代理,下载sbt相关的包

    最近觉得自己下载有些jar的速度太慢了,就在aws上下好了,然后转到我电脑上来,在aws上开了ftp服务器.结果就倒腾了一上午,作个记录,以便后面查看. 1.安装vsftpd yum -y insta ...

  9. linux利用sh脚本上传下载文件到ftp服务器

    ####本地的/app/awsm/csv2 to ftp服务器上的/awsm/#### #!/bin/sh export today=`date +%Y-%m-%d` ftp -v -n 10.116 ...

随机推荐

  1. ORACLE 按逗号拆分字符串为多行

    with t as (select '1,2,3,10,11,12' a from dual) select substr(a, decode(level - 1, 0, 0, instr(a, ', ...

  2. 统计网卡流量的两段shell脚本(使用ifconfig)

    一个很小巧的shell脚本,使用ifconfig的不间断输出来统计网卡的流量,有需要的朋友可以参考下 使用shell脚本计算Linux网卡流量,方法中最关键点: ifconfig $eth_name ...

  3. Shell脚本实现自动修改IP地址

    作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名 ...

  4. JavaScript实现数组去重方法

    一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'tru ...

  5. 【Java 8】Stream.distinct() 列表去重示例

    在这篇文章里,我们将提供Java8 Stream distinct()示例. distinct()返回由该流的不同元素组成的流.distinct()是Stream接口的方法. distinct()使用 ...

  6. Java易错小结

    String 相关运算 String使用是注意是否初始化,未初始化的全部为null.不要轻易使用 string.isEmpty()等,首先确保string非空. 推荐使用StringUtils.isN ...

  7. JSP 文字乱码、${}引用无效

    问题: 代码:<form action="/test/requestPost.do" method="post"> <input type=& ...

  8. 如何用CodeBlocks调试?

    一.简介 这篇文章我主要会介绍CodeBlocks的调试功能,并简单讲述如何使用它. 二.前言 大家好,最近和小伙伴们讨论修改程序的时候,我突然想到,授人以鱼不如授人以渔(指调试),于是这篇文章应运而 ...

  9. Jenkins监控

    目录 一.Monitoring插件 二.Prometheus监控 一.Monitoring插件 Monitoring插件(monitoring)使用JavaMelody,对Jenkins进行监控.插件 ...

  10. [BUUCTF]PWN——ez_pz_hackover_2016

    ez_pz_hackover_2016 题目附件 解题步骤: 例行检查,32位,开启了RELRO保护,二进制的保护机制看这里 由于没有开启nx保护,对于这题一开始想到的是利用写入shellcode来获 ...