Параллельная проверка файла md5
У меня есть файл md5sum, содержащий много строк. Я хочу использовать GNU параллельно для ускорения процесса проверки md5sum. В md5sum, когда файл не вводится, он берет строку md5 из stdin. Я попробовал это:
cat checksums.md5 | parallel md5sum -c {}
Но получаю эту ошибку:
md5sum 445350b414a8031d9dd6b1e68a6f2367 testing.gz: No such file or directory
Как я могу параллельно проверять md5sum?
2 ответа
Предполагая, что checkums.md5 имеет формат:
d41d8cd98f00b204e9800998ecf8427e My file name
Бежать:
cat checksums.md5 | parallel --pipe -N1 md5sum -c
Если ваши файлы маленькие: -N100
Если это не ускорит вашу обработку, убедитесь, что ваши диски достаточно быстрые: md5sum может обрабатывать 500 МБ / с. iostat -dkx 1
может сказать вам, если ваши диски являются узким местом.
Вам нужен вариант --pipe
, В этом режиме параллельное разбиение стандартного ввода на блоки и подача каждого блока в команду через стандартный ввод, см. man parallel
для деталей:
cat checksums.md5 | parallel --pipe md5sum -c -
По умолчанию размер блока составляет 1 МБ, его можно изменить с помощью --block
вариант.