我使用 rsync 备份了服务器,但这些备份非常大,我想压缩它们。有没有办法让 rsync 周围有某种包装器来 gunzip 备份中的文件,rsync 实时文件中的更改,然后在复制文件后立即重新 gzip 文件?
例如,如果直播中的源文件是富,酒吧和巴兹,备份有foo.gz,酒吧和巴兹。
重申一下:我想要一端有压缩文件,另一端有未压缩文件。我不想在 rsyncing 之前进行压缩,因为即使使用 --rsyncable,也会降低 rsync 的效率。我知道 rsync 的 -z 选项。备份机器上没有足够的空间来存储所有未压缩的文件。
答案1
我不确定我是否理解您在做什么,但您可以在主服务器上创建 gzip 压缩备份,以确保它们可以轻松进行 rsync,并且不必在传输过程中解压缩任何内容。
gzip(1)
--rsyncable
While compressing, synchronize the output occasionally based on
the input. This increases size by less than 1 percent most
cases, but means that the rsync(1) program can much more effi‐
ciently synchronize files compressed with this flag. gunzip
cannot tell the difference between a compressed file created
with this option, and one created without it.
答案2
我认为 rsyncing 到 fuseCompress 挂载的文件系统可能是最佳选择。该项目的历史记录特别提到他们通过它改进了 rsync 的性能。
答案3
您可以为 rsync 编写一个包装器。如果您“拉”数据,则无需执行任何特殊操作。如果您想将数据从原始机器“推送”到备份服务器,则使其工作更加精细:
首先,您必须确保包装器使用与原始 rsync 相同的名称、路径和参数来调用,至少对于运行备份的用户而言。
其次,请确保不要将任何内容写入标准输出,因为这会破坏通信渠道。
第三,确保传递您获得的所有参数,并根据新解压缩的目标进行适当修改。
答案4
他可能正在寻找通过 rsync 进行数据传输压缩,而不是另一端的文件压缩。
查看: http://jimmyg.org/blog/2007/rsync-basics.html
来自手册页的压缩参数:
-z, --compress compress file data during the transfer
--compress-level=NUM explicitly set compression level
默认情况下,ssh 会在一定程度上自行进行压缩。我不知道 rsync 比原生 ssh 好多少。如果您的大多数文件已经压缩为 gzip 文件,那么 rsync 的压缩机制可能对您无能为力。您只能压缩文件到一定程度。