在 dd 中为输入和输出文件使用变量名称

在 dd 中为输入和输出文件使用变量名称

我正在创建一个 bash 脚本,它允许我克隆磁盘,并允许用户选择要克隆的输入磁盘和要克隆到的输出磁盘。我快说完了,但我刚刚挂断了电话。 dd 无法识别磁盘的变量名称。假设 srcDisk 和 destDisk 被定义为现有磁盘(这些变量在我的脚本中的其他位置调用并与 sfdisk 和 fdisk 等实用程序一起使用),以下是我尝试过的:

    dd if=/dev/$srcDisk of=/dev/$destDisk

我还想知道是否需要指定分区,并且由于分区数量可能会有所不同,因此我尝试了 do Until 循环,其中迭代器变量 (i) 指定分区号。这仍然不起作用:

until [ $i -gt srcPartNum ]
do
    dd if=/dev/$srcDisk$i of=/dev/$destDisk$i conv=notrunc & pid=$!
    while kill -USR1 $pid; do sleep 1; done
done

我不确定如何解决此问题或任何解决方法。

答案1

首先,你的dd速度非常慢。用这个代替

cat "/dev/$srcDisk" >"/dev/$destDisk"

复制时,源磁盘和目标磁盘不得正在使用。

如果没有看到现有脚本的错误消息或其他结果,我无法告诉您为什么dd无法识别您的变量。除了不引用变量之外,您的代码片段在语法上没有任何错误。您可以在复制磁盘时回显变量的值,或者set -x在有问题的代码上方添加一点。

顺便说一句,您是否研究过编写类似 Clonezilla 之类的脚本?

相关内容