使用 ftp 命令(传统方式)
ftp 是一个非常基础且广泛支持的 FTP 客户端,几乎所有 Linux 系统都预装了它,但它的交互式界面比较简单,且默认是明文传输。

基本连接
打开终端,直接输入 ftp 命令,后面跟上 FTP 服务器的地址或 IP。
ftp ftp.example.com
或者指定端口(FTP 默认端口是 21):
ftp ftp.example.com 21
交互式命令
连接成功后,你会看到 ftp> 提示符,这时你需要输入用户名和密码。
login/username:输入你的 FTP 用户名。password:输入你的密码(输入时是隐藏的)。
常用 FTP 交互命令:

| 命令 | 功能 | 示例 |
|---|---|---|
ls |
列出当前目录的文件(列表形式) | ls |
dir |
列出当前目录的文件(详细信息) | dir |
cd <目录名> |
切换到指定目录 | cd pub |
lcd <本地目录> |
切换到本地机器的指定目录(非常重要!) | lcd /home/user/my_local_files |
get <远程文件> |
下载单个远程文件 | get myfile.txt |
put <本地文件> |
上传单个本地文件 | put my_local_file.zip |
mget <文件名模式> |
批量下载匹配模式的文件(*.zip) |
mget *.zip |
mput <文件名模式> |
批量上传匹配模式的文件 | mput *.log |
| 执行本地 shell 命令 | !ls -l (查看本地目录) |
|
bin |
切换到二进制传输模式(强烈推荐,特别是对于非文本文件) | bin |
ascii |
切换到 ASCII 文本传输模式 | ascii |
prompt |
关闭/打开交互式提示(在 mget 或 mput 时很有用) |
prompt off |
bye 或 quit |
退出 FTP 连接 | bye |
完整示例:下载文件
# 1. 连接到服务器 $ ftp ftp.example.com Connected to ftp.example.com. 220 (vsFTPd 3.0.3) Name (ftp.example.com:your_local_user): myusername 331 Please specify the password. Password: ******** # 输入密码,不会显示 230 Login successful. # 2. 切换到二进制模式(非常重要!) ftp> bin 200 Switching to Binary mode. # 3. 查看服务器上的文件 ftp> ls 227 Entering Passive Mode (192,168,1,100,12,34) 150 Here comes the directory listing. -rw-r--r-- 1 0 0 1234 Jan 01 12:00 important_file.zip 226 Directory send OK. # 4. 在本地机器上创建一个存放下载文件的目录 ftp> !mkdir -p ~/downloads ftp> lcd ~/downloads Local directory now /home/user/downloads # 5. 下载文件 ftp> get important_file.zip local: important_file.zip remote: important_file.zip 227 Entering Passive Mode (192,168,1,100,56,78) 150 Opening BINARY mode data connection for important_file.zip (1234 bytes). 226 File send OK. 1234 bytes received in 0.00 secs (1.2 MB/s) # 6. 退出 ftp> bye 221 Goodbye.
使用 lftp 命令(现代、推荐方式)
lftp 是一个功能更强大、更现代的命令行 FTP 客户端,它支持多种协议(FTP, FTPS, SFTP, HTTP 等),支持多线程下载/上传,有更好的脚本支持,并且默认使用加密的 FTPS (FTP over SSL/TLS),更安全。
如果你的系统没有安装 lftp,可以使用包管理器安装:
- Debian/Ubuntu:
sudo apt-get install lftp - CentOS/RHEL:
sudo yum install lftp
基本连接
lftp 的语法更简洁,可以直接在命令行中指定用户名、密码和主机。
lftp ftp://用户名:密码@ftp.example.com
安全提示:在命令行中直接写密码不安全,因为会记录在 shell 历史中,更推荐的方式是:

lftp ftp://用户名@ftp.example.com # 然后它会提示你输入密码
常用 lftp 命令
lftp 的交互式命令与 ftp 类似,但更强大。
| 命令 | 功能 | 示例 |
|---|---|---|
ls / dir |
列出文件 | ls |
cd <目录> |
切换服务器目录 | cd /pub |
lcd <目录> |
切换本地目录 | lcd ~/downloads |
get <远程文件> |
下载单个文件 | get file.zip |
put <本地文件> |
上传单个文件 | put my_doc.pdf |
mirror |
非常强大! 同步整个目录,默认是下载服务器目录到本地。 | mirror |
mirror -R |
反向同步,上传本地目录到服务器。 | mirror -R |
pget <远程文件> |
多线程下载大文件,速度更快。 | pget large_file.iso |
mget <文件模式> |
批量下载 | mget *.tar.gz |
mput <文件模式> |
批量上传 | mput *.log |
exit 或 quit |
退出 | exit |
完整示例:同步整个目录
假设你想把本地 ~/project_backup 目录上传到服务器的 /backups/myproject 目录。
# 1. 连接到服务器(会提示输入密码) $ lftp ftp://myusername@ftp.example.com Password: lftp myusername@ftp.example.com:~> # 2. 切换到服务器上的目标目录 lftp myusername@ftp.example.com:~> cd /backups/myproject lftp myusername@ftp.example.com:/backups/myproject> # 3. 确保本地目录是你想上传的目录 lftp myusername@ftp.example.com:/backups/myproject> lcd ~/project_backup Local directory now /home/user/project_backup # 4. 使用 mirror -R 进行上传(-R 表示 reverse) lftp myusername@ftp.example.com:/backups/myproject> mirror -R Total: 1 file, 12345 bytes, 12345 KB/s 12345 bytes transferred in 1 second (12.3K/s) # 5. 退出 lftp myusername@ftp.example.com:/backups/myproject> exit
重要提醒:安全性问题
传统的、不加密的 FTP 协议在传输用户名和密码时是明文的,非常容易被网络中间人窃听。在生产环境中,强烈建议使用更安全的协议:
-
FTPS (FTP over SSL/TLS):这是 FTP 的安全版本,在
ftp和lftp中都可以启用。- 在
ftp命令中,连接后使用pbsz和prot p命令来启用数据加密。 - 在
lftp中,可以直接使用ftps://协议头,它会自动尝试建立安全连接。
- 在
-
SFTP (SSH File Transfer Protocol):这通常是最好的选择! SFTP 运行在 SSH 协议之上,是加密的,并且功能强大,它不是一个 FTP 协议,但常被用来替代 FTP 进行安全的文件传输。
SFTP 连接示例:
# 使用 sftp 命令 sftp your_username@server_ip # 连接后交互命令类似 ftp sftp> ls sftp> get file.txt sftp> put file.txt sftp> bye
| 特性 | ftp (传统) |
lftp (现代) |
sftp (推荐) |
|---|---|---|---|
| 协议 | FTP (明文) | FTP, FTPS, HTTP, HTTPS, SFTP | SFTP (SSH) |
| 安全性 | 不安全 | 可选 (FTPS) | 安全 |
| 易用性 | 基础,交互式 | 强大,支持脚本 | 类似 lftp |
| 特色功能 | 无 | 多线程下载、目录同步 | 基于 SSH,无需额外服务 |
| 推荐场景 | 仅限内网或测试环境 | 需要高级功能且服务器支持 FTPS | 所有需要安全传输的场景 |
对于大多数用户,尤其是需要从公网传输文件时,请优先使用 sftp,如果必须使用 FTP,请使用 lftp 并确保服务器支持 FTPS。
