MKD (MaKe Directory) 是 FTP (File Transfer Protocol) 协议中的一个基本命令,用于在 FTP 服务器上创建一个新的目录。

(图片来源网络,侵删)
这个命令在用户交互式 FTP 客户端中通常被映射为 mkdir 命令。
命令格式
MKD 命令的基本格式非常简单:
MKD <sp> <pathname>
MKD: 命令关键字。<sp>: 一个空格,用于分隔命令和参数。<pathname>: 你想要创建的目录的完整路径或相对路径。
工作原理
- 客户端发送命令: 用户在 FTP 客户端输入
MKD new_directory或mkdir new_directory。 - 客户端发送到服务器: FTP 客户端会将这个命令转换成
MKD new_directory格式,并通过控制连接发送给 FTP 服务器。 - 服务器执行操作: FTP 服务器接收到命令后,会验证当前登录用户的权限。
- 如果用户有足够的权限(通常是写入权限),服务器会在指定的路径下创建一个名为
new_directory的新目录。 - 如果路径不存在或用户没有权限,操作会失败。
- 如果用户有足够的权限(通常是写入权限),服务器会在指定的路径下创建一个名为
- 服务器返回响应: 无论操作成功与否,服务器都会通过控制连接返回一个三位的数字代码来告知客户端操作结果。
- 成功: 返回
257响应码。 - 失败: 返回以
5或4开头的响应码,550(权限不足或文件已存在) 或500(语法错误)。
- 成功: 返回
响应码详解
MKD 命令的响应至关重要,它告诉你操作是否成功以及失败的原因。
成功响应: 257
当目录成功创建时,服务器会返回 257 响应码,响应消息通常会包含被创建目录的路径。

(图片来源网络,侵删)
示例:
ftp> mkdir my_project 257 "/home/ftpuser/my_project" Directory created.
这个响应明确告诉你目录 my_project 已经在 /home/ftpuser/ 路径下成功创建。
常见失败响应
| 响应码 | 含义 | 原因分析 |
|---|---|---|
550 |
Requested action not taken. | 最常见的失败原因,通常是: 权限不足: 当前用户对父目录没有写入权限。 文件/目录已存在: 你尝试创建的目录名已经存在。 |
521 |
No permission to create. | 更明确的权限拒绝错误,表明用户没有创建目录的权限。 |
500 |
Syntax error, command unrecognized. | 命令格式错误,例如拼写错误 (mke 而不是 mkd)。 |
501 |
Syntax error in parameters or arguments. | 路径参数有问题,例如路径中包含了非法字符。 |
421 |
Service not available, closing control connection. | FTP 服务本身不可用或即将关闭。 |
实际使用示例
假设你已经成功登录到一个 FTP 服务器。
示例 1: 创建一个相对路径的目录
在当前工作目录下创建一个名为 web_assets 的目录。

(图片来源网络,侵删)
ftp> pwd 257 "/home/ftpuser" is the current directory ftp> mkdir web_assets 257 "/home/ftpuser/web_assets" Directory created. ftp> ls 227 Entering Passive Mode (192,168,1,10,12,34) 150 Here comes the directory listing. drwxr-xr-x 2 ftpuser ftpuser 4096 Jan 20 10:30 web_assets 226 Directory send OK.
示例 2: 创建一个绝对路径的目录
在 /var/www/html/ 下创建一个名为 images 的目录。
ftp> mkdir /var/www/html/images 257 "/var/www/html/images" Directory created.
注意: 创建绝对路径的目录需要用户对根目录 或目标路径有足够的访问权限。
示例 3: 创建多级目录 (一次创建)
标准的 MKD 命令一次只能创建一级目录,如果你尝试创建一个不存在的父目录下的子目录,它会失败。
ftp> mkdir projects/frontend 550 Failed to create directory "/home/ftpuser/projects/frontend". No such file or directory.
要创建多级目录,你需要像在 Linux Shell 中一样,一级一级地创建,或者使用支持递归创建的客户端命令(如 mkdir -p)。
示例 4: 创建多级目录 (分步创建)
ftp> mkdir projects 257 "/home/ftpuser/projects" Directory created. ftp> mkdir projects/frontend 257 "/home/ftpuser/projects/frontend" Directory created.
与 MKD 相关的命令
CWD(Change Working Directory): 切换当前工作目录,创建目录后,通常会使用CWD进入新目录。RMD(ReMove Directory): 删除一个空的目录。DELE(DELEte): 删除一个文件。PASV(PASsiVe mode): 在创建目录后,如果需要上传文件到新目录,通常需要进入被动模式。STOR(STORe): 上传文件到服务器。
重要注意事项
- 权限: 你只能在你有写入权限的目录下创建新目录,如果你是匿名用户 (
anonymous),通常只能在服务器指定的upload目录或主目录下操作。 - 路径分隔符: 在大多数现代 FTP 服务器上,路径分隔符是正斜杠 ,即使服务器运行在 Windows 系统上(它原生使用反斜杠
\),使用 是最安全、最通用的做法。 - 单级限制:
MKD本身不支持递归创建目录,如果需要创建深层级目录,需要先创建父目录。 - 安全性: 确保你创建的目录名不包含恶意字符或路径遍历序列(如 ),除非你明确知道自己在做什么。
- 现代替代方案: 对于自动化脚本,现代的 SFTP (基于 SSH 的文件传输协议) 通常比传统的 FTP 更安全、更强大,SFTP 的
mkdir命令通常支持-p选项来递归创建目录,并且整个连接过程都是加密的。
希望这份详细的解释能帮助你完全理解 FTP MKD 命令!
