Pv - Mostrar progresso para dados de [cópia/backup/compactação] no Linux
Ao fazer backups e copiar/mover arquivos grandes em seu sistema Linux, você pode querer monitorar o progresso de uma operação em andamento. Muitas ferramentas de terminal não possuem a funcionalidade que permite visualizar informações de progresso quando um comando está sendo executado em um pipe.
Neste artigo, veremos um comando importante do Linux/Unix chamado pv – Pipe Viewer.
Pv é uma ferramenta baseada em terminal que permite monitorar o progresso dos dados que estão sendo enviados através de um canal. Ao usar o comando pv, você terá uma exibição visual das seguintes informações:
- O tempo que passou.
- A porcentagem concluída inclui uma barra de progresso.
- Mostra a taxa de transferência atual.
- O total de dados transferidos.
- e o ETA (Tempo estimado).
Como instalar o comando pv no Linux?
O comando pv não é instalado por padrão na maioria das distribuições Linux, portanto você pode instalá-lo seguindo as etapas abaixo.
Instale pv em Linux baseado em RHEL
Primeiro, você precisa ativar o repositório EPEL e, em seguida, executar o seguinte comando yum ou dnf para instalá-lo.
yum install pv
OR
dnf install pv
Instale pv no Linux baseado em Debian
sudo apt-get install pv
Instale pv em outras distribuições Linux
sudo emerge -a pv [On Gentoo Linux]
sudo apk add pv [On Alpine Linux]
sudo pacman -S pv [On Arch Linux]
sudo zypper install pv [On OpenSUSE]
Como faço para usar o comando pv no Linux?
pv é usado principalmente com outros programas que não possuem a capacidade de monitorar o progresso de uma operação em andamento. Você pode usá-lo colocando-o em um pipeline entre dois processos, com as opções apropriadas disponíveis.
A entrada padrão de pv será passada para sua saída padrão e o progresso (saída) será impresso no erro padrão. Tem um comportamento semelhante ao comando cat no Linux.
A sintaxe do comando pv é a seguinte:
pv file
pv options file
pv file > filename.out
pv options | command > filename.out
comand1 | pv | command2
As opções usadas com pv são divididas em três categorias, interruptores de exibição, modificadores de saída e opções gerais.
Opções de modificadores de exibição Pv
Algumas opções estão em modificadores de exibição.
- Para ativar a barra de exibição, use a opção
-p
. - Para visualizar o tempo decorrido, use a opção
--timer
. - Para ativar o cronômetro ETA, que tenta adivinhar quanto tempo levará antes da conclusão de uma operação, use a opção
--eta
. A estimativa é baseada nas taxas de transferência anteriores e no tamanho total dos dados. - Para ativar um contador de taxa use a opção
--rate
. - Para exibir a quantidade total de dados transferidos até agora, use a opção
--bytes
. - Para exibir informações de progresso de porcentagem inteira em vez de indicação visual, use a opção
-n
. Isso pode ser bom ao usar pv com o comando dialog para mostrar o progresso em uma caixa de diálogo.
Opções de modificadores de exibição Pv
Algumas opções estão em modificadores de saída.
- Para esperar até que o primeiro byte seja transferido antes de exibir informações de progresso, use a opção
--wait
. - Para assumir que a quantidade total de dados a serem transferidos é de SIZE bytes ao calcular a porcentagem e o ETA, use a opção
--size SIZE
. - Para especificar segundos entre atualizações, use a opção
--interval SECONDS
. - Use a opção
--force
para forçar uma operação. Esta opção força o pv a exibir recursos visuais quando o erro padrão não é um terminal. - As opções gerais são
--help
para exibir informações de uso e –version para exibir informações de versão.
Comando Pv com exemplos no Linux
1. Quando nenhuma opção é incluída, os comandos pv são executados com o padrão -p
, -t
, -e
, -r
e -b
.
Por exemplo, para copiar o arquivo opensuse.vdi para /tmp/opensuse.vdi, execute este comando e observe a barra de progresso no screencast.
pv opensuse.vdi > /tmp/opensuse.vdi
2. Para criar um arquivo zip a partir do seu arquivo /var/log/syslog, execute o seguinte comando.
pv /var/log/syslog | zip > syslog.zip
3. Para contar o número de linhas, palavras e bytes no arquivo /etc/hosts enquanto mostra apenas a barra de progresso, execute este comando abaixo.
pv -p /etc/hosts | wc
4. Monitore o progresso da criação de um arquivo de backup usando o utilitário tar.
tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
5. No exemplo, usamos o comando dd para gravar o arquivo ISO na unidade flash USB:
dd if=debian-10.11.0-amd64-DVD-1.iso | pv | dd of=/dev/sda bs=4M
6. Usando pv e a ferramenta baseada em terminal dialog juntos para criar uma barra de progresso de diálogo como segue.
tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
Resumo
Esta é uma boa ferramenta baseada em terminal que você pode usar com ferramentas que não têm a capacidade de monitorar o andamento de operações como copiar/mover/fazer backup de arquivos. Para mais opções, verifique man pv .
Espero que este artigo seja útil e você possa postar um comentário se tiver alguma ideia a acrescentar sobre o uso do comando pv. E se você encontrar algum erro ao usá-lo, também pode deixar um comentário.