Linux ncftp 命令实战指南:增强型 FTP 客户端的上传、下载与交互式操作
Linux ncftp 命令实战指南:增强型 FTP 客户端的上传、下载与交互式操作
ncftp 是 Linux 下的一款增强型 FTP 客户端,相比传统的 ftp 命令,它提供了传输速率显示、下载进度条、断点续传、书签、防火墙与代理服务器支持等实用特性。本篇指南以 command/ncftp.md 文档为主体,完整覆盖 ncftp 的语法、选项、源码安装、目录批量上传实例以及交互式命令,并辅以本仓库中 ftp.md、lftp.md 等同类命令文档进行横向对照,帮助你快速掌握这套比传统 FTP 更强大的文件传输方案。
ncftp 是什么:比传统 ftp 更强大的文字模式 FTP 工具
ncftp(Network Client FTP)是增强版的 ftp 工具。FTP 协议用于让用户从服务器主机下载文件,也能将文件上传到远端主机存放,而 ncftp 是文字模式 FTP 程序中的优秀代表。与传统的 ftp 命令相比,ncftp 具备以下特色能力:
- 显示传输速率与下载进度,让传输过程可见可控;
- 支持自动续传(断点续传),大文件或中断的传输可以接着继续;
- 支持书签(bookmark)功能,常用站点一键直达;
- 可通过防火墙和代理服务器连接;
- 提供
ncftpput、ncftpget等非交互式命令行工具,方便在脚本中完成上传与下载。
在本仓库中,ncftp 被归入"文件传输"类命令(见 README.md),与 ftp、lftp、tftp、scp 等命令并列;其索引条目位于 dist/data.json,描述为"是增强的的FTP工具"。
语法与选项详解
ncftp 的基本语法为:
ncftp(选项)(参数)
各选项含义如下:
| 选项 | 含义 |
|---|---|
-u |
指定登录 FTP 服务器时使用的用户名 |
-p |
指定登录 FTP 服务器时使用的密码 |
-P |
如果 FTP 服务器没有使用默认的 TCP 21 端口,则使用此选项指定 FTP 服务器的端口号 |
-m |
在传输之前尝试在目录位置创建目录(用于上传目录的情况) |
-R |
递归传输子目录 |
参数部分则指定远程 FTP 服务器的 IP 地址或主机名。
选项组合的典型用法
-u与-p通常成对出现,用于非交互式登录,避免在连接过程中被反复询问账号密码,适合在 Shell 脚本中调用;-P用于对接非 21 端口的 FTP 服务(例如内部文件服务器或改端口的运维场景);-m与-R常配合使用:前者在远端自动创建目标目录,后者将本地目录连同子目录一起递归上传,是"整目录发布"场景的标准组合。
源码安装 ncftp
ncftp 可以通过源码编译方式安装,官方源码包下载地址为 ftp://ftp.ncftp.com/ncftp/,安装过程如下:
wget ftp://ftp.ncftp.com/ncftp/ncftp-3.2.3-src.tar.gz
tar zxvf ncftp-3.2.3-src.tar.gz
cd ncftp-3.2.3/
./configure --prefix=/usr/local/ncftp
make && make install
安装说明:
--prefix=/usr/local/ncftp指定安装前缀,可将程序安装到独立目录,便于统一管理,避免污染系统默认路径;- 安装完成后,可执行程序位于
/usr/local/ncftp/bin/下,例如ncftp、ncftpput等; - 若希望在任意目录直接调用,可以将
/usr/local/ncftp/bin加入 PATH 环境变量; - 除源码编译外,多数 Linux 发行版也提供
ncftp软件包,可用系统包管理器(如apt-get、yum)直接安装,具体以你的发行版仓库为准。
实战实例:递归上传本地目录到 FTP 服务器
将本地 /etc/ 目录内的所有文件和目录,上传到 FTP 服务器的 flv/games/ 目录内(如果远端不存在 flv/games/ 目录则自动创建):
/usr/local/ncftp/bin/ncftpput -u koumm -p koumm -P 21 -m -R 192.168.162.137 flv/games/ /etc/*
命令拆解:
ncftpput:ncftp 套件中的命令行上传工具,适合脚本化使用;-u koumm -p koumm:以用户名koumm、密码koumm登录;-P 21:显式指定 FTP 端口为 21(该端口为 FTP 默认端口,此处显式写出便于确认);-m:若远端flv/games/目录不存在,则在传输前自动创建;-R:递归上传子目录,确保/etc/下的目录结构完整保留;192.168.162.137:目标 FTP 服务器地址;flv/games/:远端目标目录;/etc/*:本地待上传的文件集合。
借助同样的命令行工具族,ncftp 套件通常还提供 ncftpget(非交互式下载)、ncftpls(列出远端目录)等配套命令,命名规律为 ncftp + 动作动词,可结合 --help 查看各自参数。需要说明的是,非交互式命令的具体名称与参数以你安装的 ncftp 版本实际提供为准。
交互式命令:进入 ncftp 终端操作
直接运行 ncftp 并登录服务器后,会进入交互式界面。ncftp 的基本命令和普通 ftp 一样,输入 help 可查看命令列表;对任意命令使用 help <命令> 的格式,可以获得该命令的详细帮助。
命令规则:以 l 开头的命令是对本地文件系统的操作,其余命令则针对已登录的 FTP 服务器目录进行操作。
本地文件系统操作命令(l 开头)
| 命令 | 作用 |
|---|---|
lls |
列出本地当前目录文件 |
lmkdir |
在本地建立目录 |
lrename |
本地文件改名 |
lpwd |
显示当前本地路径 |
lchmod |
改变本地文件权限 |
lpage |
显示本地文件内容 |
lrm |
删除本地文件 |
lrmdir |
删除本地目录 |
这组本地命令让用户在 FTP 会话中不必退出即可同时管理两端文件系统,例如先 lls 确认本地文件,再用 put 上传,流程一气呵成。
与普通 ftp 一致的服务端命令
由于 ncftp 的基本命令与普通 ftp 一致,本仓库 ftp.md 中整理的常用交互式命令同样适用,例如:
get/mget:从远端下载单个 / 多个文件;put/mput:向远端上传单个 / 多个文件;cd/cdup/pwd:切换与查看远端目录;mkdir/rmdir/delete/rename:远端目录与文件管理;binary/ascii:切换二进制 / 文本传输模式;bye/quit:退出 FTP 会话;status:显示当前 FTP 连接状态。
ncftp、ftp、lftp 三款命令的横向对照
本仓库同时收录了多款 FTP 类客户端,可以从选择角度做一个横向对照:
- ftp.md:系统自带的传统 FTP 客户端,命令最小可用,适合简单的一次性传输,但缺少断点续传、书签等增强能力;
- ncftp.md:文字模式增强客户端,突出书签、传输进度、断点续传以及本地/远端双端命令操作;
- lftp.md:功能更全面的文件客户端,支持 FTP、SFTP、HTTP、FTPS 等多种协议,具备镜像下载/上传(
mirror)、多线程下载(pget)、字符集与被动模式配置等高级能力。
如果你的需求只是登录服务器传几个文件,ftp 就够用;需要在脚本中批量上传/下载并自动创建目录,ncftpput 这类非交互式命令更合适;若追求多协议、镜像同步、编码处理等复杂场景,可以参考 lftp.md 的用法。
在 linux-command 仓库中查阅与复用
本仓库将 ncftp 文档整理为 command/ncftp.md,与 600 多个 Linux 命令文档一同发布,主要查阅方式包括:
- 通过 README.md 中的命令分类索引("文件传输"分类包含
bye、ftp、ftpcount、ftpshut、ftpwho、ncftp、tftp、uucico、uucp、uupick、uuto、scp)快速定位命令; - 通过 dist/data.json 获取命令索引数据(名称、路径、描述),可用于二次开发或本地搜索;
- 通过 npm 包
linux-command以编程方式引用命令文档,例如require("linux-command/command/ncftp.md")可直接获得该命令的 Markdown 原文,便于集成到自己的工具链中(见 package.json 与 README.md)。
小结
ncftp 是传统 ftp 命令的可靠增强替代:交互模式下拥有完整的双端文件操作命令与书签、进度显示等体验增强;配合 ncftpput 等命令行工具,可以在脚本中完成带自动建目录、递归子目录的批量上传,非常适合日常文件搬运与自动化部署场景。掌握 -u、-p、-P、-m、-R 这组核心选项,再结合 help 命令探索交互式功能,就能覆盖绝大多数 FTP 使用需求。