使用 LFTP 进行 SFTP 文件上传与下载

工具介绍

LFTP 是一款非常著名的字符界面的文件传输工具。支持 FTP、HTTP、FISH、SFTP、HTTPS 和 FTPS 协议。

软件安装

apt-cache search lftp
apt-get install lftp -y

lftp 的使用

使用语法

  • lftp -[fceup] user:passwd@host:passwd 可选,此方式密码明文保存,history 可查看
  • -f <file>:执行文件中的命令后退出
  • -c <cmd>:执行命令后退出
  • -e <cmd>:登录后后执行命令
  • -u <user>[,<pass>]:使用指定的用户名 / 口令进行验证
  • -p <port>:连接指定的端口,默认 21

常用命令

  • cd:切换 FTP 目录
  • lcd:切换本地目录
  • ls:列出 FTP 目录文件
  • !ls:列出本地目录文件
  • find ./ -name file:查找文件
  • mv:移动
  • rm:删除
  • mkdir:新建目录
  • rmdir:删除目录

上传下载文件

  • get [cEaO] file -o newfilename:下载文件

  • put [cEaO] file -o newfilename:上传文件

  • pget -n:多线程下载

    可选参数:

    • -c:支持断点续传
    • -E:下载后删除远端文件
    • -a:指定传输为 ascii 模式,默认为二进制模式
    • -O:指定存放目录

上传下载目录

  • mirror [cRnr] remote [local]

    可选参数:

    • -c:支持断点续传
    • -R:上传整个目录
    • -n:只下载较新的档案,可用于增量备份
    • -r:只下载当前目录,不递归目录

书签管理

  • bookmark add name:保存当前连接为书签名字 name,下次打开可直接使用 lftp name
  • bookmark del name:删除书签
  • bookmark list:显示书签列表
  • bookmark edit:编辑书签

编码设置

  • set ftp:charset "gbk"
  • set file:charset "UTF-8"
  • 或加入配置文件.lftp/rc

主动 / 被动模式

默认为被动模式 。

set ftp:passive-mode no:关闭被动模式转为主动模式

主动客户端开启数据传输端口,被动服务端开启数据传输端口。

Shell 脚本

批量上传

#!/bin/bash

#SFTP配置信息
#用户名
USER=root
#密码
PASSWORD=5EYS40T04BMF
#待上传文件根目录
SRCDIR=/u02/dab/sftpFiles
#FTP目录
DESDIR=/u01/sftpFiles
#IP
IP=192.168.10.11
#端口
PORT=22022

#获取文件
cd ${SRCDIR} ;
#目录下的所有文件
#FILES=`ls` 
#修改时间在执行时间五分钟之前的xml文件
FILES=`find ${SRCDIR} -mmin -50 -name '*.xml'`

for FILE in ${FILES}
do
    echo ${FILE}
#发送文件 (关键部分)  复制出来,如有结尾有空格,请自行去掉
lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT} <<EOF
cd ${DESDIR}/
lcd ${SRCDIR}
put ${FILE}
by
EOF

done

单文件下载

#!/bin/bash

USER=root
#密码
PASSWORD=5EYS40T04BMF
#下载文件目录
SRCDIR=/u02/dab
#FTP目录(待下载文件目录)
DESDIR=/u01/sftpFiles
#银联IP
IP=192.168.1.10
#端口
PORT=22022

lftp -u ${USER},${PASSWORD} sftp://${IP}:${PORT}<<EOF
cd ${DESDIR}
lcd ${SRCDIR}
#需要下载的文件为text.xml
get text.xml
by
EOF