将备份的压缩方式从 gz 转为 zstd

zstd 现在相当普遍,并且比 gz 压缩效果更好、速度更快。也许值得为备份更改为它。

考虑到世界各地所有的 discourse 实例,这可以大大节省磁盘和传输空间。

Choosing Between gzip, Brotli and zStandard Compression | Paul Calvano.

4 个赞

我认为这确实是个好主意。给这个加上#pr-welcome标签。

2 个赞

我想知道 Discourse 备份[^1] 中可压缩和已压缩数据的平均重量比,以及使用 zstd 能节省多少数据(百分比)。

[^1]:当然,有些论坛非常依赖图片上传,有些甚至不允许文件上传。

这不是同一个功能请求,但它也与备份压缩有关,所以我在这里转载:

如果这个百分比在我所有的 Discourse 论坛上都差不多,我不会感到惊讶。

偶尔,备份过程会因额外负载导致一些可用性问题。因此,我今天用 zstd 做了一个快速实验。

以下是我对同一个 73GiB 的 dump.sql 文件分别使用 gzip(级别 4,与 Discourse 备份一致)和 zstd(默认级别 3,共 19 级)进行压缩的结果:

压缩后体积:缩小了 15.8%(.zst 文件大小为 .gz 的 84%)
压缩时间(-T1):快了 71%(仅为 gzip 时间的 29%)
压缩时间(-T0):快了 89%(仅为 gzip 时间的 11%)

结果因人而异,我并未多次运行测试,而且我的机器(6 核)当时还在处理其他任务,因此并未追求精确数据。不过,我认为这些优势已经很明确了。

我不确定 -T0 是否对所有人都合适,因为为 Discourse 本身预留一些资源似乎是个好主意,因此我使用 -T1 作为示例,以便进行更公平的对比。

这看起来是双赢的局面,很可能也会对 Discourse 的托管基础设施产生显著影响。不过,我还没有能力提交 PR,所以只是分享我的发现。

2 个赞

可以确认,Docker 内部的 tar 支持 --zstd 压缩。

编辑:哎呀,不对。tar 本身支持该功能,但缺少 ‘zstd’ 工具。可以通过 apt-get install 安装。

2 个赞