FTP
2025年7月11日大约 3 分钟
FTP默认控制连接端口是21,数据连接端口为20
主动模式下客户端先用任意随机端口给予服务器21控制端口进行连接,然后客户端告知服务器端所使用的端口,随后建立在端口20的数据连接
FTP(File Transfer Protocol)命令用于在客户端和服务器之间传输文件。以下是常用的 FTP 命令(适用于大多数 FTP 客户端,如 ftp
、lftp
):
1. 连接与登录
命令 | 说明 |
---|---|
ftp <IP地址> | 连接 FTP 服务器(如 ftp 192.168.1.1 ) |
open <IP地址> | 在 FTP 会话中重新连接另一个服务器 |
user <用户名> | 重新输入用户名和密码 |
bye / quit | 退出 FTP 会话 |
2. 目录与文件操作
命令 | 说明 |
---|---|
ls / dir | 列出当前目录的文件和子目录 |
cd <目录名> | 切换目录(如 cd /pub ) |
pwd | 显示当前所在的远程目录 |
mkdir <目录名> | 创建新目录(需权限) |
rmdir <目录名> | 删除空目录(需权限) |
rename <旧名> <新名> | 重命名文件(需权限) |
delete <文件名> | 删除文件(需权限) |
mdelete <文件1> <文件2> | 批量删除文件(需权限) |
3. 文件传输
命令 | 说明 |
---|---|
get <远程文件> | 下载单个文件(如 get file.txt ) |
mget <文件1> <文件2> | 批量下载文件(支持通配符 * ) |
put <本地文件> | 上传单个文件(需权限) |
mput <文件1> <文件2> | 批量上传文件(需权限) |
binary | 使用二进制模式传输(适用于图片、压缩包等) |
ascii | 使用文本模式传输(适用于 .txt 、.html 等) |
4. 本地文件操作
命令 | 说明 |
---|---|
!ls / !dir | 列出本地当前目录的文件 |
lcd <目录名> | 切换本地目录(如 lcd /home/user ) |
!<命令> | 在本地执行 Shell 命令(如 !pwd ) |
5. 高级功能
命令 | 说明 |
---|---|
passive / pasv | 切换为被动模式(解决防火墙问题) |
hash | 显示传输进度(# 表示传输进度) |
status | 显示当前 FTP 连接状态 |
help / ? | 查看所有可用命令 |
6. lftp
额外命令
lftp
是更强大的 FTP 客户端,支持更多功能:
命令 | 说明 |
---|---|
mirror <远程目录> | 递归下载整个目录 |
mirror -R <本地目录> | 递归上传整个目录 |
set ftp:use-feat off | 禁用某些 FTP 扩展(解决兼容性问题) |
set net:timeout 30 | 设置超时时间(秒) |
示例用法
1. 下载文件
ftp 192.168.1.1 Name: anonymous Password: anonymous@example.com ftp> ls ftp> get file.txt ftp> quit
2. 上传文件
ftp 192.168.1.1 Name: user Password: ******** ftp> put local_file.txt ftp> quit
3. 批量下载(mget
)
ftp> mget *.txt # 下载所有 .txt 文件 ftp> prompt off # 关闭交互提示(避免每次确认) ftp> mget *
常见问题
Q1: 为什么 ls
或 get
失败?
权限不足:匿名用户可能只能下载,不能上传/删除。
文件不存在:先用
ls
确认文件名。防火墙/网络问题:尝试
passive
模式。
Q2: 如何递归下载整个目录?
使用 lftp
:
lftp -u user,pass 192.168.1.1 lftp> mirror /remote_dir/ # 下载整个目录
掌握这些命令后,你可以高效地使用 FTP 进行文件传输。如果遇到问题,可以尝试 help
或 ?
查看服务器支持的命令。