linux - DD 图像大于源图像

标签 linux backup cloning dd

我使用 dd 在我的磁盘/dev/sda 上创建了一个镜像文件,fdisk 表示它的大小为 500107862016 字节。生成的图像文件大小为 500108886016 字节,正好大了 1024000 字节。

  1. 为什么镜像文件比我的源盘大1MB?是否与我在 dd 命令中指定 bs=1M 有关?
  2. 当我将镜像文件恢复到另一个相同的磁盘上时,出现“dd:写入‘/dev/sda’时出错:设备上没有剩余空间”错误。这是一个问题吗?我的新磁盘会损坏吗?

最佳答案

conv=noerror 使 dd(1) 在读取错误后继续,这不是您想要的。此外,conv=sync 会用零填充不完整的 block (主要是最后一个 block )以填充完整的 block ,因此向最后一个 block 附加零可能是导致文件大于实际磁盘大小的原因。

您不需要使用您使用过的任何conv选项。不会进行任何转换,并且 dd(1) 将写入不完整的最后一个 block ,以防图像没有完整的 block 大小(就是这种情况)

只需重试您的命令:

dd if=/dev/sda of=yourfile.img

然后

dd if=yourfile.img of=/dev/sdb

如果您计划使用更大的缓冲区大小(不需要,因为您使用的是 block 设备,并且内核不会为读取 block 设备强加 block 大小),只需使用扇区大小的倍数,即整个磁盘大小的除数(类似于一个完整磁道——荒谬,因为当今的磁盘磁道完全符合逻辑,与实际磁盘几何形状没有任何关系)

关于linux - DD 图像大于源图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37259640/

相关文章:

php - UTF-8贯穿始终

backup - riak单桶备份解决方案

asp.net-mvc - 是否可以复制/克隆 Web 请求的 HttpContext

linux - 我需要在docker中创建多主机网络吗?

linux - linux上的bash脚本创建ATM机系统

mysql - 如何将所有表导出到单独的 sql 文件中

android - 在包“android”中找不到属性 'fullBackupContent' 的资源标识符

Java 返回副本以隐藏 future 的更改

java - 如何正确覆盖克隆方法?

linux - 当 nginx 给出 502 bad gateway 时如何调试?