ftp介绍
FTP 命令允许用户通过FTP(File Transfer Protocol)协议在本地计算机和远程服务器之间传输文件。
FTP 是一种在网络上交换文件的标准协议,是 ARPANet 的标准文件传输协议,ARPANet 网络就是现今 Internet 的前身。
使用 FTP 协议时,一方充当客户端,另一方充当服务器,客户端可以上传、下载、删除、重命名文件和目录,以及执行其他文件传输相关的操作。
语法
ftp (选项) (参数)
选项
-v:启用或禁用详细模式。在详细模式下,ftp命令会显示所有来自服务器的响应消息。默认情况下,该选项为开启状态。
ftp -v ftp.example.com
-d:启用调试模式。该选项会显示所有FTP传输过程中发送和接收到的命令,有助于调试连接问题。
ftp -d ftp.example.com
-n:禁止自动登录。默认情况下,ftp命令会在连接到远程服务器后尝试自动登录。使用该选项可以禁止该行为,通常与.netrc文件联合使用。
ftp -n ftp.example.com
-g:禁用文件名通配符扩展。ftp命令默认会展开文件名中的通配符。使用该选项可以关闭这一行为。
ftp -g ftp.example.com
-p:使用被动模式(PASV)进行数据连接。被动模式在客户端位于防火墙或NAT后面时非常有用。
ftp -p ftp.example.com
⚠️ Windows 上使用 -s 选项指定script.txt脚本执行 ftp 命令。Linux 上可以使用重定向实现。
ftp -s:script.txt ftp.example.com # Windows ftp -n ftp.example.com < script # Linux
参数:
主机:指定要连接的FTP服务器的主机名或ip地址。
目录操作
命令 | 描述 |
---|---|
cd | 更改当前工作目录到指定目录 |
ls或dir | 列出当前目录下的内容 |
pwd | 显示当前目录的绝对路径 |
mkdir | 创建目录 |
rmdir | 删除一个目录 |
rename <old> <new> | 重命名一个目录 |
快速开始
使用匿名模式访问远程 FTP 服务器
ftp ftp.example.com
ftp 会启动交互式命令行
Connected to <host> (<ip address>). 220 (vsFTPd 3.*) # 需要手动输入 anonymous Name (192.168.10.10:root): anonymous 331 Please specify the password. Password: # 匿名模式下直接回车 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files.
连接成功后进入交互式会话.
查看所有命令,使用 help 或 ?
ftp> help # 或者 ftp> ?
关闭 ftp 连接
bye exit quit
文件操作
命令 | 描述 |
---|---|
get <remote> <local> | 下载一个文件到本地 |
mget | 下载多个文件到本地 |
put <local> <remote> | 上传一个文件到服务器 |
mput | 上传多个文件到服务器 |
delete <remote> | 删除一个文件 |
rename <old> <new> | 重命名一个文件 |
ftp常用命令
实例
ftp> ascii # 设定以ASCII方式传送文件(缺省值) ftp> bell # 每完成一次文件传送,报警提示. ftp> binary # 设定以二进制方式传送文件. ftp> bye # 终止主机FTP进程,并退出FTP管理方式. ftp> case # 当为ON时,用MGET命令拷贝的文件名到本地机器中,全部转换为小写字母. ftp> cd # 同UNIX的CD命令. ftp> cdup # 返回上一级目录. ftp> chmod # 改变远端主机的文件权限. ftp> close # 终止远端的FTP进程,返回到FTP命令状态, 所有的宏定义都被删除. ftp> delete # 删除远端主机中的文件. ftp> dir [remote-directory] [local-file] # 列出当前远端主机目录中的文件.如果有本地文件,就将结果写至本地文件. ftp> get [remote-file] [local-file] # 从远端主机中传送至本地主机中. ftp> help [command] # 输出命令的解释. ftp> lcd # 改变当前本地主机的工作目录,如果缺省,就转到当前用户的HOME目录. ftp> ls [remote-directory] [local-file] # 同DIR. ftp> !ls # 查看本机文件 ftp> macdef # 定义宏命令. ftp> mdelete [remote-files] # 删除一批文件. ftp> mget [remote-files] # 从远端主机接收一批文件至本地主机. ftp> mkdir directory-name # 在远端主机中建立目录. ftp> mput local-files # 将本地主机中一批文件传送至远端主机. ftp> open host [port] # 重新建立一个新的连接. ftp> prompt # 交互提示模式. ftp> put local-file [remote-file] # 将本地一个文件传送至远端主机中. ftp> pwd # 列出当前远端主机目录. ftp> quit # 同BYE. ftp> recv remote-file [local-file] # 同GET. ftp> rename [from] [to] # 改变远端主机中的文件名. ftp> rmdir directory-name # 删除远端主机中的目录. ftp> send local-file [remote-file] # 同PUT. ftp> status # 显示当前FTP的状态. ftp> system # 显示远端主机系统类型. ftp> user user-name [password] [account] # 重新以别的用户名登录远端主机. ftp> ? [command] # 同HELP. [command]指定需要帮助的命令名称。如果没有指定 command,ftp 将显示全部命令的列表。 ftp> ! # 从 ftp 子系统退出到外壳。
以匿名登录为例,将下列脚本代码放入文件 script 中:
user anonymous "\n" # 匿名用户 binary # 将文件传输模式设置为二进制模式,这对于非文本文件(如图片、压缩文件等)来说是必要的,以确保文件在传输过程中不会被更改。 ls <dir> # 进入某个目录 pwd # 输出当前路径 quit # 退出 ftp 连接
使用 ftp 命令执行脚本文件:
ftp -n ftp.example.com < script # 使用 -n 选项禁止自动登录,这样会继续执行 user 指令,而不是启动交互式命令行。
使用 ftp 下载文件:
ftp> get readme.txt # 下载 readme.txt 文件 ftp> mget *.txt # 下载
使用 ftp 上传文件:
ftp> put /path/readme.txt # 上传 readme.txt 文件 ftp> mput *.txt # 可以上传多个文件
ftp状态码
FTP 状态码是 FTP 服务器用来向 FTP 客户端反馈命令执行结果的代码。每个状态码由三个数字组成,每个数字都有特定的含义。
第一个数字:
1xx: 表示正向的初步回复,表示服务器已经开始处理请求,但需要进一步的回复才能完成操作。
2xx: 表示正向的完成回复,表示服务器已经成功执行了请求。
3xx: 表示正向的中间回复,表示服务器已经接受了请求,但需要客户端提供更多信息才能完成操作。
4xx: 表示暂时的负向完成回复,表示服务器无法执行请求,但错误是暂时的,客户端可以重试。
5xx: 表示永久的负向完成回复,表示服务器无法执行请求,错误是永久性的,客户端无法重试。
第二个数字:
x0x: 表示语法错误,例如命令格式错误或参数错误。
x1x: 表示信息回复,例如系统状态或帮助信息。
x2x: 表示连接相关回复,例如控制连接或数据连接。
x3x: 表示认证和计费相关回复,例如登录过程或计费操作。
x4x: 表示未定义的回复。
x5x: 表示文件系统相关回复,例如文件传输或文件系统操作。
第三个数字:
第三个数字表示具体的错误代码,每个错误代码都有特定的含义。
一些常见的 FTP 状态码:
150: 文件状态正常,即将打开数据连接。
220: 服务已准备好,等待新用户连接。
226: 关闭数据连接,请求的文件操作成功。
230: 用户已登录,可以继续操作。
421: 服务不可用,关闭控制连接。
426: 连接已关闭,传输已中止。
500: 语法错误,命令无法识别。
530: 未登录,用户无法登录。
550: 请求的操作未执行,文件不可用。
553: 请求的操作未执行,文件不可用。 这意味着 FTP 服务器无法完成您请求的操作,通常是因为文件或目录不存在、没有权限访问、磁盘空间不足或其他原因导致的。
详见:
参考: