Как это выглядит:
$ dumparch ./.thunderbird 202MB 0:01:29 [9,67MB/s] [===> ] 20% ETA 0:05:47
#!/bin/sh DATE=`/bin/date "+%0Y%0m%0d-%0k%0M%0S"` FILE=$1 NAME=`basename $FILE` DSTFILENAME=$DATE-$NAME.tar.gz SRCSIZE=`du -sb $FILE | grep -o '[0-9]*\s'` tar -chzf - $FILE | pv -s $SRCSIZE > $DSTFILENAME
Что происходит? tar отдаёт сжатые данные не в файл, как в оригинале, а через пайп в pv, которая их обрабатывает. Далее уже пайп сливается в файл.
Для того, чтобы pv могла вычислить сколько ей времени осталось через -s передаётся размер, вычисляемый через du.
Правда я потом уже понял, что размер то передаю исходного каталога, а в пайп пихаю сжатые данные, так что оценка получается несколько завышенной. Так что заканчивается как-то так:
$ dumparch ./.thunderbird 1,84GB 0:05:35 [5,62MB/s] [==================================> ] 63%
Правильнее будет сначала tar-ить в пайп без сжатия, потом pv обрабатывать, а потом уже gzip-ом сжимать и сливать в файл. В итоге как-то так:
tar -chf - $FILE | pv -s $SRCSIZE | gzip > $DSTFILENAME
Теперь всё нормально:
$ dumparch ./.thunderbird 2,89GB 0:05:03 [9,72MB/s] [======================================================>] 100%
Комментариев нет:
Отправить комментарий