Linux ncftp 命令实战指南:增强型 FTP 客户端的上传、下载与交互式操作

原创2026-10-01 12:10:46681 阅读
文章标签:文档教程

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 使用需求。

登录后查看全文
linux-command