Bash tar检查点与输入不匹配
考虑以下命令Bash tar检查点与输入不匹配,bash,tar,Bash,Tar,考虑以下命令 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字节=25600字节。因此 2520025/25600≈ 98个检查点。那为什么我会变得 109 作为
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字节=25600字节
。因此
2520025/25600≈ 98个检查点
。那为什么我会变得
109
作为输出?开始时,您不能只获取文件夹中的总字节数并将其除以。你 必须处理单个文件。对于您需要的每个文件
ceil(bytes / 512) + 1 = blocks
加号是因为每个文件都有一个额外的块
在文件的末尾有一个包含所有零的块
然后为所有文件添加块并除以块系数,
在这种情况下,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