Linux dd 相同块结果不同的问题

Linux dd 相同块结果不同的问题

我尝试使用 dd 命令在 Linux 操作系统上运行简单的测试用例。

我使用以下命令创建一个简单的磁盘映像:

dd if=/dev/urandom of=disk.img bs=1M count=100 

这是第一次测试:
现在我运行这个命令:

dd if=disk.img of=output_1 bs=1k count=4
dd if=disk.img of=output_2 bs=4k count=1
md5sum output_1 output_2 
bc0245c10ff529042fd2a5335ed1573f  output_1
bc0245c10ff529042fd2a5335ed1573f  output_2   

你可以看到output_1output_2完全相同的 md5 哈希值。

这是第二次测试:
现在我将skip参数添加到dd命令:

dd if=disk.img of=output_1 skip=1500 bs=1k count=4 
dd if=disk.img of=output_2 skip=1500 bs=4k count=1
c5b0e8dde317c25011b31a5c48580477  output_1
4585d39fcf93cec4abc6c55094aac724  output_2    

为什么这个块的结果不同?
我的测试的哪一部分是错误的?

答案1

跳过参数位于(输入)块中,而不是字节中,如手册页

skip=N    skip N ibs-sized blocks at start of input

在第一种情况下,跳过的部分是:

1500 * 1KiB = 1536000 字节

第二种情况:

1500 * 4KiB = 6144000 字节

只要所涉及的值能够精确划分,就可以进行调整。对于第二种情况,使用 1500*1k/4k=375 ( skip=375) 将返回与第一种情况相同的结果。

相关内容