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. 银联acp手机支付总结

    总结: 1.手机调用后台服务端接口,获取银联返回的流水号tn 银联支付是请求后台,后台向银联下单,返回交易流水号,然后返回给用户,用户通过这个交易流水号,向银联发送请求,获取订单信息,然后再填写银行卡 ...

  2. 通信协议 HTTP TCP UDP

    TCP   HTTP   UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则"说话",对方才能理解或为之服务. TCP   HTTP   UDP三者的关系: T ...

  3. 在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题

    在隐藏导航栏的控制器中,调用UIIMagePickerController,出现导航栏变透明的问题 解决办法 #pragma mark - UIImagePickerController Delega ...

  4. Linux后台启动服务

    systemctl 启动/关闭/启用/禁用服务 总结 启动服务 systemctl start test.service 关闭服务 systemctl stop test.service 重启服务 s ...

  5. 【Linux】【Problems】在fedora 9上解决依赖问题

    summary: 在32bit的fedora9上安装EMC客户端遇到无法解决的依赖问题 detail: rpm 安装: [root@hcszmons02 tmp]# rpm -ivh lgtoclnt ...

  6. java实现数组集合转成json格式

    一.下载fastjson.jar http://repo1.maven.org/maven2/com/alibaba/fastjson 二.项目添加jar包 Java Build Path 三.导入类 ...

  7. matplotlib 画图中图和次坐标轴

    一: fig.add_axes 画图中图 fig = plt.figure() x = np.arange(1, 9, 1) y = np.linspace(1, 10, 8) left, botto ...

  8. JVM堆空间结构及常用的jvm内存分析命令和工具

    jdk8之前的运行时数据区域 程序计数器 是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器.每个线程都有一个独立的程序计数器,这类内存区域为"线程私有",此内存 ...

  9. Alamofire-5.0.0 以上报错

    摘要 Alamofire 更新到新版本时,遇到了两个错误和一个警告️,所以记录下来它们,以及如何解决它们.给其他出现类似问题的同道一些解决的方向. 今天新开启一个项目,因为网络请求选择 Alamofi ...

  10. 如何查看Python中所有关键字

    一.保留字即关键字,我们不能把它们用作任何标识符名称.Python的标准库提供了一个keyword模块,可以输出当前版本的所有关键字 import keyword print(keyword.kwli ...