rsync --compress-level:可以使用哪些压缩级别?

rsync --compress-level:可以使用哪些压缩级别?

Rsync 具有用于压缩的命令行参数:

-z, --compress              compress file data during the transfer
    --compress-level=NUM    explicitly set compression level

是什么--compress-level意思?哪些数字可以用作级别?

答案1

它的值为 0-9。哪个1速度最快,9压缩率最高。除此之外,rsync 和 zlib 之间存在关联,rsync 会告诉 zlib 库“使用默认压缩”。在 zlib 的文档中,它是这样说的:

Z_DEFAULT_COMPRESSION要求在速度和压缩之间进行默认折衷(目前相当于级别 6)。

答案2

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

答案3

请注意,本地rsync文档涵盖了有关的信息--compress-level

找到它:

  1. 跑步man rsync
  2. 输入/compress-level(注意斜线)并按ENTER
  3. 输入/ENTER(重复直到满意为止)
  4. 明白了!
       --compress-level=NUM
              Explicitly set the compression level to use (see --compress) in‐
              stead of letting it default.  Allowed values for NUM are between
              0 and 9; default when --compress option is specified is  6.   If
              NUM is non-zero, the --compress option is implied.

话虽如此,我承认它不能很好地解释NUM... 的实际行为,但更大NUM意味着压缩更多。所以:

rsync --compress-level=9

这样可以实现最大程度的压缩(因此,最大程度地提高 CPU 使用率)。

注意:非常高的压缩级别对于非常有限的连接带宽非常有用。在高速网络上,这种压缩只会减慢一切速度,因为您的 CPU 忙于压缩而不是复制。

答案4

使用的环境由两个 docker 容器组成,使用 MACVLAN + 一些噪音流量(产生约 ±1% 的误差)fileX - 在我的情况下 - 是一个二进制文件

因此,以下是 rsync tar 压缩文件与 rsync 压缩(选项 -z)解压文件的结果

      1. File tarred + rsync without compression (rsync -axvPAH fileX.tar destination:/path)

    File size is 56933 bits (fileX.tar)
    Transfer difference is 4735665-4673346=62319 bits

      2. File tarred + rsync with default compression (rsync -axvPAH -z fileX destination:/path)

    File size is 56933 (fileX.tar)
    Transfer difference is 4933845-4871608=62237

      3. File tarred + rsync with maximum compression (rsync -axvPAH -z --compress-level=9 fileX.tar destination:/path)

    File size is 56933 bits (fileX.tar)
    Transfer difference is 4870664-4808387=62277

      4. File untarred + rsync with default compression (rsync -axvPAH -z fileX destination:/path)

    File size is 237525 bits (fileX)
    Transfer difference is 4669946-4607637=62309 bits

      5. File untarred + rsync with maximum compression (rsync -axvPAH -z --compress-level=9 fileX destination:/path)

    File size is 237525 bits (fileX)
    Transfer difference is 4806735-4744764=61971 bits

      6. File untarred + rsync without compression (makes no sense since it’s the most bandwidth consuming one) 

相关内容