FTP 这个词听起来像上古遗迹,但现实是——大量企业内网、嵌入式设备、老旧服务器仍然靠 FTP/SFTP 传输文件。FileZilla 作为免费开源的跨平台 FTP 客户端,Windows、Linux、macOS 三端齐发,支持 FTP、FTPS(FTP over SSL/TLS)以及 SFTP,几乎覆盖了你能遇到的所有远程文件传输场景。3.70.6 版本近日正式发布,虽然更新细节在公告中未完整列出,但这个持续维护的事实本身就值得聊聊:在云存储和 API 时代,一个 FTP 客户端为什么还能保持活跃迭代?
三种协议,选哪个?
FileZilla Client 支持三种远程传输协议,它们的安全性差异很大:
| 协议 | 加密方式 | 典型端口 | 适用场景 |
|---|---|---|---|
| FTP | 无加密(明文) | 21 | 内网隔离环境、无安全要求 |
| FTPS | SSL/TLS 加密 FTP | 21(显式)或 990(隐式) | 需要加密但服务器仅支持 FTP 协议栈 |
| SFTP | SSH 通道内文件操作 | 22 | 优先选择,绝大多数 Linux 服务器开箱即用 |
简单决策:如果目标机器开了 SSH,直接用 SFTP。 FTP 和 FTPS 的多端口问题(数据端口随机分配)在防火墙环境下是噩梦,SFTP 走单一 SSH 端口,穿透和配置都省心得多。
站点管理器:别每次手动输地址
FileZilla 的站点管理器(Site Manager)是日常使用频率最高的功能。把常用服务器地址、协议、端口、用户名保存下来,下次一键连接。对于 SFTP 连接,还可以直接指定私钥文件路径,避免每次输密码。
操作路径:文件 → 站点管理器 → 新站点,协议下拉选 SFTP,填入主机和端口,登录类型选"密钥文件",指向你的 ~/.ssh/id_rsa 或其他私钥。
一个容易踩的坑:FileZilla 对私钥格式有要求。如果你用的是 OpenSSH 新格式(以 BEGIN OPENSSH PRIVATE KEY 开头),部分旧版 FileZilla 无法识别,需要先用 ssh-keygen 转换为 PEM 格式:
# 将 OpenSSH 格式私钥转为 PEM 格式(FileZilla 兼容)
ssh-keygen -p -f ~/.ssh/id_rsa -m PEM
# 转换后原文件会被覆盖,建议先备份
cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
ssh-keygen -p -f ~/.ssh/id_rsa -m PEM
转换完成后在站点管理器中指向该私钥文件,连接时就不会再弹出密码框。
命令行批量传输:lftp 脚本自动化
FileZilla 是图形界面工具,适合手动操作。当你需要定时批量同步或做 CI/CD 中的文件上传,lftp 是更合适的命令行替代——它同样支持 FTP/FTPS/SFTP,且脚本能力远强于 FileZilla 的命令行参数。
下面是一个用 lftp 通过 SFTP 自动同步本地目录到远程服务器的脚本,可以直接改造后放进 cron 或 CI pipeline:
#!/usr/bash
# sftp_sync.sh — 用 lftp 通过 SFTP 镜像同步本地目录到远程
REMOTE_HOST="your-server.example.com"
REMOTE_USER="deploy"
REMOTE_PORT="22"
REMOTE_DIR="/var/www/html"
LOCAL_DIR="./dist"
# 使用 ssh key 认证,确保 ~/.ssh/id_rsa 已配置
lftp -f "
set sftp:connect-program 'ssh -a -x -p ${REMOTE_PORT}'
open sftp://${REMOTE_USER}@${REMOTE_HOST}
mirror --reverse --delete --verbose=3 ${LOCAL_DIR} ${REMOTE_DIR}
quit
"
关键参数说明:
- --reverse:本地推到远程(默认是远程拉到本地)
- --delete:删除远程中本地已不存在的文件,保持严格同步
- 如果只想上传不删除远程多余文件,去掉 --delete
放进 cron 每小时同步一次:
# crontab -e 添加
0 * * * * /path/to/sftp_sync.sh >> /var/log/sftp_sync.log 2>&1
大文件传输的断点续传
FileZilla 在传输大文件时有一个实用特性:断点续传。如果连接中断,重新连接后右键队列中的失败传输,选"继续传输"即可从断点处接着传,而不是从头开始。前提是目标服务器也支持续传——SFTP 服务器通常支持,FTP 服务器需要在站点设置中启用 REST 命令。
在站点管理器 → 传输设置中,勾选"允许断点续传上传/下载",可以避免几十 GB 的文件因为一次网络抖动而白传。
采纳建议与注意事项
- 优先 SFTP:除非服务器只提供 FTP,否则一律用 SFTP,减少防火墙配置麻烦,加密也更可靠。
- 私钥格式检查:OpenSSH 新格式私钥在 FileZilla 旧版中不兼容,升级到 3.70.6 或转换格式均可解决。
- 自动化场景换 lftp:图形界面不适合 cron 和 CI,lftp 的
mirror命令一行搞定双向同步。 - 版本迭代的意义:FileZilla 持续更新,核心价值不在功能大改,而在协议兼容性修复、安全补丁和新操作系统适配。3.70.6 这类小版本更新,保持升级习惯即可,不必等大版本才动。