如果输入大于输出,`dd` 会停止吗?(输出文件是一个分区)

如果输入大于输出,`dd` 会停止吗?(输出文件是一个分区)

我想将一个分区移动到硬盘上的另一个位置,即将的内容sda1移动到sda2,然后我想从启动sda2

首先,我不知道这是否会弄乱分区表或导致无法启动,但我会尝试。这是一个 HFS+ 分区,我还没有体验过它们的行为方式。

忽略这一点,如果我尝试将dd内容从一个分区移到另一个分区(我实际上是将内容放在一个单独的较大分区上的文件中),如果sda2空间不足会发生什么?它会继续运行到驱动器上物理位置的下一个分区,还是会停止并给出错误?

答案1

sda2如果空间不足会发生什么?

如果您使用of=/dev/sda2并且sda2空间不足,dd则将以退出No space left on device。使用特殊文件(例如)的要点之一/dev/sda2是确保您不会在超出其边界的情况下进行读取或写入/dev/sda

生成的文件系统sda2将会损坏,除非它足够小以适合。罕见但文件系统可能比保存它的分区小。只有在这种情况下dd,复制到较小(但足够大)的分区才会复制整个文件系统。

但是如果你使用of=/dev/sdaseek=…来开始写入精确的sda2起始位置,并且如果你的if大于sda2,那么dd很乐意写入超出的末尾sda2,因为它打开了整个sda并且可以访问它的全部。我们使用sdaN抽象来避免此类事故。

答案2

如果你直接输入of=/dev/sda2

分区设备节点由内核根据分区表进行限制,因此超出末尾的所有写入都将返回 -ENOSPC(“设备上没有剩余空间”)。收到任何类型的写入错误后,dd 将停止。

相关内容