Вы можете использовать tee
для вывода в несколько файлов и подстановки процессов в bash
для перенаправления того, что будет идти в файл на dd
который может записывать данные напрямую на блочное устройство.
Чтобы скопировать из /dev/sda
чтобы сделать его изображение в файле:
dd if=/dev/sda of=./drive.image
И скопировать этот образ на многие диски:
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd
Обратите внимание, что последний элемент - это канал, а не перенаправление, так как tee также отправит свой ввод в стандартный вывод. Вы можете отправить это в /dev /null, если вы хотите сохранить все перенаправления одинаковыми в командной строке, хотя это, очевидно, немного менее эффективно, поскольку вы запускаете дополнительный процесс и отправляете ему дополнительную копию всей информации через труба только чтобы его выбросить
cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/null
хотя эффект производительности, вероятно, будет небольшим по сравнению с общей операцией, действующей на многих USB-накопителях.
Вы также можете скопировать один диск напрямую во многие другие, пропустив файл изображения, хотя наличие файла изображения более эффективно, если вы захотите сделать больше копий позже (или хотите сделать больше копий сейчас, чем вы можете сделать за один раз из-за ограниченного количества или портов):
cat /dev/sda | tee >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/sde
Вы также можете заменить cat
на pv
(вы найдете это в большинстве стандартных репозиториев, если вы еще не установили его, в противном случае вы можете получить его отсюда и скомпилировать его самостоятельно) в приведенном выше примере, чтобы отобразить индикатор прогресса. пока операция копирования продолжается, вот так:
pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | dd of=/dev/null
Важно отметить: в зависимости от того, как подключены ваши USB-накопители и как быстро они могут записывать данные по отдельности, вы можете обнаружить, что это только немного быстрее, чем копирование на каждый накопитель в отдельности. Пропускная способность шины USB или концентратора распределяется между подключенными к нему устройствами, поэтому, если у вас нет нескольких USB-контроллеров, которые станут главным узким местом при работе нескольких дисков (если, конечно, каждый диск не работает медленно, конечно, так как много флэш-памяти Флешки есть). Некоторые материнские платы эффективно имеют несколько контроллеров USB, поэтому даже без дополнительного контроллера может случиться так, что не все ваши порты будут использовать одну и ту же шину, но если вы используете их через концентратор, они определенно будут использовать одну и ту же полосу пропускания ввода / вывода.
Сказав это, даже если процесс мало или не ускоряется вообще с точки зрения времени настенных часов из-за состязания шины, вы все равно получаете преимущество, выполняя это одной командой (с одним индикатором выполнения, если используется pv
).