Como monitorar a transferência de dados durante a cópia ou backup.

Sistemas operacionais UNIX ou GNU/Linux possuem um comando de cópia tradicional para a CLI: o cp.
Quando há vários arquivos para transferir de um diretório a outro, é possível acompanhar a finalização da transferência de cada um deles.

Mas só ficamos sabendo da finalização individual de cada cópia de arquivo.
Na GUI (ambiente gráfico), para quem usa um gerenciador de arquivos, também é possível acompanhar o progresso da transferência, com um nível mais elevado de exibição de informações.
elias praciano gnome nautilus
Na CLI, contudo, o comando cp, não permite obter este detalhamento do progresso da transferência dos seus arquivos.
mostrei como “atualizar” o comando cp, para forçar a exibição destas informações em outro post.
Neste, vou mostrar como obter o resultado com o utilitário pv.
Como não faz parte da instalação padrão da maioria das distribuições Linux, ele precisa ser instalado.
Por sorte, faz parte dos repositórios das grandes distribuições (Fedora, OpenSUSE, Debian, Ubuntu etc.)
Use o seu gerenciador de pacotes predileto para obtê-lo (yum, dnf, apt etc.)

Como funciona o pv

O pv é um utilitário para monitorar a transferência de dados.
Com ele, é possível obter informações sobre o percentual que ainda falta da tarefa a ser completada (com uma barra de progresso), o tempo de conclusão (estimado), a taxa de transferência, total de dados transferidos etc.
O pv é usado como pipeline (encanamento) entre dois processos.
Pode ser usado para monitorar o fluxo de dados local ou remotamente.
Eu sugiro o seu uso dentro de scripts, para dar retorno visual mais agradável sobre o progresso das atividades realizadas.

Exemplos de uso do pv

linux tranferencia de arquivo com comando pv
Para monitorar, enquanto faz a cópia de um arquivo, forneça a localização, o nome do arquivo de origem e do arquivo de destino:

pv origem > destino

Para copiar o arquivo-1.mp4 para dentro de um flash drive (montado no diretório Yellow), por exemplo:


pv arquivo-1.mp4 > /media/justincase/Yellow/arquivo-1.mp4

 355MiB 0:00:27 [1,36MiB/s] [=======================>          ] 73% ETA 0:00:09

No exemplo abaixo, o pv é usado para monitorar o backup dos diretórios apt/ e caching/:


tar -cjf - apt/ caching/ | (pv -p --timer --rate --bytes > backup.tar.bz)

34,5MiB 0:00:10 [2,79MiB/s] [        <=>  

Use o comando acompanhado da opção ‘-h’, para obter mais opções de uso:


pv -h


Se você está fazendo cópias de arquivos ou (des)compactando-os de dentro de um script, é possível dar um feedback visual mais atraente para o seu usuário, com o uso do comando pv.
Abaixo, um exemplo de backup do diretório ~/Documentos:


tar -czf - ~/Documentos/ | (pv -n > backup-docs.tgz) 2>&1 | dialog --gauge "Cópia de segurança do diretório Documentos" 10 70

backup whiptail
Se o utilitário whiptail não estiver presente no seu sistema, é possível usar o dialog.
No próximo exemplo, usamos o utilitário GUI, zenity:


tar -czf - ~/Documentos/ | (pv -n > backup-docs.tgz) 2>&1 | zenity --progress --text "Cópia de segurança do diretório Documentos"

backup zenity linux

Referências

https://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/.