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