备份过程会创建一个 tar 文件,然后对其应用 gzip。tar 文件中有两种内容:一个已压缩的 sql 转储和一个 uploads 的内容(如果需要)。在我的例子中,每个上传文件都已压缩:gz、gzip、gif、jpeg、png、zip。因此,最终的 gzip 压缩只会节省 1% 的空间。
我认为最好是要求更少的可用空间。
2016 年的一个先前主题提到了禁用备份压缩,但当时 sql 转储似乎没有被压缩,这改变了权衡。
备份过程会创建一个 tar 文件,然后对其应用 gzip。tar 文件中有两种内容:一个已压缩的 sql 转储和一个 uploads 的内容(如果需要)。在我的例子中,每个上传文件都已压缩:gz、gzip、gif、jpeg、png、zip。因此,最终的 gzip 压缩只会节省 1% 的空间。
我认为最好是要求更少的可用空间。
2016 年的一个先前主题提到了禁用备份压缩,但当时 sql 转储似乎没有被压缩,这改变了权衡。
我已经在开发一种新的备份格式,该格式将消除双重压缩。我希望它能在大约一到两个月内准备就绪。
太棒了@gerhard!
有关于此的任何更新吗?谢谢。
不打扰您太多,但这个项目进展如何?
该功能的开发目前已暂停,并且不在我们当前的路线图中。我希望我们能在 2024 年完成它。
如果我写一个补丁来接受压缩率为 0 以禁用 gzip,你会接受吗?
(我猜想这样做可以节省 CPU 时间,但不会节省空间,因为仍然会创建压缩的 tar 文件。)
我打算节省 CPU 时间。实际上,我曾想过使用 0 作为标志来更改代码路径,使其不进行 gzip 压缩(遗憾的是,据我所知,零并非所有 gzip 版本都支持的有效压缩级别)。
这对我一点帮助都没有!(同样,其他遇到磁盘空间有限问题的用户也一样。)
如果使用了 tar,则可以使用 z 或 j 选项。如果使用了子 shell,tar 的输出可以被管道传输到 gzip。但实际上我认为可能正在使用一些更高级的 Ruby 函数。
咳咳
也许这不应该太难……我很清楚备份和恢复的更改必须非常小心地进行,但我认为只需内联压缩就可以节省大量空间要求,而不会有任何兼容性问题。
来自 tar --help
-a, --auto-compress 使用存档后缀确定压缩
-z, --gzip, --gunzip, --ungzip 通过 gzip 过滤存档
-z 实际上是否执行了就地压缩?我一直认为它只是在 tar 文件完成后运行 gzip。
在这种情况下,这是不明智的!表示未压缩 tar 文件的字节从未写入磁盘。
您是说我们可以简单地添加
"--gzip",
这样就不会要求实际使用数据的两倍空间了?
是的,这是对 tar 命令的更改。