基本介绍
由于我不想在本地搭建各种开发环境,与是开发任务的代码均上传服务器运行。但是经常遇到问题是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
   | 
 
添加组和权限,以及目录权限。