基本介绍
由于我不想在本地搭建各种开发环境,与是开发任务的代码均上传服务器运行。但是经常遇到问题是SFTP上传速度太慢,如果项目文件过多的话,上传会很浪费时间。与是JetBrains提供了Rsync上传方案。下面介绍一个怎样使用。
- JetBrains-创建远程服务器配置
- JetBrains-rsync介绍
- Rsync官网
核心区别
| 特性 |
rsync |
SFTP (SSH File Transfer Protocol) |
| 协议 |
基于 SSH 或自定义协议 |
基于 SSH(安全文件传输协议) |
| 主要用途 |
增量同步(仅传输差异部分) |
文件上传/下载(完整传输) |
| 传输效率 |
极高(只传变化的字节) |
较低(每次全量传输) |
| 是否支持断点续传 |
支持(--partial) |
部分客户端支持(如 lftp) |
| 命令行友好度 |
适合脚本自动化 |
需交互式操作(但有 CLI 工具) |
| 权限保留 |
可保留权限、时间戳(-a) |
默认不保留,需手动设置 |
| 适用场景 |
大文件增量备份、镜像同步 |
单文件上传、简单文件管理 |
传输效率对比
rsync
- 通过校验文件块(checksum)仅传输差异部分。
- 示例:修改一个 1GB 文件中的 1MB,
rsync 只传 1MB。
- 适合频繁更新的文件(如代码、日志)。
SFTP
- 每次传输整个文件,即使只修改了一小部分。
- 示例:修改 1MB 仍需重新上传整个 1GB 文件。
- 适合一次性上传静态文件(如安装包)。
权限与元数据
rsync
1
| rsync -avz /local/path/ user@remote:/remote/path/
|
-a(archive)保留权限、所有者、时间戳。
- 可强制设置权限(
--chmod=755)或用户组(--chown=user:group)。
SFTP
1 2 3
| sftp user@remote sftp> put file.txt sftp> chmod 755 file.txt
|
断点续传支持
rsync
1
| rsync -avzP /large/file user@remote:/path/
|
SFTP
1 2
| lftp sftp://user:password@remote lftp> mirror --continue /local/path /remote/path
|
适用场景推荐
| 场景 |
推荐工具 |
理由 |
| 同步代码/网站 |
rsync |
只传修改的文件,节省时间和带宽。 |
| 上传单个大文件 |
SFTP |
简单直接,无需复杂配置。 |
| 备份数据库 |
rsync |
结合 --link-dest 硬链接,实现高效快照备份。 |
| 图形化文件管理 |
SFTP |
可用 FileZilla/WinSCP 拖拽操作。 |
| 受限网络环境 |
rsync |
压缩传输(-z)减少带宽占用。 |
安全性对比
- 两者均基于 SSH,默认加密传输,安全性相当。
- 区别:
rsync 可配置为非 SSH 模式(rsync://,不推荐)。
SFTP 是标准协议,兼容性更好(如云存储服务普遍支持)。
安装
Debian
Centos
1
| yum install -y epel-release && yum update -y rsync
|
Mac
查看版本
JetBrains 配置 Rsync
默认配置
1 2 3 4 5 6
| --Rsync可执行文件路径 rsync --Rsync选项 -zar --ssh可执行文件路径 ssh
|
问题
按照默认配置,上传文件到服务器上之后,服务器文件权限和组都没有或者不是我们想要的。那么该怎样设置呢。
修改配置
1 2 3 4 5 6
| --Rsync可执行文件路径 rsync --Rsync选项 -zar,--group,--chown=www:www,--chmod=755 --ssh可执行文件路径 ssh
|
添加组和权限,以及目录权限。