“tar czf” 与“tar cf - | gzip”:它们不同吗?(或者如何改进备份)

“tar czf” 与“tar cf - | gzip”:它们不同吗?(或者如何改进备份)

我想加快备份速度tar czf,这是常用的方法。但我的备份文件一天天增加,所以速度变慢了。

我正在考虑利用我的服务器中可用的几个核心,并且想知道使用tar czftar 进行备份或通过管道传输到 gzip 之间是否存在区别:tar cf - | gzip

我猜测没有任何区别,因为第一个会产生两个进程(tar 和 gzip),类似于管道。

如果没有区别,你知道有什么好的替代方案可以做到这一点,而无需进行增量吗?我正在看而且看上去也不错。

答案1

当您说要利用多核时,这意味着使用 gzip 的 tar 受 CPU 限制而不是受 IO 限制,您确定是这样吗?如果您不确定,则需要运行 sar、iostat、top 或检查监控图表等来找出答案。在不先理解问题的情况下尝试解决问题永远不是一个好主意。并不是说您肯定是这种情况,但我的猜测是,即使使用 gzip 进行压缩,您也更有可能受 IO 限制。

如果它是 IO 绑定,并且您有多个数组,则每个数组的单独进程可能是有意义的。

我也赞同大卫关于考虑增量的建议。

答案2

tar通过这样的摆弄,你不太可能提高原始性能gzip;为了更好地利用硬件,您可以将文件夹分成不同的部分并同时进行多个存档。

为什么你不想采用增量方式?我建议使用快照即使你在本地执行此操作,它也可以利用硬链接来节省磁盘空间,同时仍保留多次的精确副本

答案3

如果你是 CPU 受限(而不是 IO 受限!),你可以使用。它将把 gzip 分布到多个核心上。我用它来备份。它是 gzip 的替代品:

tar cf - | pigz

相关内容