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