如果我使用“dd”命令从块设备(比如 8 GB)复制到 16 GB 块设备,那么第一个设备的内容会被复制到第二个设备,直到它满了?(也就是说,直到 16GB 满了,也就是 2 次)还是只有第一个设备的内容被复制到第二个设备 1 次?
如果我将 6GB .iso 映像复制到 8GB 设备,是否会发生同样的事情?也就是说,在这种情况下,它将复制整个 .iso 文件一次,然后仅复制该文件的 2GB?
如果确实如此,为什么我们在创建设备副本时通常不指定bs
和选项,如下所示: ?从逻辑上讲,它应该不断复制到无限远,但是它没有,而是创建了一个与 USB 记忆棒大小完全相同的文件。count
sudo dd if=/dev/sdc of=image.iso
答案1
dd
将继续复制,直到满足以下三个条件之一
- 读取时收到错误 - 源设备没有更多块可读取
- 写入时收到错误 - 目标设备没有更多可写入的块
count
它达到了块大小的块数bs
前两个条件优先于第三个条件。如果其中任何一个先满足,程序就会退出。
所以:
- 如果您有一个 6GB 的源并将其复制到 8GB 的目标,那么它将复制 6GB 的数据并停止。
- 如果您有 16GB 的源和 8GB 的目标,那么它将复制 8GB 的数据然后停止。
- 如果您告诉它复制 4,096,000 个 1024 字节的块,那么它将复制 4GB 的数据,除非它到达源或目标设备的末尾,在这种情况下它将仅复制
size
源或目标的数据。