当前位置: 首页 > news >正文

Linux命令-ncftp(增强的的FTP工具)

ncftp是 Linux 中一个功能强大的 FTP 客户端,提供了比传统ftp命令更丰富的功能和更友好的界面。它支持自动登录、断点续传、递归传输、书签管理等功能,是 FTP 操作的强大工具。

📖 基本语法

ncftp[选项][主机名]ncftpget[选项]主机名[远程文件][本地文件]ncftpput[选项]主机名[本地文件][远程文件]ncftpls[选项]主机名[远程目录]ncftpbatch[选项][批处理文件]

重要特性

  • 支持断点续传
  • 支持递归目录操作
  • 支持书签管理
  • 支持命令行补全
  • 支持通配符操作
  • 支持被动和主动模式

🎯 常用选项

ncftp 通用选项
选项说明
-u <用户名>指定登录用户名。
-p <密码>指定登录密码。
-P <端口>指定 FTP 服务器端口(默认 21)。
-j <账号>指定账号(某些 FTP 服务器需要)。
-h显示帮助信息。
-v显示版本信息。
-d <级别>设置调试级别(0-10)。
-t <秒>设置超时时间。
-r <秒>设置重试间隔。
-R <次数>设置重试次数。
-f <文件>从文件读取登录信息。
-F使用被动模式(PASV)。
-A使用主动模式(PORT)。
-V详细输出模式。
-X使用 ASCII 传输模式。
-Y使用二进制传输模式。
ncftpget 特定选项
选项说明
-c断点续传(如果文件已存在)。
-C强制断点续传。
-T使用临时文件传输。
-R递归下载目录。
-m使用通配符。
-DD下载后删除远程文件。
-z远程文件较新时才下载。
-Z远程文件较旧或相同时才下载。
-f强制覆盖本地文件。
-E使用 EPSV 命令(扩展被动模式)。
ncftpput 特定选项
选项说明
-c断点续传(如果文件已存在)。
-C强制断点续传。
-T使用临时文件传输。
-R递归上传目录。
-m使用通配符。
-z本地文件较新时才上传。
-Z本地文件较旧或相同时才上传。
-f强制覆盖远程文件。
-E使用 EPSV 命令(扩展被动模式)。

💡 核心用法示例

1. 交互式 FTP 会话
# 连接到 FTP 服务器ncftp ftp.example.com# 使用用户名和密码连接ncftp-uusername-ppassword ftp.example.com# 使用特定端口连接ncftp-P2121ftp.example.com# 使用被动模式连接ncftp-Fftp.example.com# 使用主动模式连接ncftp-Aftp.example.com
2. 下载文件(ncftpget)
# 下载单个文件ncftpget ftp.example.com /remote/file.txt /local/path/# 下载文件并指定用户名密码ncftpget-uusername-ppassword ftp.example.com /remote/file.txt /local/path/# 断点续传下载ncftpget-cftp.example.com /remote/largefile.iso /local/path/# 递归下载目录ncftpget-Rftp.example.com /remote/directory/ /local/path/# 使用通配符下载多个文件ncftpget-mftp.example.com /remote/*.txt /local/path/# 下载后删除远程文件ncftpget-DDftp.example.com /remote/file.txt /local/path/# 只下载较新的文件ncftpget-zftp.example.com /remote/file.txt /local/path/
3. 上传文件(ncftpput)
# 上传单个文件ncftpput ftp.example.com /remote/path/ /local/file.txt# 上传文件并指定用户名密码ncftpput-uusername-ppassword ftp.example.com /remote/path/ /local/file.txt# 断点续传上传ncftpput-cftp.example.com /remote/path/ /local/largefile.iso# 递归上传目录ncftpput-Rftp.example.com /remote/path/ /local/directory/# 使用通配符上传多个文件ncftpput-mftp.example.com /remote/path/ /local/*.txt# 只上传较新的文件ncftpput-zftp.example.com /remote/path/ /local/file.txt
4. 列出文件(ncftpls)
# 列出远程目录ncftpls ftp.example.com /remote/path/# 列出详细信息ncftpls-lftp.example.com /remote/path/# 递归列出目录ncftpls-Rftp.example.com /remote/path/# 列出隐藏文件ncftpls-aftp.example.com /remote/path/# 按时间排序ncftpls-tftp.example.com /remote/path/# 按大小排序ncftpls-Sftp.example.com /remote/path/
5. 批处理操作(ncftpbatch)
# 创建批处理文件cat>ftp_batch.txt<<'EOF' open ftp.example.com user username password cd /remote/path get file1.txt get file2.txt put localfile.txt quit EOF# 执行批处理ncftpbatch ftp_batch.txt# 使用 ncftpbatch 直接执行命令ncftpbatch-c"open ftp.example.com; user username password; ls; quit"

