在这种情况下,剩余的空间会发生什么sdb
?我认为dd
会在开始时写入数据,替换分区表,而可用空间将保持不变(不可用)。
sda
= 10 GB
sdb
= 15 GB
dd if=/dev/sda of=/dev/sdb
我知道可用空间不可用,在运行 dd 之前必须有人将其分区为正确的大小。在这种情况下,我不在乎可用空间。我正在寻找我的问题的技术答案。比如在数据取证层面。
答案1
您的命令将获取 的全部内容/dev/sda
并(缓慢地)将其写入 的第一部分/dev/sdb
。 的其余部分/dev/sdb
将保持不变。
实际上,使用dd
您编写的命令将受到每次 512 字节读/写重复系统调用的限制。通过增加缓冲区大小甚至仅使用,您将获得显著更好的性能cat
。复制不会有任何区别:
cat /dev/sda >/dev/sdb
您可以通过创建更小的环回设备来测试这些行为
dd if=/dev/zero bs=1M count=100 >/tmp/100M.img
dd if=/dev/urandom bs=1M count=150 >/tmp/150M.img
lda=$(losetup --find --show); echo device $lda
ldb=$(losetup --find --show); echo device $ldb
# Try your commands here
dd if=$lda of=$ldb
现在您可以看到有多少$ldb
被覆盖了$lda