FTP 命令的基本用法
FTP 命令通常分为两类:
- 交互式命令:直接在 FTP 提示符下输入并执行。
- 命令行参数:在启动
ftp.exe时直接指定,用于自动化脚本。
基本启动方式
最简单的方式是直接在命令提示符(CMD)或 PowerShell 中输入 ftp,然后按回车,这将进入 FTP 交互模式,显示 ftp> 提示符。
ftp
带参数启动(自动化脚本)
可以在命令行中直接指定主机名或 IP 地址,甚至可以组合用户名和密码,实现一键连接。
ftp -s:脚本文件.txt 主机名
命令行参数
这些参数用于在启动 ftp 程序时指定其行为。
| 参数 | 描述 | 示例 |
|---|---|---|
-a |
在绑定数据连接时使用任何本地接口,默认情况下,数据连接仅使用客户端的主接口,这对于拥有多个网络适配器的计算机很有用。 | ftp -a ftp.example.com |
-A |
匿名登录,相当于在交互模式下输入 anonymous 作为用户名。 |
ftp -A ftp.example.com |
-d |
启用调试模式,显示客户端和服务器之间发送的所有 FTP 命令,对于排查连接问题非常有用。 | ftp -d ftp.example.com |
-g |
禁用文件名中的通配符 ( 和 ),这是默认行为,但有时为了兼容性会明确指定。 | ftp -g ftp.example.com |
-i |
在多个文件传输过程中关闭交互式提示,使用 mget 或 mput 时,不会对每个文件都询问“是否下载?”,非常适合自动化脚本。 |
ftp -i -s:upload.txt ftp.example.com |
-n |
在建立初始连接后,不自动尝试登录,这非常有用,因为它允许你先执行 open 命令连接到特定主机,然后再手动输入用户名和密码,避免信息泄露在脚本中。 |
ftp -n -s:script.txt |
-s:filename |
指定一个包含 FTP 命令的文本文件。ftp 程序会按顺序执行该文件中的所有命令,非常适合实现自动化任务。这是自动化脚本最核心的参数。 |
ftp -s:commands.txt myserver |
-v |
显示远程服务器的所有响应信息,并显示关于数据传输的统计信息,比 -d 更详细,但不会显示底层的 FTP 命令。-v 代表 verbose(详细)。 |
ftp -v ftp.example.com |
交互式命令列表
连接到服务器后,在 ftp> 提示符下可以输入以下命令。
连接与登录命令
| 命令 | 描述 | 示例 |
|---|---|---|
open <主机名/IP> [<端口>] |
连接到指定的 FTP 服务器,如果未指定端口,则使用默认端口 21。 | open ftp.example.com |
close |
关闭与当前服务器的连接,但仍留在 FTP 程序中。 | close |
disconnect |
同 close。 |
disconnect |
bye 或 quit |
退出 FTP 程序。 | bye |
user <用户名> [<密码>] |
以指定的用户名登录,如果省略密码,会提示输入。 | user myuser mypassword |
或 help [<命令>] |
显示命令的帮助信息,如果指定命令,则显示该命令的详细帮助。 | help get |
切换到本地命令行,输入 exit 返回 FTP 会话。 |
! dir (查看本地目录) |
目录与文件浏览命令
| 命令 | 描述 | 示例 |
|---|---|---|
ls [<远程目录>] |
列出远程服务器上当前或指定目录的文件和子目录列表,不显示详细信息。 | ls /public |
dir [<远程目录>] |
列出远程服务器上当前或指定目录的详细文件和子目录列表(类似 Windows 的 dir)。 |
dir |
cd <远程目录> |
更改远程服务器上的当前目录。 | cd /incoming |
pwd |
打印当前远程工作目录的完整路径。 | pwd |
mkdir <远程目录名> |
在远程服务器上创建一个新目录。 | mkdir new_folder |
| 执行本地命令。 | ! dir (查看本地电脑的目录) |
文件传输命令
| 命令 | 描述 | 示例 |
|---|---|---|
get <远程文件> [<本地文件>] |
从远程服务器下载一个文件到本地计算机。 | get myfile.txt |
recv <远程文件> [<本地文件>] |
同 get。 |
recv archive.zip |
put <本地文件> [<远程文件>] |
从本地计算机上传一个文件到远程服务器。 | put report.docx |
send <本地文件> [<远程文件>] |
同 put。 |
send photo.jpg |
mget <远程文件列表> |
从远程服务器下载多个文件,可以使用通配符 和 。 | mget *.txt |
mput <本地文件列表> |
从本地计算机上传多个文件,可以使用通配符 和 。 | mput *.csv |
ascii |
设置文件传输类型为 ASCII(文本),适用于 .txt, .html, .css 等文件。 |
ascii |
binary |
设置文件传输类型为二进制(Binary)。这是最安全、最常用的模式,适用于所有非文本文件,如 .exe, .zip, .jpg, .pdf 等。 |
binary |
prompt |
切换交互式提示,在 mget 或 mput 时,是否对每个文件进行确认。prompt off 关闭提示,prompt on 开启提示。 |
prompt off |
其他实用命令
| 命令 | 描述 | 示例 |
|---|---|---|
delete <远程文件> |
删除远程服务器上的一个文件。 | delete old_file.log |
rmdir <远程目录> |
删除远程服务器上的一个空目录。 | rmdir temp_folder |
lcd <本地目录> |
更改本地计算机上的当前工作目录。 | lcd C:\downloads |
status |
显示当前 FTP 的一些状态设置,如传输模式、是否开启提示等。 | status |
hash |
在传输每个数据块(通常是 1024 字节)后显示一个 符号,可以直观地看到传输进度。 | hash |
综合示例
示例 1:手动下载文件
- 打开 CMD。
- 输入
ftp ftp.example.com并回车。 - 如果提示输入用户名和密码,输入你的凭据。
- 输入
binary确保是二进制模式。 - 输入
ls查看服务器文件列表。 - 输入
get important_file.zip开始下载。 - 下载完成后,输入
bye退出。
示例 2:使用脚本自动化上传(推荐方式)
创建一个名为 upload.txt 的文本文件,内容如下:
# 脚本开始,-n 参数阻止自动登录 open ftp.example.com # 输入用户名 myusername # 输入密码 mypassword # 切换到二进制模式 binary # 切换到远程服务器的目标目录 cd /uploads # 切换到本地要上传的文件所在目录 lcd C:\local_files # 上传所有 .log 文件,并且不提示每个文件 prompt off mput *.log # 关闭连接 close # 退出 FTP bye
然后在命令提示符中执行以下命令:
ftp -n -s:upload.txt
这个命令会自动读取 upload.txt 文件中的指令,完成整个上传过程,无需任何人工干预。
重要注意事项
- 安全性:传统的 FTP 协议在传输用户名和密码时是明文的,非常不安全,攻击者可以轻易窃取你的凭据。强烈建议使用更安全的协议,如 SFTP (通过 SSH) 或 FTPS (FTP over SSL/TLS)。
- Windows 版本差异:Windows 10 和 Windows 11 中,
ftp命令的功能与旧版 Windows 基本一致,但更推荐使用 PowerShell 内置的Copy-Item命令配合 WinRM/SSH 等现代协议进行文件传输。 - 被弃用:微软官方已将
ftp.exe标记为“即将弃用”(deprecated),对于新的项目,请优先考虑使用更现代的工具。
