FTP 命令使用教程
FTP (File Transfer Protocol,文件传输协议) 是一种用于在网络上客户端和服务器之间进行文件传输的标准协议,尽管现在有更安全、更方便的替代方案(如 SFTP),但由于其简单和广泛的支持,FTP 仍然在一些特定场景下被使用。

什么是 FTP?它的工作原理
FTP 是一种客户端-服务器模型,你需要一个 FTP 服务器来存储文件,以及一个 FTP 客户端(比如你的电脑上运行的命令行工具)来连接并操作这些文件。
工作模式:
- 控制连接 (Control Connection):客户端和服务器之间建立一个持久连接,用于发送命令(如
ls,get)和接收服务器状态。 - 数据连接 (Data Connection):当实际传输文件(如
get或put)时,客户端和服务器会建立一个临时的数据连接来传输文件内容,传输完成后,该连接关闭。
如何连接到 FTP 服务器?
在命令行中,使用 ftp 命令,后跟服务器的地址或 IP。
ftp ftp.example.com
连接后,服务器通常会提示你输入用户名和密码。

Name (ftp.example.com:your_username): your_username 331 Password required for your_username. Password: (输入你的密码,输入时不会显示任何字符)
如果连接成功,你会看到类似 230 User logged in. 的欢迎信息,并进入 ftp> 命令提示符。
核心 FTP 命令详解
以下是最常用和最重要的 FTP 命令,分为几类以便记忆。
连接与认证命令
| 命令 | 描述 | 示例 |
|---|---|---|
open <host> [port] |
打开到指定主机和端口的连接。 | open ftp.server.com 21 |
close |
关闭当前连接,但保持 FTP 程序运行。 | close |
bye 或 quit |
退出 FTP 程序,并关闭所有连接。 | bye |
user <username> |
在已连接但未登录时,切换用户或重新登录。 | user admin |
pass <password> |
提供密码。 | pass mysecretpassword |
目录导航命令
| 命令 | 描述 | 示例 |
|---|---|---|
pwd |
Print Working Directory,显示当前所在的服务器目录。 | pwd (输出: /home/user) |
cd <path> |
Change Directory,切换到服务器上的指定目录。 | cd /public_html/images |
ls |
LiSt,列出当前目录下的文件和子目录。 | ls |
dir |
DIRectory,比 ls 更详细的列表,显示文件权限、大小、日期等。 |
dir |
| 执行本地 shell 命令。 | !ls (列出本地电脑当前目录的文件) |
文件传输命令
这是 FTP 的核心功能,在传输前,最好使用 ls 或 dir 查看文件名是否正确。
| 命令 | 描述 | 示例 |
|---|---|---|
get <remote_file> [local_file] |
GET,从服务器下载一个文件到本地,可以指定本地文件名。 | get myfile.txt (下载为 myfile.txt)get data.zip backup.zip (下载为 backup.zip) |
mget <files...> |
Multiple GET,从服务器下载多个文件,可以使用通配符 。 | mget *.jpg (下载所有 jpg 文件) |
put <local_file> [remote_file] |
PUT,从本地上传一个文件到服务器,可以指定远程文件名。 | put report.doc (上传为 report.doc)put photo.jpg new_photo.jpg (上传为 new_photo.jpg) |
mput <files...> |
Multiple PUT,从本地上传多个文件,可以使用通配符 。 | mput *.log (上传所有 log 文件) |
ascii |
设置传输模式为 ASCII(文本模式),适用于 .txt, .html, .css, .js 等文件。 |
ascii |
binary |
非常重要! 设置传输模式为二进制(Binary),适用于图片、视频、压缩包、程序等所有非文本文件。如果不确定,请始终使用 binary。 |
binary |
文件与目录管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
mkdir <dirname> |
MaKe DIRectory,在服务器上创建一个新目录。 | mkdir new_folder |
rmdir <dirname> |
ReMove DIRectory,删除服务器上的一个空目录。 | rmdir empty_folder |
delete <filename> |
DELETE,删除服务器上的一个文件。 | delete old_file.txt |
rename <old_name> <new_name> |
RENAME,重命名服务器上的文件或目录。 | rename old_name.txt new_name.txt |
!mkdir <dirname> |
在本地电脑上创建一个目录。 | !mkdir local_projects |
实战演练:一个完整的文件传输流程
假设我们要从 ftp.files.com 下载一个网站文件,并上传一个本地报告。
连接服务器
ftp ftp.files.com Name (ftp.files.com:john): john Password: ********** 230 User logged in. ftp>
查看服务器目录
ftp> pwd 257 "/home/john" is current directory. ftp> dir 2025-10-27 10:00AM 1234 index.html 2025-10-27 10:01AM 5678 style.css 2025-10-27 10:02AM 9999 images/ ftp>
切换到目标目录
ftp> cd images 250 Directory changed to /home/john/images ftp> pwd 257 "/home/john/images" is current directory. ftp>
下载图片文件
ftp> binary 200 Type set to I. ftp> get logo.png local: logo.png remote: logo.png 226 Transfer complete. 12345 bytes received in 0.05 secs (245.5 Kbytes/sec) ftp>
切换回上级目录
ftp> cd .. 250 Directory changed to /home/john ftp>
上传本地报告文件 在本地 shell 中创建一个文件(模拟):
# 在另一个终端窗口 echo "This is my report." > report.txt
然后回到 FTP 客户端,上传文件:
ftp> put report.txt local: report.txt remote: report.txt 226 Transfer complete. 28 bytes sent in 0.01 secs (2.8 Kbytes/sec) ftp>
查看上传后的结果
ftp> dir 2025-10-27 10:00AM 1234 index.html 2025-10-27 10:01AM 5678 style.css 2025-10-27 10:02AM 9999 images/ 2025-10-27 11:00AM 28 report.txt <-- 新文件 ftp>
退出 FTP
ftp> bye 221 Goodbye.
重要注意事项与安全警告
- 安全性极低:FTP 是明文传输协议,你的用户名、密码和传输的所有文件内容都以未加密的形式在网络中传输,极易被窃听。强烈不建议在公共网络或不信任的环境下使用 FTP。
- 更安全的替代方案:
- SFTP (SSH File Transfer Protocol):基于 SSH 协议,所有数据都是加密的,是目前最推荐的文件传输方式,它使用
sftp命令,语法与 FTP 类似,但更安全。 - SCP (Secure Copy):同样是基于 SSH,用于在主机间安全地复制文件。
- WebDAV:基于 HTTP 的协议,可以通过浏览器或专用客户端访问,通常也支持 HTTPS 加密。
- SFTP (SSH File Transfer Protocol):基于 SSH 协议,所有数据都是加密的,是目前最推荐的文件传输方式,它使用
- 被动模式 vs 主动模式:
- 主动模式 (Active):服务器主动连接客户端的端口,如果客户端有防火墙,连接可能会失败。
- 被动模式 (Passive):客户端和服务器协商,由客户端连接服务器的随机端口,这是目前更常用的模式,能更好地适应有防火墙的环境。
- 在 FTP 客户端中,可以使用
passive命令开启被动模式,active命令开启主动模式,现代 FTP 客户端通常默认使用被动模式。
常见问题与解决方法
- 问题:
Connection timed out或No route to host。 解决:检查服务器地址是否正确,服务器是否在线,网络是否通畅,如果是公司内网,可能防火墙阻止了连接。 - 问题:
530 Login incorrect。 解决:检查用户名和密码是否输入正确,区分大小写。 - 问题:
550 Permission denied。 解决:你尝试访问的文件或目录没有权限,请检查你的用户权限,或者联系服务器管理员。 - 问题:文件传输后损坏或大小不对。
解决:几乎总是因为传输模式设置错误! 在传输非文本文件(图片、压缩包等)之前,务必先执行
binary命令。
FTP 是一个强大但古老且不安全的工具,掌握它的命令对于维护旧系统或在特定环境下工作仍然有用,但在任何可能的情况下,请优先选择更现代、更安全的 SFTP,希望这份教程能帮助你快速上手 FTP 的基本操作。
