通过FTP命令行(cmd)从服务器获取文件,核心是使用“get”命令,配合“open”连接服务器,整个过程无需图形界面,适合批量操作和自动化脚本。
许多运维人员在实际工作中,仍会优先选择FTP命令行来处理服务器文件,它轻量、可控,且能直接集成到脚本中,尤其适合远程桌面或跳板机这类无图形化环境,以下内容围绕FTP命令行的实际使用展开,包含从连接到下载的完整演示,以及常见问题的解决思路。参考2
如何用FTP命令行下载服务器文件?
这是最基础也最常用的场景,FTP命令行(Windows自带)无需安装额外软件,直接在命令提示符中运行,你需要知道服务器的IP地址、端口(默认21)、用户名和密码。
FTP命令连接服务器的完整步骤
- 打开命令提示符:按Win+R,输入cmd,回车。
- 启动FTP客户端:输入
ftp,回车,进入ftp>提示符。 - 连接到服务器:输入
open 服务器地址,例如open 192.168.1.100,如果端口非默认,需在地址后加空格和端口,如open 192.168.1.100 2121。 - 输入登录凭据:提示输入用户名,输入后回车;再输入密码(密码不显示)。
- 设置传输模式:一般建议先输入
bin切换为二进制模式,确保图片、压缩包等文件完整传输,文本文件可保持ASCII模式。 - 使用get命令下载文件:输入
get 文件名,例如get index.html,文件会下载到当前本地目录(即运行cmd时的路径)。 - 退出连接:下载完成后,输入
bye或quit断开连接。
整个过程清晰简单,但需要留意几个细节,如果服务器要求被动模式,可以在登录后输入passive开启;如果连接失败,多数情况下是防火墙或端口问题,可以先通过telnet IP 21测试端口是否可达,使用ftp -n可以跳过自动登录,手动控制每一步。
FTP命令行批量下载文件技巧
当需要下载多个文件时,一条条get效率太低,此时使用mget命令配合通配符。
mget .txt:下载所有后缀为txt的文件。mget report:下载所有以report开头的文件。
但执行mget时,FTP会逐个询问你是否确认下载,每个文件都需输入y,可以先用prompt命令关闭交互模式,之后mget就会自动下载所有匹配文件,不再逐一确认。
示例:
ftp> prompt
Interactive mode Off.
ftp> mget .zip
这样就能一次性下载所有zip文件,适合批量处理,不过Windows自带FTP不支持递归下载目录,如果需要下载整个目录,可以先用dir查看列表,再通过脚本逐个生成get命令,或者使用第三方工具如lftp。参考2
Windows系统FTP命令获取文件实战
在Windows环境下使用FTP命令,与Linux系统大致相同,但有些差异需要注意,Windows自带FTP客户端功能较基础,且默认不支持TLS加密,不过对于内网传输,完全够用。
常用操作路径
- 切换本地目录:在ftp>中输入
lcd 本地路径,可以改变下载文件的保存位置,例如lcd D:downloads,之后get文件都会存到该目录。 - 查看远程目录:使用
dir或ls列出服务器文件列表。 - 查看本地目录:使用
!dir(Windows)查看当前本地路径内容。 - 删除文件:
delete 文件名删除远程文件,mdelete 通配符批量删除(谨慎使用)。
处理中文文件名和路径
如果服务器文件包含中文,Windows FTP命令行有时会出现乱码,建议远程服务器使用英文命名,或通过FileZilla等支持UTF-8的客户端替代,如果要强制使用CMD,可以尝试修改注册表开启UTF-8支持,但效果不稳定,多数情况下,使用lcd指定全英文路径,先下载到临时目录再操作。
实际案例:从Linux服务器下载日志文件
假设你有一台CentOS服务器,IP为10.0.0.5,需要下载/var/log/下的所有.log文件到本地C:logs,操作流程:
- 打开CMD,输入
ftp。 open 10.0.0.5,输入用户名密码。lcd C:logs切换本地目录。cd /var/log切换远程目录。bin设置二进制传输(日志文件可能有中文或特殊字符)。prompt关闭交互确认。mget .log批量下载。bye退出。
如果服务器在云端,且网络环境复杂,可能需要先开启被动模式(passive),并在服务器防火墙放行被动端口范围,行业共识认为,在无图形界面的运维场景中,FTP命令行仍然是获取文件的高效方式。
进阶:FTP命令行自动化脚本
对于重复性下载任务,可以将FTP命令写入文本文件,然后用-s参数调用,实现完全自动化。
创建脚本文件
新建一个文本文件,例如down.txt如下:
open 192.168.1.100
user admin password
lcd D:backup
cd /data
bin
prompt
mget .log
bye
注意:密码明文写入存在安全风险,生产环境建议使用更安全的认证方式,如专用账户或IP白名单。
执行脚本
在CMD中执行:
ftp -s:down.txt
FTP会按顺序执行脚本中的每条命令,无需人工干预,结合Windows任务计划程序,可以定时从服务器拉取日志文件。
结合批处理更灵活
将上述命令放入.bat文件,加入变量,可以写成通用下载工具。
@echo off
set server=192.168.1.100
set user=admin
set pass=password
set local=D:data
lcd %local%
echo open %server% > ftpcmd.txt
echo %user%>> ftpcmd.txt
echo %pass%>> ftpcmd.txt
echo bin>> ftpcmd.txt
echo prompt>> ftpcmd.txt
echo mget .txt>> ftpcmd.txt
echo bye>> ftpcmd.txt
ftp -s:ftpcmd.txt
del ftpcmd.txt
这个批处理动态生成FTP脚本,执行后删除,适合临时任务,如果需要更复杂的逻辑,比如只下载当天文件,可以用dir输出列表后通过find筛选,再生成get命令。参考2
FTP命令行与SFTP、FTP客户端的对比
选择FTP命令行还是图形客户端,取决于具体场景,以下从几个维度对比:
| 特性 | FTP命令行(Windows) | 图形客户端(FileZilla) | SFTP命令行(OpenSSH) |
|---|---|---|---|
| 安装要求 | 系统自带,零安装 | 需下载安装包 | Windows 10及以上自带,低版本需安装 |
| 加密传输 | 明文,无加密 | 支持FTPS(SSL/TLS) | 基于SSH,加密传输 |
| 批量操作 | 支持脚本自动化 | 支持队列,但需手动拖拽 | 支持脚本,且支持通配符 |
| 断点续传 | 不支持 | 支持 | 支持(部分客户端) |
| 用户界面 | 命令行 | 图形界面,拖拽操作 | 命令行 |
| 适用场景 | 内网、跳板机、自动化脚本 | 日常桌面操作 | 公网传输、安全要求高 |
通过对比可以看出,FTP命令行在自动化和零安装场景下优势明显,但缺少加密和断点续传,对于公网传输,建议使用SFTP,其命令语法与FTP类似,但更安全,在Windows中,可以使用sftp user@host登录,然后使用get、mget等命令,体验几乎一致。
FTP命令行获取文件常见问题解答
问题1:FTP命令行下载文件时提示“连接超时”怎么办?
先检查服务器IP和端口是否正确,以及防火墙是否开放了FTP端口(默认21),如果服务器在外部,可能需要输入被动模式(passive)后重试,有些FTP服务器限制IP范围,需确认客户端IP在白名单中,如果使用open后长时间无响应,可以尝试ftp -n跳过自动登录,再手动输入user和pass。
问题2:如何将FTP命令行下载的文件保存到指定目录?
在连接前,先使用lcd命令切换本地目录,例如lcd C:UsersadminDownloads,之后所有get/mget文件都会保存到该目录,也可以在打开FTP时指定路径,但更推荐使用lcd控制,注意路径中不要包含空格,否则需用引号括起来。
问题3:FTP命令行支持断点续传吗?如何实现?
Windows自带的FTP命令行不支持断点续传,如果下载中断,只能重新下载整个文件,需要断点续传功能,应使用支持reget命令的客户端,如FileZilla或Linux下的lftp,在Windows中,可以借助第三方命令行工具如curl或wget来实现,它们支持断点续传且同样可集成到脚本中。
掌握FTP命令行,能让你在无图形界面的环境中快速获取服务器文件,是运维人员的一项基础技能,无论是日常维护还是自动化部署,它都能派上用场。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/522915.html



