Извините, но это невозможно. Из самой bar
файлов:
Synopsis:
'bar' works just like 'cat', but shows a progress bar in ASCII art on stderr.
The script's main function is meant to be usable in any Bourne shell to be
suitable for install scripts without the need for any additional tool.
Проблема в том, что для отображения индикатора выполнения необходимо, чтобы bar
сначала знала размер файла.
Для извлечения архива это не проблема: если backup.tar
имеет размер 100 MiB
и 50 MiB
уже обработано, мы получаем 50 %
.
Тем не менее, для создания архива, bar
читает из стандартного stdin
, который бесконечен для всех практических целей. Как сказано в документации :
Бесконечные потоки не хороши: панель отображается только на 0% и на 100%. [...]
Единственный способ отобразить индикаторы выполнения для целей резервного копирования, о которых я могу подумать (помимо компиляции пользовательской версии tar с bar):
Рассчитать накопленный размер файлов /media/data
.
Создайте backup.tar
и добавьте файлы из /media/data
один за другим.
После каждого файла рассчитайте текущий процент и отобразите его.
gzip backup.tar
(вы можете использовать tar
для этого).
Пример:
TOTAL=$(du -b /media/data | grep -oP "^\d+")
CURRENT=0
echo "Archiving:"
IFS="
"
for FILE in $(find /media/data -type f); do
tar rf backup.tar $FILE
CURRENT=$(($CURRENT+$(du -b $FILE | grep -oP "^\d+")))
echo -en "\r"$((100*($CURRENT-1)/$TOTAL+1))"%"
done
echo
echo "Compressing:"
bar backup.tar | gzip > backup.tar.gz
rm backup.tar
Внимание:
- Это, вероятно, замедлит процесс резервного копирования.
- Имена файлов не могут содержать символы новой строки.