2025.10.29【服务器】|lftp 常见参数与使用方法详解(含上传下载实战)
文章目录
- lftp 常见参数与使用方法详解(含上传下载实战)
- 一、什么是 lftp?
- 二、lftp 的基本语法
- 三、常用命令速查表
- 四、常见使用场景
- 1️⃣ 上传单个文件
- 2️⃣ 批量上传多个文件
- 3️⃣ 递归上传整个文件夹
- 4️⃣ 从服务器下载数据
- 5️⃣ 断点续传与多线程下载
- 五、被动模式与防火墙问题
- 六、脚本自动化上传(推荐做法)
- 七、常见问题(FAQ)
- ❓1. 上传卡住?
- ❓2. 上传时断开连接?
- ❓3. 上传大文件中断?
- 八、实用总结
- 九、结语
- 📎 参考文档
lftp 常见参数与使用方法详解(含上传下载实战)
📘 作者:穆易青,ChatGPT
🧬 关键词:Linux、lftp、FTP上传、断点续传、命令行自动化、服务器数据传输
一、什么是 lftp?
lftp 是 Linux/Unix 系统中一个强大的命令行 FTP/FTPS/SFTP 客户端,
相比传统 ftp 命令,它支持:
- ✅ 批量上传 / 下载(
mirror命令) - ✅ 自动断点续传
- ✅ 多线程并行传输
- ✅ 命令脚本执行
- ✅ 被动模式(绕过防火墙限制)
在生物信息学中,lftp 常被用于:
- 上传测序数据(如
.fastq.gz文件)到 NCBI 或项目 FTP; - 从合作方或测序公司服务器批量下载分析数据;
- 自动化数据备份脚本。
二、lftp 的基本语法
lftp [选项] [协议://]主机
常用选项说明:
| 参数 | 含义 |
|---|---|
-u user,password | 指定用户名和密码 |
-p port | 指定端口号(默认21) |
-e "命令; bye" | 执行命令后退出 |
--norc | 不读取配置文件 |
--help | 查看帮助文档 |
三、常用命令速查表
| 命令 | 功能 |
|---|---|
ls | 列出服务器文件 |
cd | 切换远程目录 |
lcd | 切换本地目录 |
get 文件名 | 下载单个文件 |
mget 文件1 文件2 | 批量下载文件 |
put 文件名 | 上传单个文件 |
mput *.fastq.gz | 批量上传多个文件 |
mirror | 递归同步目录(上传或下载) |
rm 文件名 | 删除远程文件 |
bye | 退出 lftp |
四、常见使用场景
1️⃣ 上传单个文件
lftp -u user,pass ftp.server.com -e "put /home/data/sample1.fastq.gz -o /upload/sample1.fastq.gz; bye"
说明:
put:上传文件;-o:指定远程路径;bye:执行完命令后退出。
2️⃣ 批量上传多个文件
lftp -u user,pass ftp.server.com <<EOF
cd /upload/2025/
mput *.fastq.gz
bye
EOF
优势:mput 支持通配符(*),可以一次上传所有 .fastq.gz 文件。
3️⃣ 递归上传整个文件夹
lftp -u user,pass ftp.server.com <<EOF
mirror -R /home/project/data/ /upload/data/
bye
EOF
📘 参数解释:
mirror -R:表示反向同步(即本地 → 远程上传);- 会自动创建目录结构;
- 支持断点续传。
4️⃣ 从服务器下载数据
lftp -u user,pass ftp.server.com -e "mirror /remote/results/ /local/results/; bye"
💡 该命令会同步远程文件夹到本地,自动跳过已下载文件。
5️⃣ 断点续传与多线程下载
lftp -u user,pass ftp.server.com <<EOF
set net:timeout 10
set net:max-retries 5
set mirror:use-pget-n 5
mirror --continue --parallel=4 /remote/data/ /local/data/
bye
EOF
--continue:断点续传;--parallel=4:4线程下载;set mirror:use-pget-n 5:每个文件 5线程分块下载。
五、被动模式与防火墙问题
有时服务器防火墙限制主动模式传输,此时需启用 被动模式:
set ftp:passive-mode true
完整示例:
lftp -u user,pass ftp.server.com -e "set ftp:passive-mode true; mirror -R /data /upload; bye"
六、脚本自动化上传(推荐做法)
保存为 upload_fastq.sh:
#!/bin/bash
SERVER="ftp.server.com"
USER="your_username"
PASS="your_password"
LOCAL_DIR="/home/data/"
REMOTE_DIR="/upload/2025/"lftp -u ${USER},${PASS} ${SERVER} <<EOF
set ftp:passive-mode true
set net:timeout 10
set net:max-retries 5
set mirror:use-pget-n 5
mirror -R -i '\.fastq\.gz$' ${LOCAL_DIR} ${REMOTE_DIR}
bye
EOF
执行:
bash upload_fastq.sh
✅ 优点:
- 支持断点续传
- 自动重试
- 可定时执行(结合
crontab)
七、常见问题(FAQ)
❓1. 上传卡住?
→ 添加:
set ftp:passive-mode true
❓2. 上传时断开连接?
→ 增加重试参数:
set net:max-retries 10
set net:persist-retries 10
❓3. 上传大文件中断?
→ 使用断点续传:
mirror -R --continue /local/path /remote/path
八、实用总结
| 功能 | 命令 |
|---|---|
| 上传单个文件 | put localfile -o remotefile |
| 上传多个文件 | mput *.fastq.gz |
| 上传整个目录 | mirror -R /local /remote |
| 下载目录 | mirror /remote /local |
| 被动模式 | set ftp:passive-mode true |
| 多线程 | set mirror:use-pget-n 5 |
| 自动退出 | -e "命令; bye" |
九、结语
lftp 是一款极其稳定、灵活的 FTP 工具,
特别适合大文件传输、生信项目交付、远程备份场景。
无论你是科研人员、数据分析师,还是运维工程师,
掌握 lftp 就能让你的服务器传输更加高效与安全 🚀
📎 参考文档
- lftp 官方手册
- Qiime2 / NCBI 上传常见命令指南
