![.Tar.gz: 压缩和解压的时间有关系吗?](https://linux22.com/image/1533629/.Tar.gz%3A%20%E5%8E%8B%E7%BC%A9%E5%92%8C%E8%A7%A3%E5%8E%8B%E7%9A%84%E6%97%B6%E9%97%B4%E6%9C%89%E5%85%B3%E7%B3%BB%E5%90%97%EF%BC%9F.png)
我正在将 mongodb 的备份(约 500GB)压缩成 .tar.gz 存档,这需要几个小时的时间。为了进行测试,我尝试将该数据库备份到不同的机器上,我想估算一下每台机器需要多长时间。
我的问题是,根据压缩所花的时间来估算解压缩档案所需的时间有什么方法吗?
谢谢
答案1
我不知道压缩和解压的标准比率,因为这实际上取决于您的数据和服务器资源。假设所有其他资源都相同,解压通常更快,因为涉及的计算工作较少。您的最坏情况估计可能与初始压缩时间相同。
然而,为了轻松获胜,我建议使用pigz
gzip
,这是一种利用多个处理器和内核的并行实现。除非您只有一个内核可用,否则pigz
应该可以大大减少压缩和解压缩的时间。
使用示例tar
:
tar -c --use-compress-program=pigz -f data.tgz /path/to/data
有关更多示例,请参阅StackOverflow:利用多核进行 tar+gzip/bzip 压缩/解压缩。
答案2
同一台机器上没有确定的比例,使用多台机器(不同类型的机器)肯定会产生影响。压缩和解压缩会积极涉及数据存储(例如“硬盘”或“SSD”)、处理器和其他组件(如内存)。
概括地说,解压速度非常快,甚至可能比复制未压缩的数据量更快。压缩也可以同样快,对于 RLE 压缩之类的压缩来说可能就是这样。对于 zip 和 gzip,常见的实现比解压慢,如果您选择更激进的压缩选项(可能需要 2-4 倍的时间),您通常可以再挤出 5%-15% 的压缩效率。
差异很大程度上是因为压缩涉及一些测试(有时被认为是“猜测”),而有些测试毫无结果。相比之下,减压通常只是遵循预先设定的过程,因此相对较快。