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

张开发
2026/4/5 21:25:17 15 分钟阅读

分享文章

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.com2. 下载文件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.txt4. 列出文件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# 创建批处理文件catftp_batch.txtEOF 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-copen ftp.example.com; user username password; ls; quit 交互式命令进入 ncftp 交互模式后可以使用以下命令连接和认证命令说明open 主机名连接到 FTP 服务器。user 用户名 [密码]登录到 FTP 服务器。auth重新认证。close关闭当前连接。quit或exit退出 ncftp。目录操作命令说明pwd显示远程当前目录。lpwd显示本地当前目录。cd 目录切换远程目录。lcd 目录切换本地目录。mkdir 目录创建远程目录。rmdir 目录删除远程目录。chmod 权限 文件更改远程文件权限。文件操作命令说明ls [选项] [目录]列出远程文件。lls [选项] [目录]列出本地文件。get 远程文件 [本地文件]下载文件。put 本地文件 [远程文件]上传文件。mget 模式使用通配符下载多个文件。mput 模式使用通配符上传多个文件。rename 旧名 新名重命名远程文件。delete 文件删除远程文件。rm 文件删除远程文件同 delete。mv 源 目标移动远程文件。cp 源 目标复制远程文件某些服务器支持。传输设置命令说明ascii使用 ASCII 传输模式。binary或image使用二进制传输模式。mode 模式设置传输模式S流B块C压缩。passive切换被动模式。active切换主动模式。type 类型设置传输类型AASCIII二进制。书签管理命令说明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:passwordftp.example.com2. 使用书签# 连接到书签ncftp myserver# 在交互模式中使用书签openmyserver3. 管理书签# 列出所有书签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/目录。主要配置文件~/.ncftp/prefs- 用户首选项~/.ncftp/bookmarks- 书签文件~/.ncftp/trace- 跟踪日志~/.ncftp/firewall- 防火墙设置示例配置文件# ~/.ncftp/prefs 示例allow-clobberno confirm-closeyeslogsize0passive-modeyes progress-meter2recursive-listno save-passwordsno show-statusyes xfer-progressyes️ 实用脚本1. 自动备份脚本#!/bin/bash# 自动备份到 FTP 服务器FTP_HOSTftp.example.comFTP_USERusernameFTP_PASSpasswordFTP_DIR/backups/LOCAL_DIR/backup/BACKUP_FILEbackup_$(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_FILEif[[$?-eq0]];thenecho备份成功:$BACKUP_FILE# 清理旧备份保留最近7天find$LOCAL_DIR-namebackup_*.tar.gz-mtime7-delete# 清理远程旧备份echo清理远程旧备份...ncftpls-l-u$FTP_USER-p$FTP_PASS$FTP_HOST$FTP_DIR|\grepbackup_|sort-r|tail-n8|awk{print $9}|\whileread-rold_file;doecho删除:$old_filencftp-u$FTP_USER-p$FTP_PASS$FTP_HOSTEOF cd$FTP_DIRdelete$old_filequit EOFdoneelseecho备份失败exit1fi2. 同步目录脚本#!/bin/bash# 同步本地目录到 FTP 服务器FTP_HOSTftp.example.comFTP_USERusernameFTP_PASSpasswordREMOTE_DIR/website/LOCAL_DIR/var/www/html/LOG_FILE/var/log/ftp_sync.logecho 开始同步$(date)$LOG_FILE# 上传新增和修改的文件find$LOCAL_DIR-typef-newer$LOG_FILE2/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_HOSTEOF2/dev/nullmkdir -p$remote_pathquit EOF# 上传文件ncftpput-u$FTP_USER-p$FTP_PASS-z$FTP_HOST$remote_path$fileif[[$?-eq0]];thenecho成功:$rel_path$LOG_FILEelseecho失败:$rel_path$LOG_FILEfidone# 删除本地不存在的远程文件可选echo同步完成$(date)$LOG_FILE3. FTP 监控脚本#!/bin/bash# 监控 FTP 服务器状态FTP_HOSTftp.example.comFTP_USERusernameFTP_PASSpasswordCHECK_FILEhealth_check.txtTIMEOUT30RETRY3check_ftp(){localattempt1while[[$attempt-le$RETRY]];doecho尝试$attempt/$RETRY连接 FTP 服务器...# 测试连接和基本操作ncftp-u$FTP_USER-p$FTP_PASS-t$TIMEOUT$FTP_HOSTEOF2/dev/nullpwd put /dev/null$CHECK_FILEdelete$CHECK_FILEquit EOFif[[$?-eq0]];thenechoFTP 服务器正常return0fisleep5((attempt))doneechoFTP 服务器连接失败return1}# 执行检查ifcheck_ftp;thenecho状态: 正常exit0elseecho状态: 异常# 发送警报echoFTP 服务器$FTP_HOST连接失败|mail-sFTP 服务器警报adminexample.comexit1fi 调试和故障排除1. 启用调试模式# 设置调试级别ncftp-d5ftp.example.com# 在交互模式中启用调试setdebug5# 查看调试信息show debug2. 常见错误解决# 连接超时# 增加超时时间ncftp-t60ftp.example.com# 被动模式问题# 尝试主动模式ncftp-Aftp.example.com# 防火墙问题# 检查防火墙设置sudoiptables-Lsudofirewall-cmd --list-all# 权限问题# 检查文件权限ls-la/path/to/file# 磁盘空间不足# 检查磁盘空间df-h3. 查看传输统计# 在交互模式中查看统计show transfer-status# 查看连接信息show connection# 查看设置show all 最佳实践使用书签对于经常访问的 FTP 服务器使用书签功能。启用断点续传对于大文件传输始终使用-c选项。使用二进制模式对于非文本文件使用二进制模式传输。检查传输完整性传输完成后验证文件大小和 MD5。使用临时文件对于重要文件使用-T选项。定期清理定期清理旧的备份和临时文件。安全考虑避免在命令行中直接输入密码使用配置文件或环境变量。 与其他 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 namencftp是一个功能丰富的 FTP 客户端特别适合需要断点续传、递归传输和书签管理的场景。虽然现在 SFTP 和云存储更常用但 FTP 在某些传统环境中仍然广泛使用ncftp是管理 FTP 服务器的优秀工具。

更多文章