1

Я пытался отслеживать ход данных в конвейере, особенно в большом скрипте инициализации для сервера Minecraft. Как мне использовать pv для точного определения прогресса?

Я пробовал следующую команду, где $WORLDBACKUPSIZE - это размер папки, для которой выполняется резервное копирование, $path - это путь, в который следует создать резервную копию, а $MCPATH/${WORLDNAME[$INDEX]} - это папка. это должно быть зарезервировано, за исключением того, что pv останавливается на полпути из-за размера, являющегося размером папки, и он считает только сжатые байты, которые проходят через.

Я хочу, чтобы он подсчитывал байты, сжатые в команде tar, поэтому я могу использовать исходный размер в качестве конечной метки для индикатора выполнения. Проще говоря, я пытаюсь оценить папку и отслеживать прогресс с помощью pv . Общий размер, который использует pv чтобы сообщить мне предполагаемый процент, основан на исходном размере, в то время как размер, который он измеряет во время выполнения команды tar, является сжатым размером, поэтому индикатор выполнения останавливается раньше, а процент завершается в конце. в зависимости от размера сжатой папки по сравнению с размером исходной папки.

Команда

WORLDBACKUPSIZE=`du -sk $WORLDSTORAGE/${WORLDNAME[$INDEX]} | cut -f 1`

используется для измерения папки, для которой я хочу создать резервную копию.

Команда

tar -hcjf - $MCPATH/${WORLDNAME[$INDEX]} | pv -reps ${WORLDBACKUPSIZE}k > $path

используется для измерения прогресса. Как бы я переставил это так, чтобы я измерял прогресс по количеству байтов, которые взяты в команду tar, а не по количеству, которое выдается?

1 ответ1

1

Вы можете начать с простого (но не очень хорошего и, возможно, бесполезного использования кошки):

cat "$MCPATH/${WORLDNAME[$INDEX]}" \
| pv -reps "${WORLDBACKUPSIZE}k" \
| tar -hcjf - > $path/somename

Последняя строка может быть tar -hcjf $path/somename , но я держу ее близко к оригиналу, чтобы указать, что я думаю, что имя файла может отсутствовать, если только "путь" не содержит путь И имя файла уже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .