Need to copy a VM image to multiple external hard drives. How can I automate this?
August 13, 2007 11:10 AM   Subscribe

Need to copy a VM image to multiple external hard drives. How can I automate this?

My company offers product training as a service to our customers. This training is very hands-on, so instead of installing our product on each of our trainee's machines, we install our product on a VMWare Virtual Machine which contains all of our training material, software, etc. We then put the virtual machine image on external hard drives and hand them out to the class so they can just plug in and start. The problem is that we have a class of 50 trainee's coming up and therefore need 50 external hard drives loaded with the same virtual image. Currently, we've been just copying the image to each hard drive one by one.

Is there a device out there that can automate the process of copying our virtual image to 50 external hard drives? We toyed with the idea of getting a giant USB hub but the largest we've found only has 7 usb ports. How would you do this?
posted by deeman to Computers & Internet (7 answers total)
I'd get as many hubs as actually work and write a simple script to copy to each one in turn, then swap out for the next batch and repeat.
posted by Tomorrowful at 11:31 AM on August 13, 2007

I am not sure about what else is out there, but you can hub you hub. (plug more than 1 hub into your hub and extend it that way) Not the best idea, but if your have might be the best.
posted by photodegas at 11:35 AM on August 13, 2007

This sounds like something for which you might use Norton Ghost. A few of those USB ports plus a couple of linux machines running simultaneous rsyncs might do it, too. Is an entire external HD necessary? What about putting the whole image on a DVD-ROM?
posted by jquinby at 11:35 AM on August 13, 2007

jquinby: I'm no expert on virtualization, but I'm pretty sure they need write-access to function, since they consist of virtual hard drives.
posted by Tomorrowful at 11:41 AM on August 13, 2007

I would personally do this with Linux and a perl script.

I would have a host directory (/home/sirstan/to-copy/). The perl script would scan the USB bus for a new harddrive (since they all have different serial numbers), and mount the new one. It would email me the serial # and that it had started. It would then copy the files, and then unmount the drive, and email me again the serial #. Perhaps even a console print out...


I would then use as many USB ports as the machine has (ie, 4) to copy to the drives. Use a simple beep, or mpg123 to play a done sound, and have someone in the office hookup the next set of drives.
posted by SirStan at 11:44 AM on August 13, 2007

You could also do something with simple batch files... have a scheduled task check every drive letter (other than C:) for a drive every 5 seconds. If letter:\done.txt doesnt exist, and letter:\start.txt doesnt exist, wait 5 seconds, if start.txt doesnt exist still, spawn copyfiles.bat, which drops a start.txt, xcopy's all the files to the drive. when its done, writes done.txt, deletes start.txt, and then spawns winamp to play done.mp3.
posted by SirStan at 11:46 AM on August 13, 2007

Sounds like you could use VMware Lab Manager (formerly Akimbi, now acquired by VMware), it's tailored to trainings situations like the one you're in. If you do this kind of training frequently it really is a lot more useful then constantly switching usb drives.

If you want to DIY, a hub or something is not really going to increase your speed, as you are still limited to the bus speed of your usb controller and whatnot. The fastest way to go for your current situation is probably just use multiple pc's as "masters" to copy from.
posted by lodev at 12:20 PM on August 13, 2007

« Older Why did black audiences watch "Boy Meets World"?   |   managing ideas Newer »
This thread is closed to new comments.