我想将一个分区移动到硬盘上的另一个位置,即将的内容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/sda
和seek=…
来开始写入精确的sda2
起始位置,并且如果你的if
大于sda2
,那么dd
很乐意写入超出的末尾sda2
,因为它打开了整个sda
并且可以访问它的全部。我们使用sdaN
抽象来避免此类事故。
答案2
如果你直接输入of=/dev/sda2
:
分区设备节点由内核根据分区表进行限制,因此超出末尾的所有写入都将返回 -ENOSPC(“设备上没有剩余空间”)。收到任何类型的写入错误后,dd 将停止。