🔧 交互式命令

进入 ncftp 交互模式后,可以使用以下命令:

连接和认证
命令说明
open <主机名>连接到 FTP 服务器。
user <用户名> [密码]登录到 FTP 服务器。
auth重新认证。
close关闭当前连接。
quitexit退出 ncftp。
目录操作
命令说明
pwd显示远程当前目录。
lpwd显示本地当前目录。
cd <目录>切换远程目录。
lcd <目录>切换本地目录。
mkdir <目录>创建远程目录。
rmdir <目录>删除远程目录。
chmod <权限> <文件>更改远程文件权限。
文件操作
命令说明
ls [选项] [目录]列出远程文件。
lls [选项] [目录]列出本地文件。
get <远程文件> [本地文件]下载文件。
put <本地文件> [远程文件]上传文件。
mget <模式>使用通配符下载多个文件。
mput <模式>使用通配符上传多个文件。
rename <旧名> <新名>重命名远程文件。
delete <文件>删除远程文件。
rm <文件>删除远程文件(同 delete)。
mv <源> <目标>移动远程文件。
cp <源> <目标>复制远程文件(某些服务器支持)。
传输设置
命令说明
ascii使用 ASCII 传输模式。
binaryimage使用二进制传输模式。
mode <模式>设置传输模式(S=流,B=块,C=压缩)。
passive切换被动模式。
active切换主动模式。
type <类型>设置传输类型(A=ASCII,I=二进制)。
书签管理
命令说明
bookmark显示书签列表。
bookmark add <名称>添加当前连接为书签。
bookmark delete <名称>删除书签。
bookmark edit编辑书签文件。
bookmark <名称>连接到书签。
其他命令
命令说明
help [命令]显示帮助信息。
!<命令>执行本地 shell 命令。
set <选项>设置选项。
show显示当前设置。
site <命令>发送 SITE 命令到服务器。
quote <命令>发送原始 FTP 命令。
version显示 ncftp 版本。
about显示关于信息。

📁 书签功能

ncftp 的书签功能可以保存 FTP 连接信息,方便快速连接。

1. 创建书签
# 连接到 FTP 服务器ncftp ftp.example.com# 登录后添加书签bookmarkaddmyserver# 直接创建书签(不连接)ncftp bookmarkaddmyserver ftp://username:password@ftp.example.com
2. 使用书签
# 连接到书签ncftp myserver# 在交互模式中使用书签openmyserver
3. 管理书签
# 列出所有书签bookmark# 编辑书签bookmark edit# 删除书签bookmark delete myserver# 书签文件位置:~/.ncftp/bookmarks

🔄 断点续传

ncftp 支持断点续传,对于大文件传输非常有用。

# 下载时断点续传ncftpget-cftp.example.com /remote/largefile.iso /local/path/# 上传时断点续传ncftpput-cftp.example.com /remote/path/ /local/largefile.iso# 强制断点续传(即使时间戳不同)ncftpget-Cftp.example.com /remote/largefile.iso /local/path/

📊 递归传输

ncftp 支持递归传输整个目录结构。

# 递归下载目录ncftpget-Rftp.example.com /remote/directory/ /local/path/# 递归上传目录ncftpput-Rftp.example.com /remote/path/ /local/directory/# 递归列出目录ncftpls-Rftp.example.com /remote/path/

⚙️ 配置文件

ncftp 的配置文件位于~/.ncftp/目录。

主要配置文件
  1. ~/.ncftp/prefs- 用户首选项
  2. ~/.ncftp/bookmarks- 书签文件
  3. ~/.ncftp/trace- 跟踪日志
  4. ~/.ncftp/firewall- 防火墙设置
示例配置文件
# ~/.ncftp/prefs 示例allow-clobber=no confirm-close=yeslogsize=0passive-mode=yes progress-meter=2recursive-list=no save-passwords=no show-status=yes xfer-progress=yes

🛠️ 实用脚本

