1. FTP
各大主流 Linux 发行版均内置了基础的命令行 FTP 客户端,我们只需在终端中执行 ftp 命令即可启动。
该工具支持以匿名方式(若服务器允许)或通过用户名/密码认证连接 FTP 服务器。连接成功后,我们可以浏览目录、上传与下载文件、创建目录、重命名或删除文件,还可以通过脚本实现常规传输任务的自动化。
需要注意的是,FTP 并非安全协议。用户名、密码及文件数据均以明文形式在网络中传输,存在被截获的风险。
如果我们需要传输敏感文件,应改用 SFTP(SSH File Transfer Protocol,SSH 文件传输协议)或 SCP(Secure Copy,安全复制),因为这两种协议在传输过程中会对数据进行加密。
2. LFTP
LFTP 是一款免费开源的命令行文件传输客户端,支持多种协议,包括 FTP、FTPS、SFTP、HTTP、HTTPS、FISH,甚至 BitTorrent。该项目仍在积极维护,是 Linux 平台上功能最为强大的文件传输工具之一。
与基础版 ftp 客户端相比,LFTP 提供了诸多高级功能,例如书签管理、后台作业控制、命令历史记录、通过 mirror 命令实现目录同步,以及并行文件传输等。
这些特性使其深受系统管理员和开发者的青睐,尤其适用于需要频繁传输大量文件或实现文件传输自动化的场景。
我们可以通过各大发行版的默认软件仓库安装 LFTP:
$ sudo apt install lftp # Debian, Ubuntu, Linux Mint
$ sudo dnf install lftp # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
LFTP 最具实用价值的功能之一便是 mirror 命令,它可以上传或下载整个目录,并保持两端内容同步。这对于数据备份、网站部署或自动化构建流水线等场景尤为实用。
例如,以下命令可将本地的 firmware 目录上传至 FTP 服务器,并在传输完成后自动退出:
$ lftp -u builduser,'' -e "mirror -R /build/output/firmware /incoming/firmware; quit" ftp.internal.example.com
各参数含义如下:
-u builduser,'':以 builduser 账户登录,空引号表示密码为空。-e "...":连接成功后立即执行指定命令,随后退出。mirror -R:上传(反向镜像)本地 /build/output/firmware 目录至远程 /incoming/firmware 目录。
这种能够自动化实现目录同步的能力,正是 LFTP 被广泛用于脚本编写、定时任务及生产环境部署的主要原因之一。
【官方网址】:
https://lftp.yar.ru/
3. NcFTP
NcFTP 是一款免费的命令行 FTP 客户端,于 1991 年首次发布,旨在作为传统 Unix ftp 程序的增强替代品。尽管历史悠久,该项目目前仍在积极维护,2025 年已发布 3.3.0 版本。
【官方网址】
https://www.ncftp.com/
它包含多项便捷功能,如自动重连、后台文件传输、断点续传、文件名自动补全、进度指示器以及命令历史记录等。
此外,它还附带了一系列配套工具,如 ncftpput 和 ncftpget,便于我们在 Shell 脚本中实现上传和下载的自动化。
我们可以通过各大发行版的默认软件仓库安装 NcFTP:
$ sudo apt install ncftp # Debian, Ubuntu, Linux Mint
$ sudo dnf install ncftp # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
$ sudo emerge -a sys-apps/ncftp # Gentoo
$ sudo apk add ncftp # Alpine Linux
$ sudo pacman -S ncftp # Arch Linux
$ sudo zypper install ncftp # openSUSE
如果我们需要一款轻量级 FTP 客户端,拥有熟悉的命令行界面,并在基础 ftp 命令之上提供了一些额外的生产力功能,那么 NcFTP 依然是一个稳妥的选择,尤其适用于交互式会话和简单的自动化任务。
4. cbftp
cbftp 是一款高级命令行 FTP/FXP 客户端,专为跨多台 FTP 服务器的文件传输管理而设计。它基于 ncurses 在终端中运行,提供了基于文本的菜单系统,相比传统命令行提示符更易于导航。
它具备多项高级功能,包括支持多种文本编码的集成文件查看器、用于忽略特定文件或目录的跳过列表(skip lists)、用于传输自动化的远程 UDP 命令,以及用于保护本地数据文件的 AES-256 加密。
与本文列表中的其他 FTP 客户端不同,cbftp 通常不在默认软件仓库中提供。我们可以从 GitHub 上的源码进行编译安装:
$ git clone https://github.com/cbftp/cbftp-svn.git
$ cd cbftp-svn
$ make
$ sudo mv bin/cbftp /usr/local/bin/
虽然 cbftp 功能强大,但它面向的是需要管理多台 FTP 服务器并自动化复杂传输工作流的高级用户。对于日常的上传和下载任务,LFTP 或 NcFTP 等工具通常是更合适的选择。
【官方网址】
https://cbftp.cbre.com/
5. tnftp
tnftp 是传统 BSD FTP 客户端的增强版本。它是 NetBSD、FreeBSD、OpenBSD 以及 Darwin(macOS)的默认 FTP 客户端,目前仍在积极维护。
相较于标准版 ftp 客户端,tnftp 增加了多项易用性改进,包括服务器端 Tab 键自动补全、更好地处理传输过程中的多源文件,以及大量的 Bug 修复和性能优化。
如果我们熟悉传统的 ftp 命令,会发现 tnftp 的使用方式基本一致,但体验更为流畅。
在 Debian 和 Ubuntu 上,我们可以直接从默认仓库安装:
$ sudo apt install tnftp # Debian and Ubuntu
如果我们的 Linux 发行版未提供该软件包,也可以从 NetBSD 项目获取源码自行编译。如果我们偏好经典的 ftp 命令,但希望获得一个功能更强、维护更活跃的实现版本,tnftp 是一个极佳的替代方案。
【下载地址】
https://ftp.netbsd.org/pub/NetBSD/misc/tnftp/
6. curl
curl 在大多数 Linux 发行版中均已预装,最广为人知的是作为 HTTP/HTTPS 工具。然而,它也支持 FTP 和 FTPS,因此是执行简单文件传输的便捷选择。
如果我们仅需在脚本或命令行中上传/下载单个文件,curl 通常比启动交互式 FTP 会话更为简便。这使其成为自动化任务、备份及定时作业中的常用工具。
例如,以下命令可将文件上传至 FTP 服务器:
$ curl -u username:password -T backup.tar.gz ftp://ftp.example.com/uploads/
各选项含义如下:
-u username:password:发送 FTP 用户名和密码进行认证。-T backup.tar.gz:上传名为 backup.tar.gz 的本地文件。ftp://ftp.example.com/uploads/:指定 FTP 服务器上的目标目录。
大多数 Linux 发行版已内置 curl。如果尚未安装,可通过发行版的包管理器进行安装:
如果我们的目标是从命令行快速执行 FTP 传输,或在 Shell 脚本中将其自动化,curl 是最简单、最可靠的工具之一。
【官方网址】
https://curl.se/
7. rclone
rclone 是一款主要面向云存储同步的命令行工具,但它同时支持 FTP、SFTP、WebDAV 以及众多其他存储后端。
因此,当我们需要在 FTP 服务器与其他存储服务(如 Amazon S3、Google Drive,甚至另一台 FTP 服务器)之间传输文件时,rclone 是理想之选。
它提供了多项实用功能,如校验和验证(checksum verification)、带宽限制(bandwidth limiting)、断点续传以及目录同步。其 sync 命令仅复制新增或变更的文件,有助于减少传输时间和带宽消耗。
在使用 FTP 服务器之前,我们需要通过交互式配置向导创建一个远程配置(remote):
$ rclone config
配置完成后(例如命名为 mysite),我们可以将本地目录同步至 FTP 服务器:
$ rclone sync /var/www/html mysite:public_html --progress
此示例中:
sync:将本地 /var/www/html 目录的内容同步至远程 public_html 目录。mysite:我们通过 rclone config 创建的 FTP 远程配置名称。--progress:在文件复制过程中显示传输进度。
我们可以通过发行版默认仓库安装 rclone:
$ sudo apt install rclone # Debian, Ubuntu, Linux Mint
$ sudo dnf install rclone # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
$ sudo pacman -S rclone # Arch Linux
或者通过官方安装脚本获取最新版本:
$ curl https://rclone.org/install.sh | sudo bash
如果我们经常需要在 FTP 服务器、云存储服务或本地目录之间同步文件,rclone 是现有最灵活、功能最丰富的工具之一。
【官方网址】
https://rclone.org/
8. aria2
aria2 是一款轻量级命令行下载工具,支持 HTTP、HTTPS、FTP、SFTP、BitTorrent 和 Metalink。其最大优势在于能够将文件分割为多个分段并同时下载,当服务器支持多连接时,这可以显著提升下载速度。
如果我们需要从 FTP 服务器下载大型 ISO 镜像、备份文件或数据集,aria2 通常比基础 FTP 客户端更为合适,因为它能够充分利用我们的可用带宽。
例如,以下命令使用 8 个并行连接下载 ISO 镜像:
$ aria2c -x 8 -s 8 ftp://ftp.example.com/isos/rocky-9.4-x86_64-dvd.iso
各选项含义如下:
-x 8:允许与 FTP 服务器建立最多 8 个并发连接。-s 8:将文件分割为 8 个分段,以便并行下载。
我们可以通过默认软件仓库安装 aria2:
$ sudo apt install aria2 # Debian, Ubuntu, Linux Mint
$ sudo dnf install aria2 # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
$ sudo pacman -S aria2 # Arch Linux
如果我们经常从 FTP 服务器下载大型文件,aria2 凭借高速多连接下载、断点续传支持以及广泛的协议兼容性,是一款出色的选择。
【托管地址】
https://aria2.github.io/
9. Axel
Axel 是一款轻量级命令行下载加速器,支持 HTTP、HTTPS、FTP 和 FTPS。与 aria2 类似,它可以通过与同一服务器建立多个连接来加速下载,但界面更为简洁,配置选项也更少。
如果我们只需要一种更快的方式从 FTP 服务器下载大型文件,Axel 使用简单且几乎无需配置。例如,以下命令使用 8 个并行连接下载文件:
$ axel -n 8 ftp://ftp.example.com/isos/rocky-9.4-x86_64-dvd.iso
选项含义如下:
-n 8:与 FTP 服务器建立 8 个并发连接,使文件的不同部分能够并行下载。
我们可以通过默认软件仓库安装 Axel:
$ sudo apt install axel # Debian, Ubuntu, Linux Mint
$ sudo dnf install axel # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
如果我们希望拥有一款简洁的工具,能够在不借助高级下载管理器额外功能的前提下加速 FTP 下载,Axel 是一个稳妥的选择。
【托管地址】
https://github.com/axel-download-accelerator/axel
10. Midnight Commander
Midnight Commander(MC)是一款基于终端的双栏文件管理器,极大简化了命令行环境下的文件管理操作。除了浏览本地文件外,它还可以连接 FTP 服务器,让我们能够以近乎操作本地文件的方式处理远程文件。
在 Midnight Commander 中打开 FTP 连接后,远程服务器的内容会显示在一个面板中,而本地文件则保留在另一个面板。随后,我们可以使用与本地文件操作相同的键盘快捷键在两者之间复制文件,无需记忆 get 和 put 等命令。
启动 Midnight Commander:
$ mc
连接 FTP 服务器的步骤:
(1)按 F9 打开菜单。
(2)根据需求选择 Left(左面板)或 Right(右面板)。
(3)选择 FTP Link。
(4)输入服务器信息,例如:user@ftp.example.com
我们可以通过大多数 Linux 发行版的默认仓库安装 Midnight Commander:
$ sudo apt install mc # Debian, Ubuntu, Linux Mint
$ sudo dnf install mc # RHEL, CentOS Stream, Fedora, Rocky Linux, AlmaLinux
如果我们更倾向于使用可视化、键盘驱动的界面,而非手动输入 FTP 命令,Midnight Commander 是管理本地与远程文件最为便捷的工具之一。
【官方地址】
https://midnight-commander.org/
11. Cyberduck CLI (duck)
duck 是 Cyberduck 这款流行文件传输应用的命令行接口。它支持 FTP、FTPS、SFTP、WebDAV、Amazon S3 以及多种其他云存储服务,使我们能够使用一致的命令集操作不同的存储后端。
如果我们的工作流同时涉及传统 FTP 服务器和云存储服务,duck 是一个不错的选择,因为我们无需为每种服务学习不同的工具。
例如,以下命令可将本地文件上传至 FTP 服务器:
$ duck --username myuser --upload ftp://ftp.example.com/uploads/ ./release.tar.gz
此命令中:
--username myuser:指定 FTP 用户名。ftp://ftp.example.com/uploads/:FTP 服务器上的目标目录。./release.tar.gz:待上传的本地文件。
如果我们需要一款能够同时兼容 FTP 服务器和现代云存储服务的单一命令行工具,Cyberduck CLI(duck)是一个灵活的解决方案。
【官方网址】.
https://duck.sh/
12. Wget
Wget 是一款用于从互联网下载文件的命令行工具。虽然它最常用于 HTTP 和 HTTPS,但也支持 FTP 和 FTPS,因此是从 FTP 服务器下载文件的可靠工具。
它特别适用于非交互式下载、Shell 脚本和定时任务。Wget 还支持断点续传,并能从 FTP 服务器递归下载整个目录,这使得它在需要获取大量文件集合时尤为实用。
要从 FTP 服务器下载文件,我们可以在 URL 中指定用户名、密码和 FTP 地址:
$ wget ftp://username:password@ftp_server_address/path/to/file
或者,我们也可以将凭据作为独立选项提供,这种方式通常更易读,也能避免将密码直接嵌入 URL:
$ wget --ftp-user=username --ftp-password=password \
ftp://ftp_server_address/path/to/file
大多数 Linux 发行版默认已包含 Wget。
如果我们只需要从 FTP 服务器下载文件或整个目录,而无需启动交互式会话,Wget 依然是最简单、最可靠的工具之一。
【官方网址】
https://www.gnu.org/software/wget/
以上便是 12 款至今仍具实用价值且仍在积极维护的命令行 FTP 工具。如果我们需要传统的 FTP 客户端,LFTP、NcFTP、tnftp 和 cbftp 都是优秀的选择。对于自动化和脚本编写场景,curl、Wget、rclone、aria2、Axel 和 duck 等工具则提供了从简单文件传输到云存储同步,再到高速并行下载的全面支持。
如果我们更偏好以可视化的方式在终端中管理文件,Midnight Commander 提供了易于上手的双栏界面,可同时处理本地与远程文件。
无论是传输单个文件、同步目录、自动化备份,还是管理远程服务器上的文件,这里几乎涵盖了各类 FTP 工作流所需的工具。