为什么dd会创建一个34MB的文件,bs=1G?

为什么dd会创建一个34MB的文件,bs=1G?

当输入命令时:

dd if=/dev/urandom of=outputfile bs=1G count=1

如果我理解正确的话,我应该会收到一个 1GB 大小的文件。

然而,我收到了包含以下值的文件:

33554431 bytes (34 MB, 32 MiB) copied, 0.27126 s, 124 MB/s

这是为什么?

在它工作的系统上我收到:

1+0 Records in
1+0 Records out

文件最终大小为 34MB,我收到:

0+1 Records in
0+1 Records out

答案1

设备/dev/urandom暂时返回零字节(没有更多数据)。该dd实用程序将其视为 EOF 并停止。因为您知道这/dev/urandom会生成更多随机数据,所以您需要告诉dd重新尝试读取输入:

dd if=/dev/urandom iflag=fullblock bs=1G count=1

当从工具读取数据(例如以非块大小的单元写入数据)iflag=fullblock时,也需要该标志。zcat

相关内容