1. 自动备份脚本
#!/bin/bash# 自动备份到 FTP 服务器FTP_HOST="ftp.example.com"FTP_USER="username"FTP_PASS="password"FTP_DIR="/backups/"LOCAL_DIR="/backup/"BACKUP_FILE="backup_$(date+%Y%m%d_%H%M%S).tar.gz"# 创建本地备份echo"创建本地备份..."tar-czf"$LOCAL_DIR/$BACKUP_FILE"/path/to/backup# 上传到 FTPecho"上传到 FTP 服务器..."ncftpput-u"$FTP_USER"-p"$FTP_PASS"-c"$FTP_HOST""$FTP_DIR""$LOCAL_DIR/$BACKUP_FILE"if[[$?-eq0]];thenecho"备份成功:$BACKUP_FILE"# 清理旧备份(保留最近7天)find"$LOCAL_DIR"-name"backup_*.tar.gz"-mtime+7-delete# 清理远程旧备份echo"清理远程旧备份..."ncftpls-l-u"$FTP_USER"-p"$FTP_PASS""$FTP_HOST""$FTP_DIR"|\grep"backup_"|sort-r|tail-n+8|awk'{print $9}'|\whileread-rold_file;doecho"删除:$old_file"ncftp-u"$FTP_USER"-p"$FTP_PASS""$FTP_HOST"<<EOF cd$FTP_DIRdelete$old_filequit EOFdoneelseecho"备份失败"exit1fi
2. 同步目录脚本
#!/bin/bash# 同步本地目录到 FTP 服务器FTP_HOST="ftp.example.com"FTP_USER="username"FTP_PASS="password"REMOTE_DIR="/website/"LOCAL_DIR="/var/www/html/"LOG_FILE="/var/log/ftp_sync.log"echo"=== 开始同步$(date)===">>"$LOG_FILE"# 上传新增和修改的文件find"$LOCAL_DIR"-typef-newer"$LOG_FILE"2>/dev/null|whileread-rfile;dorel_path="${file#$LOCAL_DIR}"remote_path="$REMOTE_DIR${rel_path%/*}"echo"上传:$rel_path"|tee-a"$LOG_FILE"# 确保远程目录存在ncftp-u"$FTP_USER"-p"$FTP_PASS""$FTP_HOST"<<EOF2>/dev/nullmkdir -p$remote_pathquit EOF# 上传文件ncftpput-u"$FTP_USER"-p"$FTP_PASS"-z"$FTP_HOST""$remote_path""$file"if[[$?-eq0]];thenecho"成功:$rel_path">>"$LOG_FILE"elseecho"失败:$rel_path">>"$LOG_FILE"fidone# 删除本地不存在的远程文件(可选)echo"同步完成$(date)">>"$LOG_FILE"
3. FTP 监控脚本
#!/bin/bash# 监控 FTP 服务器状态FTP_HOST="ftp.example.com"FTP_USER="username"FTP_PASS="password"CHECK_FILE="health_check.txt"TIMEOUT=30RETRY=3check_ftp(){localattempt=1while[[$attempt-le$RETRY]];doecho"尝试$attempt/$RETRY连接 FTP 服务器..."# 测试连接和基本操作ncftp-u"$FTP_USER"-p"$FTP_PASS"-t"$TIMEOUT""$FTP_HOST"<<EOF2>/dev/nullpwd put /dev/null$CHECK_FILEdelete$CHECK_FILEquit EOFif[[$?-eq0]];thenecho"FTP 服务器正常"return0fisleep5((attempt++))doneecho"FTP 服务器连接失败"return1}# 执行检查ifcheck_ftp;thenecho"状态: 正常"exit0elseecho"状态: 异常"# 发送警报echo"FTP 服务器$FTP_HOST连接失败"|mail-s"FTP 服务器警报"admin@example.comexit1fi

🔍 调试和故障排除

1. 启用调试模式
# 设置调试级别ncftp-d5ftp.example.com# 在交互模式中启用调试setdebug5# 查看调试信息show debug
2. 常见错误解决
# 连接超时# 增加超时时间ncftp-t60ftp.example.com# 被动模式问题# 尝试主动模式ncftp-Aftp.example.com# 防火墙问题# 检查防火墙设置sudoiptables-Lsudofirewall-cmd --list-all# 权限问题# 检查文件权限ls-la/path/to/file# 磁盘空间不足# 检查磁盘空间df-h
3. 查看传输统计
# 在交互模式中查看统计show transfer-status# 查看连接信息show connection# 查看设置show all

