FTP命令的核心格式是“ftp 主机地址”,回车后按提示输入用户名和密码,即可进入交互式命令行环境,掌握几个常用子命令,就能完成文件上传、下载、目录切换等大部分日常操作。
FTP命令格式的基础构成与核心语法
想用好FTP命令,先把它的骨架搭清楚。FTP命令本身不复杂,格式就三部分:命令字 + 空格 + 参数,命令字告诉服务器“你要干什么”,参数指明“对谁干”,以最常见的连接命令为例,格式为:
ftp [选项] [主机地址] [端口号]
- 主机地址可以是域名(如
ftp.example.com)或IP地址(如168.1.100) - 端口号不写时默认使用21端口
- 选项是可选的,常见的有
-i(关闭交互提示)、-n(不自动登录)、-v(显示详细信息)
连接成功后,你就进入了一个交互式环境,这时提示符变成 ftp>,后续所有操作都在这条提示符后面输入。这个环境里没有“回车不执行”的说法,每敲一条命令,马上就会得到服务器的响应。
常用选项参数的适用场景
不同选项对应不同需求。ftp -i 192.168.1.100 适合批量上传下载场景,因为 -i 会关闭逐文件确认提示,文件多的时候不用一个个按“y”确认,而 ftp -n 192.168.1.100 则适合需要手动控制登录流程的场景,比如用户名有特殊字符或者需要先输入open命令再登录的情况。
常用FTP命令分类详解
进入交互环境后,命令按功能可以分出几个阵营。每个阵营的核心操作不超过五条,记住这些就够应付绝大多数工作。
登录与连接管理命令
连接服务器是FTP的第一步,也是出错率最高的一步,核心命令有:
open <主机地址>:在已经启动ftp程序但未连接的状态下,用它来发起连接user <用户名>:重新输入用户名,常用于切换账号close:断开当前连接但不退出ftp程序bye或quit:断开连接并退出ftp程序- 临时回到本地shell执行命令,输完
exit返回ftp环境
执行 close 和 bye 的区别很多新手搞不清:close 只是断线,你还在ftp程序里,可以 open 连下一台服务器;bye 是彻底退出程序回到本地命令行。
目录操作命令
在服务器上找文件、切目录,靠的是这些命令,注意FTP里的路径分隔符统一用 ,这和Windows本地的 不一样。
pwd:显示当前在服务器上的路径cd <目录名>:切换服务器上的工作目录lcd <本地路径>:切换本地的工作目录这条极易被忽略,但下载文件存到哪儿全靠它dir或:列出当前目录的文件和子目录,ls
dir显示详细信息(大小、日期、权限),ls只显示文件名mkdir <目录名>:在服务器上新建目录rmdir <目录名>:删除服务器上的空目录
有个实操细节值得留意:下载文件前先 pwd 和 lcd 确认各自路径,很多文件“下载后找不到”就是因为没注意lcd指定了哪个本地目录。
文件传输命令
这是FTP的核心存在价值,上传下载的命令总共四个,但变体规则值得花30秒记住:
get <服务器文件名>:下载单个文件到本地当前目录put <本地文件名>:上传单个文件到服务器当前目录mget <通配符>:批量下载文件,mget .jpg会把所有jpg格式文件拉下来mput <通配符>:批量上传文件prompt:切换批量操作时是否逐文件确认。批量前先敲prompt关掉确认,能省掉大量重复按y的操作
下载时的文件名冲突也不用慌,FTP默认会询问是否覆盖,如果想保持原名另存,可以下载后本地 rename,或者下载前用 lcd 切到另一个本地目录。
传输模式与状态命令
文件传着传着发现打不开、内容乱码,多半是传输模式没设对,两条命令能解决:
binary或bin:切到二进制模式,传压缩包、图片、程序、视频必须用这个模式ascii:切到文本模式,传纯文本文件时用
怎么判断该用哪个?行业共识认为:看到文件后缀是 .zip .rar .exe .jpg .png .tar .gz,一律先敲 binary,只有后缀是 .txt .html .xml 这类纯文本时才用 ascii,传错模式最典型的症状是:文件大小对得上,但解压失败或图片打不开。
hash 命令也值得养成习惯,它会让你在传输时看到 进度符,大文件传输时心里有个数,不至于干等。
FTP命令行上传下载文件的具体操作步骤
纸上谈兵容易让人云里雾里,走一遍完整流程就通了,以Windows命令行环境为例,目标是把本地的 D:datareport.pdf 上传到服务器 /upload 目录:
- 打开命令提示符(Win+R 输
cmd回车) - 输入
ftp 192.168.1.100回车 - 提示
Name (192.168.1.100:user)时输入用户名回车 - 提示
Password时输入密码(输入时不显示任何字符,这是正常的,别以为键盘坏了) - 看到
ftp>提示符后,先敲binary回车切换到二进制模式 - 敲
cd /upload回车切换到服务器目标目录 - 敲
lcd D:data回车把本地目录切到文件所在文件夹 - 敲
put report.pdf回车,看到传输进度完成后即上传成功 - 敲
bye回车退出
下载的流程几乎一致,只是第8步换成 get report.pdf,文件会存到你最后一次 lcd 指定的本地目录里。
Windows和Linux的差异点
Linux环境下的操作整体一致,但有几点明显区别:
- 启动命令相同(都是
ftp),但Linux下经常需要先yum install ftp或apt install ftp安装客户端组件 - Linux默认没有lcd的Tab补全功能,路径建议先复制好再粘贴
- Linux下文件名区分大小写,
REPORT.PDF和report.pdf是两个文件 - Windows的
dir输出格式是Windows风格列表,Linux的dir输出是Unix风格(带权限位、属主、属组)
不少用户在Windows和Linux之间切换操作时容易栽跟头,主要就是大小写和路径分隔符这两个坑。
FTP命令常见报错及排查方案
命令敲下去,回了一条错误信息,别慌,大部分报错看一眼就能知道问题出在哪。
| 报错信息 | 含义 | 排查方向 |
|---|---|---|
Connection refused |
连接被拒绝 | 检查IP是否正确、21端口是否开放、服务器防火墙是否放行 |
530 Login incorrect |
用户名或密码错误 | 重新输入,注意大小写和键盘布局 |
421 Too many connections |
连接数超限 | 稍等重试,或联系管理员调整限制 |
425 Can't open data connection |
数据连接建立失败 | 多半是FTP被动/主动模式不匹配,尝试切换被动模式 |
550 Permission denied |
权限不足 | 当前账号没有该目录的读写权限 |
Connection timed out |
连接超时 | 检查网络连通性、服务器是否在线、跨网段访问是否有防火墙拦截 |
被动模式主动模式连不上的解决办法
FTP有个特殊地方:控制连接和数据连接是分开的,主动模式下服务器主动连回客户端端口,被动模式下由客户端连接服务器的高位端口。
很多用户遇到“登录成功但列目录卡死”的情况,基本都是被动模式没开或者路由器/防火墙阻断了数据端口,处理办法:
- 在ftp提示符下输入
passive或pasy切换为被动模式 - 如果命令行下仍无法解决,改用
curl工具或图形化FTP客户端做对比排查 - 检查服务器端vsftpd或Serv-U配置中
pasv_min_port和pasv_max_port对应的端口段是否被防火墙放行
命令行FTP的安全问题与现代替代
老生常谈但必须强调:
FTP协议本身是明文传输的,用户名、密码、文件内容在网络里等于裸奔,用抓包工具能直接看到你输的密码,据工信部数据,近年来针对FTP弱口令的暴力破解攻击在企业网络中依然占据较大比例。
在涉及敏感数据的场景下,建议优先考虑以下替代方案:
- SFTP(SSH File Transfer Protocol):走SSH加密通道,命令格式和FTP高度相似,学习成本低
- SCP(Secure Copy):单文件传输场景下比SFTP更简单,
scp 本地文件 用户@主机:路径一条命令搞定 - FTPS(FTP over SSL/TLS):给传统FTP套上加密外壳,适合必须保留FTP交互习惯的存量项目
如果条件允许,直接选SFTP是多数情况下的最优解。Linux下SFTP客户端默认自带,不需要额外安装,这一点比传统FTP还省事。
FTP命令的扩展实践技巧
熟练基础操作后,几个组合用法能进一步提质增效。
用本地脚本批量操作
Windows下可以把命令写进文本文件,然后执行 ftp -s:脚本文件.txt 主机地址的写法很简单,一行一条命令:
open 192.168.1.100
user admin 密码
binary
cd /backup
lcd D:backup
mput .tar.gz
bye
Linux下同理,可以用 here document 或结合 bash 脚本实现定时备份,这类批处理思路在运维场景中非常实用,能避免大量重复手工操作。
从命令格式反推服务端配置问题
有时候FTP命令本身没敲错,但行为异常。put 之后提示传输成功,但服务器上文件名乱码,这种情况大概率是服务器端vsftpd的 charset 配置没设成UTF-8,跟本地命令无关,排查思路从“命令错误”转向“服务端参数不匹配”,效率会高很多。
常见问题Q&A
FTP命令连接服务器时提示“连接超时”通常是什么原因?
常见原因有三个:目标服务器防火墙未放行21端口、本地网络与服务器之间存在ACL拦截、服务器负载过高或已宕机,建议先用 ping 验证网络连通性,再用 telnet 主机IP 21 检查端口状态,如果telnet能通但ftp命令超时,检查是否存在双网卡或代理设置干扰。
ftp命令和sftp命令有什么功能上的区别?
两者都支持文件上传下载和目录浏览,但 FTP使用明文传输,SFTP基于SSH加密传输,SFTP默认走22端口,无需额外安装服务端组件即可与SSH服务联动,SFTP在断点续传、远程文件权限管理方面比FTP命令行工具更可靠,日常管理服务器推荐直接使用SFTP命令替代传统FTP命令。
Windows自带的FTP命令支持断点续传吗?
不支持,Windows自带ftp命令行工具不具备断点续传和并行传输功能,下载大文件中途断线后只能重新开始,需要断点续传时,可换用支持 reget(重置断点续传)的客户端,或者改用SFTP命令配合 rsync 工具做增量同步。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/580052.html




