2014-02-11 71 views
2

考虑下面的命令焦油检查点不匹配输入

tar acf file.tar.gz file-5.16 --checkpoint=1 --blocking-factor=50 \ 
    --checkpoint-action='ttyout=%u\r' 

这里是输入文件夹

$ du -bs file-5.16 
2520025 file-5.16 
使用此命令检查站传递每个记录

现在的规模,并在此记录 案件是
50 * 512 bytes = 25,600 bytes。它遵循 2520025/25600 ≈ 98 checkpoints。那么,为什么我会得到

109 

作为输出?

+0

开销?祝你好运。 – shellter

回答

2

首先,您不能只取文件夹中的总字节数并将其分开。您必须使用单个文件。对于每一个文件,你需要

ceil(bytes/512) + 1 = blocks 

的加一,因为每个文件在文件的结尾有一个包含所有零

§ 9.4 Blocking

块有一个额外的块

之后,您添加所有文件的块并除以阻挡因子 在这种情况下50

ceil(blocks/50) = records 

一些演示代码

$ find file-5.16 -type f | 
    xargs du -B512 --apparent-size | 
    perl -MPOSIX -ane '$bk += $F[0]+1; END {print ceil $bk/50}' 
109