我对 Linux 了解甚少,但我想用我们现有的旧服务器构建一个便宜的磁盘复制器。该服务器当前运行的是 Ubuntu 12.04LTS,有 8 个热插拔磁盘托架。理想情况下,这就是我想要的。
我希望任何插入服务器的新磁盘都从主磁盘(比如说 /dev/SDB)进行映像。我知道我可以运行以下命令来启动复制,但我想知道是否有办法自动执行此操作。如果连接/检测到新驱动器,请运行命令以使用新驱动器的变量进行映像。源驱动器将始终是 sdb,而目标理论上将是 /dev/sdc 到 /dev/sdg,具体取决于当时服务器中有多少个驱动器。
命令:
dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde)
如果动作/脚本可以在新硬件/硬盘检测上运行,它可以做这样的事情吗......
if /dev/sdc/ connected/detected
sleep 5 minutes -gives time to connect multiple drives before imaging
Check for /dev/sdc (if /dev/sdc not exist)
-if not connected goto exit
Check for /dev/sdd (if /dev/sdd not exist)
-if not connected command1
Check for /dev/sde (if /dev/sde not exist)
-if not connected command2
and so on
:command1
dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc)
goto exit
:command2
dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd)
goto exit
任何帮助都将不胜感激。我不知道是否有办法在检测到新硬件/驱动器时执行脚本。
答案1
您可以使用 udev 规则来实现这一点(请参阅 man 7 udev)。首先在 /etc/udev/rules.d/ 中创建一个名为 10-disk-imaging.rules 的文件,然后将以下行添加到其中:
KERNEL=="sd[cg]" RUN+="/path/to/dd/script %k"
此行将匹配内核名称为 sdc-g 的任何磁盘,然后运行 /path/to/dd/script %k,其中 %k 是内核指定的设备名称(即 sdc)。然后,只需创建一个接受设备名称并执行实际复制的脚本。