I spent last night writing a GNOME application to duplicate a ton of USB devices. I looked at mdcp, Clonezilla and also just writing something loopy in bash, but I need something simple my dad could use for a couple of hours a week without help.
It’s going to be super useful for me when I start sending our LiveUSB disks in the ColorHug box (rather than LiveCDs) and possibly useful to other people just wanting to copy a USB drive for QA testing on a small group of people, a XFCE live CD of Fedora rawhide for a code sprint, and that kind of thing.
GNOME MultiWriter allows you to write and verify an ISO file to up to 20 USB devices at once.
Bugs (and especially pull requests) accepted on GitHub; if there’s sufficient interest I’ll move the project to git.gnome.org after a few releases.
Looks good! Why the 20 devices limit though? That’s seems rather random.
I’ve been testing with 10 devices, and it really starts to hammer the I/O subsystem as you make things more-and-more parallel. I’m just not sure more than 20 at one time is going to be any faster than just doing them 10 at a time. If you’ve got a usecase for this many drives I can look into just doing 10 at a time over the entire set.
https://github.com/hughsie/gnome-multi-writer/commit/891e0d34574c0ed2ed211d2e3483d5d8fe3fffdd
> I’ve been testing with 10 devices, and it really starts to hammer the I/O subsystem as you make things more-and-more parallel. I’m just not sure more than 20 at one time is going to be any faster than just doing them 10 at a time. If you’ve got a usecase for this many drives I can look into just doing 10 at a time over the entire set.
Or even being smarter, and start writing to N drives (N being 5), then adding one by one with intervals of Y seconds (Y being 30), and stop when the total write speed is lower than previously.
Obviosuly that might be just too complex for a simple program… Who has 20 USB ports anyway (unless you have a large desktop and some hubs).
Alternatively it could be a configurable thing (although would break the simplicity of the app…)
I think run-time profiling of throughput is a very good idea. Can you open an issue in github please? Thanks.
RIAA call in 5.. 4.. .. ..
Do you do anything to deal with USB bus saturation? In making a pile-o-thumbdrives I’ve experienced that once you get past writing a couple of devices throughput goes into the toilet – at least with standard desktop hardware? Do you interleave, rest, etc… anything to deal with that? Performance drops off pretty fast as you add more devices.
For my own use-case I’m planning to use more than one USB root device (i.e. using a PCIe extender card too) and multiple 10x USB hubs. I’ve not done much profiling yet (I’m waiting for the shipment of drives from China) but I’m expecting there to be lots of low hanging fruit, e.g. doing write123, then verify123,write456 then verify456,write789 then verify789.
This helps a lot: https://git.gnome.org/browse/gnome-multi-writer/commit/?id=6940b7024027787f4cf58bd9dc658649afe5c2ef
Hi,
I want to know if https://aur.archlinux.org/packages/gnome-multi-writer-git/ is trusted.
Thanks.
No idea, I don’t use arch, sorry.