为什么每次后续附加到 tar 存档都会花更长时间?

为什么每次后续附加到 tar 存档都会花更长时间?

我正在构建一个大小为 4.2T 的 tar 存档,增量约为 440Gb。完成每个增量(部分)的时间如下。

Section 1  [486.01 seconds]  
Section 2  [623.42 seconds]  
Section 3  [612.81 seconds]  
Section 4  [622.24 seconds]  
Section 5  [635.72 seconds]  
Section 6  [764.05 seconds]  
Section 7  [1115.31 seconds] 
Section 8  [1226.1 seconds]  
Section 9  [1331.82 seconds] 
Section 10 [1429.07 seconds] 

括号中的时间反映的是写入每个部分所需的时间(即不是累积的)。为什么通常每次后续附加都比前一次花费更长的时间来写入相同数量的数据?这对我来说是一个大问题,因为我必须创建多 TB 的 tar 文件,我想了解瓶颈,以便加快档案的创建和提取速度。

答案1

看来 GNU柏油需要更长的时间,因为它扫描整个原始档案在附加之前。这似乎只应该在 上进行,因为--update大多数代码都是关于删除旧文件版本的,但出于某种原因,它也在 和 上进行--append--catenate(请参阅源代码中的 update_archive() 函数。)

bsdtar来自的命令库存档不会这样做;它只是立即附加新数据。

相关内容