dd 显示随机数量的记录输入/输出

dd 显示随机数量的记录输入/输出

我正在将一些图像写回块设备,dd并得到我以前从未见过的非常奇怪的输出。

# xz -dc goren.img.xz | dd bs=1M of=/dev/storage2/goren
35+2475166 records in
35+2475166 records out
21474836480 bytes (21 GB) copied, 222.912 s, 96.3 MB/s
# xz -dc gronn.img.xz | dd bs=1M of=/dev/storage2/gronn
50+2413782 records in
50+2413782 records out
21474836480 bytes (21 GB) copied, 233.478 s, 92.0 MB/s
# xz -dc grummle.img.xz | dd bs=1M of=/dev/storage2/grummle
63+2443466 records in
63+2443466 records out
21474836480 bytes (21 GB) copied, 222.898 s, 96.3 MB/s
# xz -dc hozen.img.xz | dd bs=1M of=/dev/storage2/hozen
19+2556787 records in
19+2556787 records out
21474836480 bytes (21 GB) copied, 250.989 s, 85.6 MB/s

我期望在每种​​情况下看到的输出(以及创建图像文件时得到的输出)是:

20480+0 records in
20480+0 records out

据我所知,图像写入正确,尽管我担心显示的记录数量。这显然在任何情况下都是不正确的。不过,正如我所说,写入的图像与原始图像匹配,通过文件系统检查等。

我使用 Fedora 21 x86_64 和 coreutils 8.22。

答案1

这些都是不完整的读物。如果您添加iflag=fullblock.它应该消失。

默认情况下,dd如果没有更多可用数据,将很乐意接受来自管道的较小块。使用 iflag,dd将等待直到收集完整的数据块或 EOF。

关于数据一致性,应该没有问题,因此无论哪种方式您都应该得到正确的结果。

问题是你为什么要使用dd,你的例子也可以简化为:

xz -dc goren.img.xz > /dev/storage2/goren

相关内容