Closed OptiJava closed 1 year ago
能提供一下需求场景吗?虽然加个压缩等级参数没啥问题,但 QBM 这个插件并非是专注于压缩打包的备份插件。有什么场景是需要调整压缩等级的吗
感觉最主要的需求场景是磁盘比较小(比如我们服),但是又希望槽位稍微多一点,有调整压缩率这个配置项的话就可以把压缩率调到更高缓解磁盘压力,尽管这样会大幅增加备份时间
如果觉得备份时间太长,磁盘不那么紧张,但是磁盘大小又不足以支撑plain
或者tar
备份格式的话,也可以适当调小压缩率缩短备份时间以及缓解压缩带来的卡顿
个人感觉加上了这个之后可定制化程度高一点,能更好的满足各个环境的需求,也可以有针对性的调优((
除了调整压缩级别,还能调整压缩算法来控制存档体积。得做一波测试来验证实际表现
背景知识:python 的 tarfile 库支持 3 种压缩算法:gz
、bz2
、xz
。其中,gz
、bz2
压缩算法支持调节压缩等级,范围是 1 ~ 9。在默认参数下,tarfile.open
会使用最高等级的压缩等级 9 进行压缩。
对一个 7.7 GiB 的存档进行压缩测试,结果如下:
mode | level | time | ratio |
---|---|---|---|
w | 16.28s | 100.23% | |
w:gz | 1 | 129.4s | 62.76% |
w:gz | 6 | 152.28s | 62.55% |
w:gz | 9 | 184.55s | 62.52% |
w:bz2 | 1 | 519.24s | 62.70% |
w:bz2 | 9 | 521.14s | 62.05% |
w:xz | 1807.81s | 61.11% |
硬件:i7-11800H,频率大概在 3.9~4.0GHz;SN730 1T
没有重复测试,结果不一定精准,但是能看出量级
可见:
gz
压缩等级调成 1 能有效减少压缩耗时,并且压缩率也不会升高很多bz
压缩算法不如 gz
压缩算法xz
最慢,慢非常多,也压缩率也最低,但比 gz
也低不了太多计划修改:
compress_level
,默认值为 1。仅在 backup_format
为 tar_gz
时有效back_format
支持 tar_xz
,如果真的有人想用存在比 gzip、lzma 更加优秀的压缩算法是很正常的现象,但需要注意,本插件并非一个专注于高质量压缩算法的插件,选择压缩算法更看重易用性和兼容性,因此这一类压缩算法不作考虑
嗯(
就相当于在命令行中的
gzip -[1-9] xxxx
(我是萌新有说错的谅解一下,谢谢