我有两块硬盘:第一块 150gb ( /dev/sdc
),使用了 30gb,第二块 100gb ( /dev/sdd
)。有sdc1
和sdd1
个分区,格式相同。
我想将第一个磁盘上的 30gb 克隆到第二个磁盘大小有差异。最好的方法是什么?用dd
还是用克隆cat
?
两种可能性:
从sdc
磁盘:
dd if=/dev/sdc of=/dev/sdd
cat /dev/sdc >/dev/sdd
从sdc1
分区:
dd if=/dev/sdc1 of=/dev/sdd1
cat /dev/sdc1 >/dev/sdd1
其他问题:
假设/dev/sdd1
已经存在数据,我可以覆盖它吗?
这会导致硬盘某个扇区出现错误吗/dev/sdd
?
答案1
因为你在做分区克隆那么要使用的选项是:
dd if=/dev/sdc1 of=/dev/sdd1
cat /dev/sdc1 >/dev/sdd1
现在命令使用取决于你想实现什么:
cat
优点:- 快速地
- 擅长处理文本文件
- 将分区的内容复制到新的未格式化的分区
dd
优点:- 有更多选择
- 很好地处理二进制文件
- 可用于复制 n 个字节或跳过/查找
- 允许您指定块大小
需要考虑的事项:
- 确保两者源和目标分区大小相同。一般来说,如果您只想复制,那么
cat
就可以了,但对于更多选项来说dd
就足够了。 - 数据将被覆盖
cat
,但dd
可以避免这种情况(man dd 了解更多信息)
附加信息:
- http://www.tecmint.com/backup-or-clone-linux-partitions-using-cat-command/
- https://unix.stackexchange.com/questions/12532/dd-vs-cat-is-dd-still-relevant-these-days/12538#12538
- 我该如何加速完整磁盘 dd 的速度?
- https://superuser.com/questions/692588/can-cat-be-us-to-clone-a-partition
重要的:
无法将 150GB 分区克隆到较小的 100GB 目标驱动器*。您要么想将较小的数据(例如 30GB)复制到新分区,要么必须先缩小较大的(150GB)分区,然后再克隆。否则,在克隆尝试期间,您将截断超出目标驱动器容量的所有内容。
*在某些特殊情况下它可能会起作用,但不值得考虑。