Desculpe, mas isso não é possível. Do arquivo bar
em si:
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.
O problema é que, para exibir a barra de progresso, bar
precisa conhecer o tamanho do arquivo primeiro.
Para extrair uma tentativa, isso não é problema: se backup.tar
for 100 MiB
big e 50 MiB
tiverem sido processados até agora, estaremos em 50 %
.
No entanto, para criar uma tentativa, bar
lê a partir de stdin
, que é infinita para todos os fins práticos. Como a documentação diz:
Infinite streams are not nice: the bar is only displayed at 0% and at 100%. [...]
A única maneira de exibir barras de progresso para fins de backup que eu possa imaginar (além de compilar uma versão personalizada de tar com barra ) é:
-
Calcule o tamanho acumulado dos arquivos
/media/data
. -
Crie
backup.tar
e anexe os arquivos de/media/data
, um por um. -
Após cada arquivo, calcule a porcentagem atual e exiba-a.
-
gzip
backup.tar
(você pode usartar
para isso).
Exemplo:
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
Cuidado:
- Isso provavelmente reduzirá o progresso do backup.
- Nomes de arquivo não podem conter caracteres de nova linha.