Параллельная проверка файла 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 вариант.

Другие вопросы по тегам