rsync 压缩及其工作原理

rsync compression and how it works

我正在使用 rsync 通过 WebDav 将大量文件(在 Ubuntu Linux 服务器上)备份到云网络服务。因为我的网络速度是我的瓶颈因素,我想我会使用 rsync -z(压缩)来减小文件大小,希望这会减少瓶颈。

无论如何,在研究带有压缩的 rsync 的目的和用途时,我似乎没有找到它到底在做什么的答案。

基本上rsync似乎是压缩数据,传输数据,然后解压缩数据。但是,rsync 在将数据发送到云后解压缩数据对我来说没有多大意义,因为这需要云服务来解压缩数据,我认为这不会发生。

我的问题是,带压缩功能的 rsync 是否真的压缩和解压缩通过 WebDav 或 FTP 或其他网络到网络协议发送的数据?如果它对我没有帮助,那么压缩标志在什么情况下对我有帮助,例如通过 USB 2.0 进行本地到本地同步?

WebDAV 文件夹安装在哪里?

如果它在本地机器上,你只会得到额外的开销而没有性能提升,因为 CPU 必须做双重工作来压缩并在写入安装的文件夹之前立即解压缩,然后使用 WebDAV 协议传输到远程服务器。

rsync 使用 zlib 在传输中进行压缩。如果您不进行差异传输,那么 scp 提供更快的性能,因为 rsync 算法用于比较文件目录树中的变化(尽管 scp 没有压缩- 在途选项)。

压缩并不总是解决问题的办法。如果您的网络是瓶颈,那么它确实会加快进程,但如果您的 CPU% 已达到极限,它只会使进程变慢。

rsync 不压缩压缩文件类型(因为压缩这些文件类型的性能折衷率非常低),例如 JPEGLZOLZMA/2 , ZIP, GZIP, 等等

rsync 自版本 3.2.0 支持超过 zlib:

--compress, -z
       turn on compression
--compress-choice=STR, --zc=STR
       choose compression from lz4 (fastest), zstd, zlibx, zlib (slowest), none
--compress-level=NUM, --zl=NUM
       zlib and zstd can be tuned with compression level
       zlib from 1 (lowest) to 9 (highest), default 6
       zstd from -131072 to 22, default 3