我使用rsync备份服务器,但是这些备份非常大,我想压缩它们。 有没有办法让rsync周围的一些包装gunzip在备份文件,rsync从实时文件的变化,然后重新gzip文件,一旦它被复制?
即如果生活中的源文件是foo , bar和baz ,则备份文件为foo.gz , bar.gz和baz.gz。
重申:我想在一端的压缩文件和在另一端的未压缩的文件。 我不想在rsyncing之前进行压缩,因为即使使用–rsyncable,也会使rsync效率降低。 我知道rsync的-z选项。 我在备份机器上没有空间来存储所有未压缩的文件。
我不确定我是否理解你要做什么,但是你可以在主服务器上创buildgzip备份,确保它们很容易rsyncable,而不会在传输过程中解压任何东西。
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.
我认为rsyncing fuseInpress挂载文件系统可能是最好的select。 该项目的历史明确提到他们改进rsync的性能。
你可以写一个包装到rsync。 如果你“拉”数据,没有什么特别的事情要做。 如果您想将数据从原始机器“推送”到备份服务器,那么使其工作更为微妙:
首先,您必须确保包装器的调用与原始rsync具有相同的名称,path和参数,至less对于运行备份的用户来说是如此。
其次,一定不要写任何标准输出,因为它会破坏沟通渠道。
第三,一定要通过所有你得到的参数,只要修改适当的新的未压缩的目的地。
他可能是通过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的压缩机制可能会为你做的不多。 你只能挤压一个文件这么多。