Pesquisa de site

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 pvPipe 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.