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. mybatis缓存+aop出现的问题

    在对某些特殊数据进行转换时,getOne方法后执行fieleInfoHandle进行转换,如果直接使用fixedTableData进行操作,没有后续的二次调用这样是没问题的,但是在后面当执行完upda ...

  2. C++ 类型转换(C风格的强制转换):

    转https://www.cnblogs.com/Allen-rg/p/6999360.html C++ 类型转换(C风格的强制转换): 在C++基本的数据类型中,可以分为四类:整型,浮点型,字符型, ...

  3. 记录一下使用MySQL的left join时,遇到的坑

    # 现象 left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论.商城里一个货物有多少评论.一条评论有多少个赞等等.但是由于对join.on.where等关键字 ...

  4. References in C++

    When a variable is declared as reference, it becomes an alternative name for an existing variable. A ...

  5. 小程序中使用less(最优方式)

    写惯了less/sass,但是现在开发小程序缺还是css,很不习惯. 在网上搜的教程,要么是gulp,要么就是vscode的Easy-less的插件. 传统方式 我们来对比,这两种方式的优劣. Gul ...

  6. 【Spring Framework】Spring入门教程(四)注册Bean到IOC容器

    注册Bean到IOC容器大致分为4种: ①.包扫描+组件注解(@Controller.@Service.@Repository.@Component) 针对类是我们自己编写的情况 ②.@Bean注解 ...

  7. 『学了就忘』Linux服务管理 — 77、RPM包安装基于xinetd的服务的管理

    目录 1.基于xinetd服务的启动管理 (1)telnet服务安装 (2)telnet服务启动 2.基于xientd服务的自启动管理 现在Linux系统中基于xinetd的服务越来越少了,但Linu ...

  8. Linux中的正则

    目录 一.匹配规则 二.举例 一.匹配规则 * 匹配 0 或多个字符 ? 匹配任意一个字符 [list] 匹配 list 中的任意单一字符 [^list] 匹配 除list 中的任意单一字符以外的字符 ...

  9. [BUUCTF]PWN——axb_2019_fmt32

    axb_2019_fmt32 附件 步骤: 例行检查,32位程序,开启了nx保护 本地试运行一下程序,看看大概的情况 32位ida载入 alarm(),是闹钟函数,主要功能是设置信号传送闹钟,即用来设 ...

  10. w4sp-lab安装

    扯淡 i春秋有个答题活动,苟了个奖品,我选了一本书:<wireshark与metasploit实战指南>,里面有个配套环境,本来看着书上说使用docker搭建的,以为很简单,只需要pull ...