rsync 一个已经压缩的文件

use*_*586 4 compression rsync

如果输入文件已经被 gzip 压缩, rysnc -z 是否有任何压缩优势?我有一个 100GB 的大压缩文件要通过网络跨服务器发送,并且在不同的时间后始终失败(管道损坏)。想知道我是否应该尝试 -z 标志。

rea*_*eek 9

在传输过程中压缩已经压缩的文件通常不值得 CPU 时间。有警告。在比较两个文件的过程中,使用rsync和compression可以加快数据hash的比较。

如果您只想在多个系统上同步大文件的压缩版本,那么可以查看某些 gzip 版本。在 Ubuntu 系统上,我得到:

$ gzip -h
用法:gzip [选项]... [文件]...
压缩或解压缩文件(默认情况下,就地压缩文件)。

长选项的强制性参数对于短选项也是强制性的。

  -c, --stdout 写入标准输出,保持原始文件不变
  -d, --decompress 解压
  -f, --force 强制覆盖输出文件并压缩链接
  -h, --help 提供此帮助
  -l, --list 列出压缩文件内容
  -L, --license 显示软件许可证
  -n, --no-name 不保存或恢复原始名称和时间戳
  -N, --name 保存或恢复原始名称和时间戳
  -q, --quiet 禁止所有警告
  -r, --recursive 在目录上递归操作
  -S, --suffix=SUF 在压缩文件上使用后缀 SUF
  -t, --test 测试压缩文件完整性
  -v, --verbose 详细模式
  -V, --version 显示版本号
  -1, --fast 压缩得更快
  -9, --best 压缩得更好
    --rsyncable 制作 rsync 友好的存档

没有 FILE 或 FILE 为 - 时,读取标准输入。

向 报告错误。

注意到那个--rsyncable选项了吗?它避免使用自适应压缩,因此当源文件只有很小的变化时,只更改压缩文件的一小部分。二进制数据的其余部分保持不变,因此 rsync 不需要重新传输整个内容。手册页表明,与不使用该选项相比,此选项不应使压缩文件的大小增加超过 1% 左右,并且 gunzip 不知道其中的区别。

我有一个 468MB 的 sql 文件,我使用--rsyncable选项将其压缩为 57MB 。我将此文件传输到我的本地系统。然后我在远程系统上的原始 sql 文件中添加一行注释,并使用 rsyncable 选项重新压缩。

$ rsync -avvz --progress -h fooboo:foo.sql.gz 。
使用 ssh fooboo rsync --server --sender -vvlogDtprz 打开连接。foo.sql.gz
接收文件列表... 
1个文件要考虑
启用增量传输
foo.sql.gz
      59.64M 100% 43.22MB/s 0:00:01 (xfer#1, to-check=0/1)
总计:匹配数=7723 hash_hits=9468 false_alarms=0 数据=22366

发送 54.12K 字节 接收 22.58K 字节 17.05K 字节/秒
总大小为 59.64M 加速为 777.59

不错。Rsync 只需传输少量较新的压缩文件。