rsync 到文件的压缩档案

rsync 到文件的压缩档案

我使用 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 的性能。

http://code.google.com/p/fusecompress/

https://github.com/tex/fusecompress/

答案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 的压缩机制可能对您无能为力。您只能压缩文件到一定程度。

相关内容