Я пытался отслеживать ход данных в конвейере, особенно в большом скрипте инициализации для сервера 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, а не по количеству, которое выдается?
