Linux 系统中,lftp 是一款功能强大的命令行文件传输工具,基于文本界面,支持多种协议(如 FTP、FTPS、HTTP、HTTPS、HFTP、FISH 等),具备自动操作、断点续传、多线程下载等高级特性,适合需要高效管理远程文件传输的场景,以下从安装、基本操作、高级功能及配置等方面详细介绍 lftp 命令的使用方法。

安装与启动 lftp
在大多数 Linux 发行版中,lftp 可通过包管理器直接安装,以 Debian/Ubuntu 为例,执行 sudo apt update && sudo apt install lftp;CentOS/RHEL 系统则使用 sudo yum install lftp 或 sudo dnf install lftp,安装完成后,在终端输入 lftp 即可启动,默认会进入交互式命令行界面,启动时可直接指定主机地址,如 lftp ftp.example.com,或通过 lftp -u username,host ftp.example.com 指定用户名和密码(密码输入时不会显示)。
基本连接与认证操作
lftp 支持多种协议连接,核心命令围绕连接、认证、目录浏览和文件传输展开。
连接与断开
open [host] [-p port] [-u user[,pass]]:打开与指定主机的连接,可指定端口和用户信息。open ftp.example.com -p 21 -u myuser,mypass。close:关闭当前连接,但保持 lftp 进程运行。exit或bye:退出 lftp,关闭所有连接。
认证与用户切换
user [username] [password]:重新认证或切换用户,如user anotheruser anotherpass。pass:单独输入密码(在user命令后使用,避免密码暴露在命令历史中)。
目录操作
ls [remote-path]:列出远程目录内容,支持-l(详细列表)、-a(显示隐藏文件)等选项,类似 Linux 的ls命令。cd [remote-path]:切换远程目录,如cd /pub/upload。lcd [local-path]:切换本地工作目录(影响上传/下载的默认路径)。pwd:显示当前远程目录路径;lpwd显示本地当前路径。mkdir [dir-name]:在远程创建目录,支持多级目录(如mkdir -p a/b/c)。rmdir [dir-name]:删除远程空目录。
文件传输核心命令
lftp 的核心优势在于高效文件传输,支持单文件、批量操作及断点续传。
上传与下载
get [remote-file] [-o local-file]:下载远程文件到本地,-o指定本地路径。get largefile.zip -o ~/downloads/。mget [remote-files]:批量下载多个文件,支持通配符(如mget *.txt)。put [local-file] [-r]:上传本地文件到远程,-r可递归上传整个目录。mput [local-files]:批量上传多个文件,如mput *.jpg。
传输控制
mirror [remote-dir] [local-dir] [-r]:同步目录,-r表示反向同步(本地到远程)。mirror /remote/dir /local/dir会将远程目录完整复制到本地,mirror -r /local/dir /remote/dir则相反。queue:查看当前传输队列,queue stop/start/clear可控制队列状态。set net:limit-rate [value]:限制传输速度,单位为字节/秒,如set net:limit-rate 100000(限制为 100KB/s)。
断点续传
默认情况下,lftp 支持断点续传,若传输中断(如网络故障),重新执行相同命令即可继续未完成的传输,可通过 set ftp:sync-mode off 禁用同步模式(默认开启,确保文件完整性)。

高级功能与脚本支持
lftp 提供丰富的自动化和高级功能,适合复杂场景使用。
多线程与并行传输
set ftp:parallel [number]:设置 FTP 传输的线程数,如set ftp:parallel 5可同时开启 5 线程下载,提升大文件传输速度。pget [remote-file] [-n num]:多线程下载单个文件,-n指定线程数,pget largefile.iso -n 8。
批量操作与脚本
lftp 支持命令脚本执行,可通过 lftp -f script-file 运行脚本文件,或直接在命令行执行命令(如 lftp -c "open host; get file1; put file2"),脚本中可使用循环、条件判断等逻辑,例如批量下载:
open ftp.example.com user myuser mypass cd /pub/data mget *.zip exit
书签管理
bookmark [add|list|delete] [name]:管理常用主机书签。bookmark add myftp ftp.example.com -u myuser添加书签,bookmark myftp可快速连接。
代理与协议支持
set ftp:proxy [proxy-server]:配置 FTP 代理服务器。set ftp:ssl-force on:强制使用 FTPS(加密 FTP),提升传输安全性。
配置文件与优化
lftp 的默认行为可通过配置文件调整,通常位于 ~/.lftprc 或 /etc/lftp.conf,常用配置项包括:
set cmd:ls "-l":默认ls命令添加-l选项。set ftp:passive-mode on:开启被动模式(适用于防火墙环境)。set net:reconnect-interval-base 10:重连间隔基数(秒)。
配置文件修改后,无需重启 lftp,重新加载即可生效(source ~/.lftprc)。

常见问题与注意事项
- 连接超时:若长时间无操作导致连接断开,可通过
set net:timeout 30调整超时时间(默认 30 秒)。 - 权限问题:上传文件时需确保远程目录有写权限,下载时本地目录需有读权限。
- 协议兼容性:部分老旧 FTP 服务器可能不支持多线程或断点续传,需通过
set ftp:sync-mode off等命令调整参数。
相关问答 FAQs
问题 1:lftp 如何实现多线程下载?如何设置线程数?
解答:lftp 提供两种多线程下载方式:
- 多文件并行:使用
mget命令时,默认会开启多个线程同时下载不同文件(线程数可通过set ftp:parallel [number]设置,如set ftp:parallel 5)。 - 单文件分块:使用
pget命令下载单个文件,pget largefile.iso -n 8表示将文件分成 8 块并行下载,显著提升大文件下载速度。
问题 2:lftp 如何同步本地和远程目录,确保内容一致?
解答:使用 mirror 命令可实现双向目录同步:
- 远程到本地:
mirror /remote/dir /local/dir,将远程目录完整复制到本地(会覆盖本地同名文件)。 - 本地到远程:
mirror -r /local/dir /remote/dir,-r参数表示反向同步,将本地目录上传至远程。 - 增量同步:默认情况下,
mirror会比较文件时间和大小,仅传输有变化的文件,避免重复传输,若需强制覆盖所有文件,可添加--overwrite参数。
