Linux 带覆盖的DD命令

Linux 带覆盖的DD命令,linux,unix,Linux,Unix,我有一个关于dd命令的问题, 上周我使用了以下表格: sudo dd if=system.img of=/dev/sdb2 bs=1M # system.img has 512MB 但是我的图像发生了一些变化,我不得不再次运行相同的命令,我得到了答案: 512 + 0 records in 512 + 0 records out 536870912 bytes (537 MB, 512 MiB) copied, 40.8683 s, 13.1 MB/s 以前的图像是否在SD中被覆盖? 为什么

我有一个关于dd命令的问题, 上周我使用了以下表格:

sudo dd if=system.img of=/dev/sdb2 bs=1M
# system.img has 512MB
但是我的图像发生了一些变化,我不得不再次运行相同的命令,我得到了答案:

512 + 0 records in
512 + 0 records out
536870912 bytes (537 MB, 512 MiB) copied, 40.8683 s, 13.1 MB/s
以前的图像是否在SD中被覆盖?
为什么会有537 MB的结果?

您的两个问题是:

以前的图像是否在SD中被覆盖

是的,否则你会收到某种错误信息。当然,SD卡设备驱动程序可能会报告成功,即使它没有写入数据,但这将是一个非常无用的设备驱动程序,因此不太可能:-)

为什么会出现537MB的结果

在IT世界中,512兆字节通常是
512*1024*1024
,或者
536870912
字节(尽管有人坚持使用类似于婴儿语的术语,比如二进制术语“kibibytes”)。通常通过使用的数字可以清楚地看到。如果它是2的幂(比如512),那么“兆字节”指的是220字节而不是106字节是相当安全的

其根本原因是,ISO将
kilo
等术语定义为1000的意思,而不太赞同我们(错误地)将该术语定义为1024的意思,因此磁盘制造商可能会声称他们的磁盘比实际尺寸大:-)

然后,
dd
实用程序将其报告为四舍五入的基于十进制和基于二进制的术语:

537MB   512MiB

谢谢@IgnacioVazquez Abram,你完全无法解释,祝贺你。这是用户对
dd
的支持,不是编程问题。@melpomene,怎么了?我发布了编程标签?查找IEEE的定义。你的图像是512兆字节=537兆字节。
dd
会覆盖输出文件,是的。使用“兆”表示1024*1024几乎完全是RAM。磁盘制造商使用实兆字节(1000*1000),网络带宽也使用实兆字节(例如,56 kb/s=56000 bit/s)。你的“在IT世界”的说法有点宽泛。@melpomene,磁盘制造商最初也使用二进制版本,直到营销机器人淘汰了技术人员。在任何情况下,如果你使用像512这样的数字,它几乎肯定是二进制变量,因为它是一个整数,不同于537或500:-),但我将编辑答案以考虑你的评论。