组合 dd 和 pv 时的语法

组合 dd 和 pv 时的语法

在 :

sudo dd if=/dev/sda bs=64k | pv --size 1.5t | dd of=/dev/sdb

dd 的块大小是位于输入后的左侧(如图所示)还是位于输出后的右侧?

使用管道查看器大小选项时,值前面没有等号是否正确?可以使用如上所示的十进制值吗?

答案1

许多问题可能会从审查中受益。

sudo dd if=/dev/sda bs=64k | pv --size 1.5t | dd of=/dev/sdb

首先,您可以(极大地)增加块大小并相应地增加吞吐量。我经常使用bs=32M.参数的顺序并不dd重要,因此:

sudo dd if=/dev/sda bs=1M

--size接下来,指定带或不带等号并不重要。长参数(以双破折号开头的参数)通常并不挑剔。然而,快速尝试表明pv参数必须是整数。所以:

pv --size 1500g

最后,值得为 指定一个大的(输出)缓冲区dd,并且您可能需要以 root 权限运行它。因为我们使用了一个大的缓冲区,所以在尝试将其写出之前,有必要确保我们已将其完全填满。所以你最终会得到这样的结果:

sudo dd of=/dev/sdb bs=1M iflag=fullblock

综合起来,

sudo dd if=/dev/sda bs=1M | pv --size 1500g | sudo dd of=/dev/sdb bs=1M iflag=fullblock

不过,我确实应该指出,在基于 Linux 的系统上,不需要用于dd从磁盘驱动器复制或向磁盘驱动器复制。在此基础上,整个命令链可以简化为:

sudo sh -c 'pv --skip-errors --size 1500g </dev/sda >/dev/sdb'

相关内容