JetBrains中的Rsync怎么用

基本介绍

由于我不想在本地搭建各种开发环境,与是开发任务的代码均上传服务器运行。但是经常遇到问题是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

  • 自动支持断点续传(--partial):
1
rsync -avzP /large/file user@remote:/path/
  • -P 显示进度并保留部分传输的文件。

SFTP

  • 大多数客户端(如 lftp)支持断点续传:
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

1
apt install -y rsync

Centos

1
yum install -y epel-release && yum update -y rsync

Mac

1
brew install rsync

查看版本

1
rsync --version

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

添加组和权限,以及目录权限。