远程服务器间传输数据是否经过本地 · 笔记
一、rsync 场景
1. 在本地执行 rsync
rsync -avz user@A:/src/ user@B:/dst/
- 数据流:A(源) → 本地 → B(目标)
- 会经过本地
- 数据通常不会完整落到本地磁盘,但会经过本地内存和网络接口
- 会占用本地上传/下载带宽,本地可能成为瓶颈
- A、B 看到的对端都是本地机器
2. 让远程服务器直接执行 rsync
让 A 推给 B:
ssh user@A 'rsync -avz /src/ user@B:/dst/'
让 B 从 A 拉:
ssh user@B 'rsync -avz user@A:/src/ /dst/'
- 数据流:A ↔ B
- 文件数据不经过本地
- 本地只负责发起 SSH 控制命令,可能接收输出信息
- 前提:A 能 SSH 到 B,或 B 能 SSH 到 A,且权限、rsync 配置正常
二、Xftp 连接两个服务器
Xftp 在两个服务器之间传输文件时,是否经过本地,取决于 FXP 直传是否成功。
1. FXP 直传成功
- 数据流:服务器 A ↔ 服务器 B
- 不经过本地
- 原理:FXP 是 FTP 协议的扩展,允许两个 FTP 服务器直接建立数据连接
2. FXP 不可用或失败
- 数据流:服务器 A → 本地临时存储 → 服务器 B
- 会经过本地
- 文件可能先下载到本地临时文件夹,再上传到目标服务器
- 会消耗本地带宽,可能占用本地磁盘空间
- 如果使用 SFTP 协议,通常无法使用 FXP,会自动回退到本地中转
三、Xftp 开启 FXP 直传
操作路径:
- 打开 Xftp
- 顶部菜单栏:工具 → 选项
- 左侧选择:传输
- 勾选:数据在FTP服务器间传输时使用FXP协议
- 点击 确定 保存
重要前提
- 两个远程服务器都必须支持并允许 FXP
- 必须使用 FTP 协议,SFTP 不支持 FXP
- 如果服务器端不支持,Xftp 会自动回退到本地中转模式
- 具体选项位置可能因 Xftp 版本略有差异
四、总结对比
| 方式 |
数据路径 |
是否经过本地 |
本地执行 rsync user@A:... user@B:... |
A → 本地 → B |
是 |
ssh A 'rsync ... B' 或 ssh B 'rsync ... A' |
A ↔ B |
否 |
| Xftp + FXP 直传成功 |
服务器 A ↔ 服务器 B |
否 |
| Xftp + FXP 不可用/失败 |
服务器 A → 本地临时存储 → 服务器 B |
是 |
五、结论
- 想让 rsync 不经过本地:让 A 或 B 其中一端直接执行 rsync。
- 想让 Xftp 不经过本地:使用 FTP 协议,并确认双方服务器支持 FXP,然后在 Xftp 中开启 FXP 选项。
- 如果使用 SFTP,或服务器不支持 FXP,文件传输通常会经过本地中转。