我使用 rsync 备份服务器,但这些备份非常大,我想压缩它们。有没有办法在 rsync 周围使用某种包装器来压缩备份中的文件,从实时文件中同步更改,然后在复制文件后立即重新 gzip 文件?
即如果实时源文件是foo、bar和baz,则备份有foo.gz、bar.gz和baz.gz。
重申:我希望一端是压缩文件,另一端是未压缩文件。我不想在 rsync 之前进行压缩,因为即使使用 --rsyncable,它也会降低 rsync 的效率。我知道 rsync 的 -z 选项。我在备份机器上没有空间来存储所有未压缩的文件。
我不确定我是否理解您要执行的操作,但您可以在主服务器上创建 gzip 备份,以确保它们易于 rsync 并且无需在传输过程中解压缩任何内容。
我认为 rsync 到 fuseCompress 安装的文件系统可能是最好的选择。该项目的历史特别提到他们使用它改进了 rsync 的性能。
http://code.google.com/p/fusecompress/
https://github.com/tex/fusecompress/
您可以为 rsync 编写一个包装器。如果你“拉”数据,没有什么特别的事情要做。如果您想将数据从原始机器“推送”到备份服务器,则使其工作更加微妙:
首先,您必须确保使用与原始 rsync 相同的名称、路径和参数调用包装器,至少对于运行备份的用户而言。
其次,确保不要向标准输出写入任何内容,因为它会破坏通信通道。
第三,一定要传递你得到的所有参数,只是根据新的未压缩目标进行适当的修改。
他可能正在寻找通过 rsync 进行数据传输压缩,而不是另一端的文件压缩。
查看:http: //jimmyg.org/blog/2007/rsync-basics.html
手册页中的压缩参数:
默认情况下,ssh 会在一定程度上进行自己的压缩。我不知道 rsync 比原生 ssh 好多少。如果您的大部分文件已经被压缩成 gzip 文件,那么 rsync 的压缩机制可能不会为您做太多事情。你只能压缩一个文件。