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安装命令如下:

  1. yum install lftp -y

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

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

所以这里使用lftp实现。

4.上传脚本

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

  1. #!/bin/bash
  2. # SFTP配置信息
  3. # IP
  4. IP=10.21.19.84
  5. # 端口
  6. PORT=22
  7. # 用户名
  8. USER=yuwen
  9. # 密码
  10. PASSWORD=ai123456
  11. # 需要上传的文件名
  12. FILE=test.txt
  13. # 需要上传的文件所在目录
  14. CLIENTDIR=/home/yuwen/sftp/upload
  15. # 上传到目标服务器的目录
  16. SEVERDIR=/home/yuwen/sftp/download
  17. lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
  18. cd ${SEVERDIR}/
  19. lcd ${CLIENTDIR}
  20. put ${FILE}
  21. by
  22. EOF

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

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

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

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

首先自动登录SFTP服务器,

然后cd切换远程目录,

lcd切换本地目录,

put把文件上传到服务器。

5.下载脚本

修改脚本uploadFile.sh内容,

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

  1. get ${FILE}

6.定时执行脚本

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

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

查看当前的crontab任务:

  1. crontab -l

编辑crontab任务:

  1. 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. [学习总结]3、Android---Scroller类(左右滑动效果常用的类)

    参考资料:http://blog.csdn.net/vipzjyno1/article/details/24592591 非常感谢这个兄弟! 在android学习中,动作交互是软件中重要的一部分,其中 ...

  2. OC-copy,单例

    总结 编号 主题 内容 一 NSFileManager NSFileManager介绍/用法(常见的判断)/文件访问/文件操作 二 集合对象的内存管理 集合对象的内存管理/内存管理总结 三 *copy ...

  3. Java Maven项目搭建

    创建空项目 New Project --> Empty Project --> ... 配置JDK Project Settings --> Project 选择JDK Module ...

  4. 3.Vue.js-目录结构

    Vue.js 目录结构 上一章节中我们使用了 npm 安装项目,我们在 IDE(Eclipse.Atom等) 中打开该目录,结构如下所示: 目录解析 目录/文件 说明 build 项目构建(webpa ...

  5. 匿名内部类与lamda表达式

    1.为什么要使用lamda表达式 从JDK1.8开始为了简化使用者进行代码开发,专门提供有Lambda表达式的支持,利用此操作形式可以实现函数式的编程,对于函数式编程比较著名的语言:haskell,S ...

  6. Nginx区分浏览器

    目录 一.简介 二.配置 一.简介 场景: 不同浏览器对网页的兼容性是不一样的,所以针对火狐和curl,返回不同内容 原理: 使用if对http_user_agent变量进行判断,这个变量会显示访问时 ...

  7. 使用Navicat Premium 15发送Excel附件至个人邮箱

    一.新建一个查询保存为user 二.右键查询导出向导为Excel文件并保存为user 三.点自动运行-添加查询-添加附件-高级配置邮件信息(qq邮箱需要先开启POP3/SMTP服务) 四.设置定时任务 ...

  8. 第四届“传智杯”全国大学生IT技能大赛题解

    目录 A B C D E F G 今年题目难度普遍偏低.只有 D,F 还好. A 按题目给的公式计算即可.注意应在最后的答案中去掉小数部分. B 按照题意模拟即可.注意答案要与 \(0\) 取 \(\ ...

  9. SpringSecurity自定义注解和处理器

    登录功能 添加一个配置类 @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { @Reso ...

  10. Uni-app原生插件入门使用教程「2」:如何离线使用原生插件

    当HBuilderX中提供的能力无法满足App功能需求,需要通过使用Andorid/iOS原生开发实现时,可使用App离线SDK开发原生插件来扩展原生能力. 如使用Uniapp开发直播功能时,需要调用 ...