FTP(File Transfer Protocol,文件传输协议)是一种用于在客户端和服务器之间传输文件的标准网络协议,广泛应用于文件上传、下载、管理等场景,FTP命令是用户通过FTP客户端与服务器交互时使用的指令集,每条命令都有特定的功能和语法,掌握这些命令对于高效管理文件至关重要,以下是FTP命令的详细解释及其分类说明。

FTP命令通常以文本形式输入,命令不区分大小写(部分服务器可能区分),但参数(如文件名、路径)可能区分大小写,命令格式为“命令+参数”,get filename.txt”表示下载文件,根据功能,FTP命令可分为连接类、传输类、目录操作类、文件管理类、系统信息类及其他类,以下逐一说明。
连接类命令
连接类命令用于建立和管理与FTP服务器的连接,是使用FTP的基础。
- open [hostname] [port]:用于连接到指定的FTP服务器,hostname为服务器地址或IP,port为端口号(默认21)。“open ftp.example.com 21”连接到服务器。
- close:关闭当前与服务器的连接,但不退出FTP客户端。
- disconnect:与close功能类似,强制断开连接。
- bye/quit:退出FTP客户端并关闭连接,是结束会话的常用命令。
- user [username]:在连接后输入用户名进行登录,若未指定用户名,可能使用匿名登录(anonymous)。
- pass [password]:配合user命令,输入用户密码完成登录。
- account [acct]:提供账户补充信息(如安全账号),较少使用。
传输类命令
传输类命令负责文件的上传和下载,是FTP的核心功能。
- get/recv [remote-file] [local-file]:从服务器下载远程文件到本地,可指定本地文件名。“get test.txt local.txt”下载test.txt并重命名为local.txt。
- put/send [local-file] [remote-file]:上传本地文件到服务器,可指定远程文件名。“put local.txt test.txt”上传并重命名。
- mget [remote-files]:批量下载多个远程文件,支持通配符(如“*.txt”下载所有txt文件)。
- mput [local-files]:批量上传多个本地文件,同样支持通配符。
- reget [remote-file] [local-file]:断点续传下载,从本地文件的断点位置继续下载,适用于大文件传输中断的情况。
- reput [local-file] [remote-file]:断点续传上传,功能与reget类似,用于上传中断后的续传。
- ascii:设置传输模式为ASCII(文本模式),适用于传输文本文件(如.txt、.csv),会自动转换换行符。
- binary:设置传输模式为二进制(图像、视频、压缩文件等),传输过程中不进行任何数据转换,是默认推荐模式。
- hash:开启传输进度显示,用“#”符号表示已传输的数据块,方便监控传输状态。
目录操作类命令
目录操作命令用于浏览和管理服务器上的文件目录结构。

- ls [remote-dir] [local-file]:列出远程目录下的文件和子目录,结果可保存到本地文件。“ls dir1 filelist.txt”将dir1目录内容保存到filelist.txt。
- dir [remote-dir] [local-file]:与ls功能类似,但提供更详细的文件信息(如权限、大小、日期等)。
- cd [remote-dir]:切换远程目录,cd /var/www”切换到/var/www目录。
- pwd:显示当前远程工作目录的完整路径。
- mkdir [remote-dir]:在服务器上创建新目录,mkdir newdir”创建newdir目录。
- rmdir [remote-dir]:删除远程空目录,若目录非空需先删除内部文件。
- lcd [local-dir]:切换本地客户端的当前目录,lcd /downloads”切换本地到downloads目录。
- ! [command]:在FTP客户端中执行本地系统命令,! dir”查看本地目录内容。
文件管理类命令
文件管理命令用于对服务器上的文件进行重命名、删除等操作。
- rename [from] [to]:重命名远程文件或目录,rename old.txt new.txt”将old.txt重命名为new.txt。
- delete [remote-file]:删除远程文件,delete temp.txt”删除temp.txt。
- mdelete [remote-files]:批量删除多个远程文件,支持通配符,mdelete *.tmp”删除所有.tmp文件。
- chmod [mode] [remote-file]:修改远程文件的权限(仅适用于类Unix系统),chmod 755 script.sh”设置script.sh为可执行权限。
系统信息类命令
系统信息命令用于获取服务器状态和帮助信息。
- 执行本地系统命令,如前所述。
- help [command]:显示指定命令的帮助信息,若不带参数则显示所有可用命令。
- status:显示当前FTP连接的状态,如传输模式、连接时间等。
- system:显示服务器类型和操作系统信息,UNIX Type: L8”表示服务器为Unix系统。
- verbose:开启详细模式,显示更多传输和连接信息,默认关闭。
其他命令
- append [local-file] [remote-file]:将本地文件内容追加到远程文件末尾,而非覆盖。
- idle [seconds]:设置服务器空闲超时时间,超过该时间无操作则自动断开。
- cr:开启或关闭回车换行转换功能,通常与ASCII模式配合使用。
以下为部分常用FTP命令的快速参考表格:
| 命令 | 功能描述 | 示例 |
|---|---|---|
| open | 连接FTP服务器 | open ftp.example.com |
| get | 下载远程文件 | get file.txt |
| put | 上传本地文件 | put local.txt |
| ls/dir | 列出远程目录内容 | ls /home |
| cd | 切换远程目录 | cd /var/www |
| pwd | 显示当前远程目录路径 | pwd |
| binary | 设置二进制传输模式 | binary |
| delete | 删除远程文件 | delete temp.txt |
| quit | 退出FTP客户端 | quit |
相关问答FAQs
Q1: FTP和SFTP有什么区别?为什么推荐使用SFTP?
A1: FTP(文件传输协议)是一种明文传输协议,数据(包括用户名和密码)以未加密形式传输,存在安全风险;而SFTP(SSH文件传输协议)基于SSH协议,所有数据均经过加密,安全性更高,SFTP支持更高级的文件操作(如符号链接、权限保留),且通常使用22端口(FTP默认21端口),在涉及敏感数据或公网传输时,强烈推荐使用SFTP替代FTP。

Q2: 使用FTP命令时出现“550 Permission denied”错误,如何解决?
A2: 该错误通常表示当前用户对目标文件或目录没有操作权限,解决方法包括:1)确认用户是否有足够的权限(如写入、删除权限),可通过服务器管理员调整;2)检查文件是否被其他进程占用;3)确保当前工作目录正确,使用“pwd”命令确认路径;4)若为匿名登录,检查服务器是否允许匿名用户执行相应操作(如上传),部分服务器会限制文件名格式(如禁止特殊字符),需检查文件名是否符合服务器规范。
