Я работаю над сценарием bash для копирования файлов с одного USB-накопителя на несколько других.
В настоящее время я использую rsync, который копирует из источника в одно место назначения, просматривая все выходные диски в цикле по одному:
for line in $(cat output_drives_list); do
rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/
done
Я пытаюсь оптимизировать процесс, чтобы максимально использовать пропускная способность USB, избегая узкого места, связанного со скоростью записи одного диска.
Можно ли сделать что-то вроде rsync, но с несколькими выходными каталогами, которые будут записывать на все выходные диски одновременно, но читать только один раз со входа?
Я предполагаю, что некоторые из этих вопросов уже решены. системным кешем, но он оптимизируется только для чтения.
Если я запускаю несколько процессов rsync параллельно, это может оптимизировать скорость записи, но я также боюсь, что это снизит скорость чтения.
Нужно ли мне заботиться об однократном чтении при параллельном копировании?
Я не могу проверить это, но если вы запустите больше процессов в фоновом режиме, это может быть решением:
START=$(date +%s)
for line in $(cat output_drives_list); do
rsync -ah --progress --delete mountpoints/SOURCE/ mountpoints/$line/ &
done
jobs # get a list of running jobs
wait # wait for all processes to complete
sync
echo It took: $(( $(date +%s)-START )) seconds
Изменить:
Добавлен date
-stuff после того, как было упомянуто «тестирование».
Скорость чтения будет вашим самым большим узким местом для записи назначения.
В зависимости от размера исходного диска, как насчет создания RAM-диска на копировальном аппарате, кэширования ваших файлов в нем и последующего копирования оттуда в несколько мест назначения с использованием параллельных процессов, как @hschou демонстрирует выше?
Как сделать создать «настоящий» RAM-диск, который резервирует память
Чтение RAM всегда будет быстрее, чем несколько случайных обращений к Flash или SSD, даже если часть RAM-диска оказывается замененной на локальный физический диск.