一、为什么需要断点续传功能

平时工作中,我们经常需要通过SFTP传输大文件,比如日志文件、数据库备份或者视频素材。但网络环境复杂,传输过程中可能会遇到各种意外情况:

  • 网络闪断导致连接中断
  • 服务器维护需要重启
  • 本地电脑突然断电

如果每次中断都要从头开始传输,既浪费时间又消耗带宽。这时候断点续传功能就显得尤为重要。它能在中断后从中断点继续传输,而不是重新开始。

二、lftp客户端简介

lftp是一个功能强大的命令行FTP/FTPS/SFTP客户端,支持以下特性:

  • 断点续传(自动检测并恢复中断的传输)
  • 并行传输(加速大文件传输)
  • 脚本自动化(适合批量操作)
  • 支持多种协议(FTP/HTTP/SFTP等)

相比传统的sftp命令,lftp在稳定性和功能上都更胜一筹。

三、安装与基础配置

1. 安装lftp

在Linux系统上安装非常简单:

# Debian/Ubuntu
sudo apt-get install lftp

# CentOS/RHEL  
sudo yum install lftp

# macOS (使用Homebrew)
brew install lftp

2. 基本连接方式

连接到SFTP服务器的基本命令格式:

lftp sftp://用户名:密码@服务器地址 -p 端口

例如连接到一个测试服务器:

lftp sftp://testuser:password123@192.168.1.100 -p 22

3. 配置文件优化

在~/.lftprc中添加以下配置可以优化传输性能:

# 启用断点续传
set ftp:reconnect-interval-base 15
set ftp:reconnect-interval-multiplier 1
set ftp:reconnect-interval-max 60

# 并行传输设置(加速大文件传输)
set pget:default-chunks 5
set pget:min-chunk-size 1M

四、断点续传实战操作

1. 上传文件(支持断点续传)

使用put命令上传文件,lftp会自动处理断点续传:

# 连接到服务器
lftp sftp://user:pass@example.com

# 上传单个文件(断点续传)
put /local/path/large_file.zip -o /remote/path/large_file.zip

# 上传整个目录(递归)
mirror -R /local/dir /remote/dir

2. 下载文件(支持断点续传)

使用get命令下载文件:

# 下载单个文件
get /remote/path/large_file.zip -o /local/path/large_file.zip

# 继续中断的下载(自动检测)
get -c /remote/path/large_file.zip -o /local/path/large_file.zip

3. 批量传输示例

# 批量下载匹配的文件
mget /remote/path/*.log

# 带进度显示的镜像同步
mirror --parallel=5 --verbose /remote/dir /local/dir

五、高级技巧与注意事项

1. 传输限速

如果不想占用全部带宽,可以设置传输速度限制:

# 限制下载速度为100KB/s
set net:limit-rate 102400

# 限制上传速度为50KB/s  
set net:limit-rate-up 51200

2. 传输完整性校验

传输完成后验证文件完整性:

# 计算本地文件MD5
md5sum /local/path/file

# 在远程服务器计算MD5(如果支持)
!ssh user@example.com "md5sum /remote/path/file"

3. 常见问题处理

  • 认证失败:检查用户名/密码和密钥文件权限
  • 连接超时:调整set net:timeout和重连参数
  • 权限问题:确保远程目录有写入权限

六、应用场景分析

1. 适合场景

  • 跨数据中心的大文件传输
  • 不稳定的移动网络环境
  • 自动化备份脚本
  • 需要定期同步的目录

2. 技术优缺点

优点

  • 自动处理网络中断
  • 支持并行加速传输
  • 灵活的脚本控制

缺点

  • 命令行操作有学习曲线
  • 某些老旧SFTP服务器兼容性问题

七、总结

通过lftp实现SFTP断点续传,我们解决了大文件传输中最头疼的中断问题。相比传统方案,它具有以下优势:

  1. 配置简单,主流Linux系统都支持
  2. 智能恢复,无需人工干预
  3. 性能优异,支持并行传输

无论是系统管理员还是开发人员,掌握这个工具都能显著提升文件传输的可靠性。建议将常用操作写成脚本,进一步提高工作效率。