📌 最佳实践

  1. 使用书签:对于经常访问的 FTP 服务器,使用书签功能。
  2. 启用断点续传:对于大文件传输,始终使用-c选项。
  3. 使用二进制模式:对于非文本文件,使用二进制模式传输。
  4. 检查传输完整性:传输完成后验证文件大小和 MD5。
  5. 使用临时文件:对于重要文件,使用-T选项。
  6. 定期清理:定期清理旧的备份和临时文件。
  7. 安全考虑:避免在命令行中直接输入密码,使用配置文件或环境变量。

🔄 与其他 FTP 工具对比

特性ncftpftplftpcurl
断点续传支持不支持支持支持
递归传输支持不支持支持支持
书签管理支持不支持支持不支持
命令行补全支持不支持支持不支持
脚本友好中等
协议支持FTPFTPFTP/HTTP/SFTP多协议
学习曲线简单简单中等简单

🎯 快速参考卡

基本连接: ncftp ftp.example.com ncftp -u user -p pass ftp.example.com ncftp -P 2121 ftp.example.com 文件传输: ncftpget -c -R ftp.example.com /remote/ /local/ ncftpput -c -R ftp.example.com /remote/ /local/ 交互命令: open, user, close, quit ls, lls, cd, lcd get, put, mget, mput mkdir, rmdir, delete, rename bookmark, help, ! 书签管理: bookmark add name bookmark delete name bookmark open name

ncftp是一个功能丰富的 FTP 客户端,特别适合需要断点续传、递归传输和书签管理的场景。虽然现在 SFTP 和云存储更常用,但 FTP 在某些传统环境中仍然广泛使用,ncftp是管理 FTP 服务器的优秀工具。

http://www.jsqmd.com/news/593637/

相关文章:

  • OpenMMLab 环境配置实战:从 YOLO 项目报错到模块化开发的避坑指南
  • 为什么论文AI率会到80%以上?这些原因你可能没想到
  • 企业级AI Agent核心支柱解析(非常详细),Skills与Ontology从入门到精通,收藏这一篇就够了!
  • Altium Designer 20实战:5分钟搞定元器件3D模型导入(附免费资源站)
  • 多LLM查询扩展框架实战指南(非常详细),RAG优化新范式从入门到精通,收藏这一篇就够了!
  • 字节面试必问Agent架构对比(非常详细),ReAct核心原理从入门到精通,收藏这一篇就够了!
  • 当英文游戏遇上中文玩家:Degrees of Lewdity本地化之旅
  • 中文分词避坑指南:Jieba与统计分词法的性能对比与优化技巧
  • 抖音视频批量下载神器:一键搞定视频管理的终极解决方案
  • 终极指南:3天快速上手ALOHA开源双臂机器人系统,从零到实战操作
  • Claude Code 里,Subagents 和 Agent Teams 到底怎么选?有什么区别?
  • 兼容FX3U源码的增强版:支持以太网与串口下载,集成MODBUS-TCP协议,实现相对定位与绝...
  • 计算机毕业设计:Python地铁交通数据可视化分析及管理平台 Django框架 数据分析 可视化 大数据 机器学习 深度学习(建议收藏)✅
  • 3分钟搞定B站缓存视频永久保存:m4s转MP4终极指南
  • 高压直流输电在线监测Matlab仿真模型 本设计对故障监测,同时设置了GUI界面
  • Atlas 800I A2实战:5小时搞定DeepSeek V3 W4A8量化全流程(含显存优化技巧)
  • 抖音视频智能管理与效率优化:从批量下载到资源整合的全流程解决方案
  • AI Agent 时代工程范式革命全解(非常详细),Harness Engineering 从入门到精通,收藏这一篇就够了!
  • 2025届毕业生推荐的降重复率方案实际效果
  • SpringBoot+MinIO上传大文件报错?三步搞定Tomcat文件大小限制
  • 读硕士是否有必要?
  • 如何通过arknights-ui实现明日方舟界面定制?解锁个性化游戏体验新方式
  • 解锁Legion笔记本潜能:Lenovo Legion Toolkit全方位优化指南
  • 新手福音:在快马平台通过生成式提示零基础学懂lstm情感分析
  • Kazumi插件扩展完全指南:从安装到高级配置
  • JAVA-实战7 Tlias实例开发(3)员工管理-下半部分
  • 新手必看:知乎话题数据采集从入门到精通(含代理IP配置与数据清洗技巧)
  • 2025届必备的降AI率神器推荐榜单
  • 高光谱成像基础(六)滤波匹配 MF
  • CSS 变量进阶:动态主题与复杂动画