Pesquisa de site

Cópia avançada - Adicionar barra de progresso aos comandos cp e mv no Linux


As ferramentas GNU cp e GNU mv são usadas para copiar e mover arquivos e diretórios no sistema operacional GNU/Linux. Um recurso que falta nesses dois utilitários é que eles não mostram nenhuma barra de progresso. Se você copiar um arquivo ou diretório grande, não saberá quanto tempo o processo de cópia levaria para ser concluído ou a porcentagem de dados copiados. Você não verá qual arquivo está sendo copiado ou quantos já foram copiados. Tudo o que você verá é apenas o cursor piscando e o indicador LED do disco rígido. Graças ao Advanced Copy, um patch para Gnu Coreutils, agora podemos adicionar barra de progresso a cp e mv comandos no Linux e mostra a barra de progresso ao copiar e/ou mover arquivos e diretórios grandes.

O que é cópia avançada?

Advanced Copy é um mod para os programas GNU cp e GNU mv . Ele adiciona uma barra de progresso e fornece algumas informações sobre o que está acontecendo enquanto você copia ou move arquivos e pastas. Não apenas a barra de progresso, ela também mostra a taxa de transferência de dados, o tempo restante estimado e o nome do arquivo que está sendo copiado no momento. No final você verá um breve resumo de quantos arquivos foram copiados e quanto tempo demorou para copiá-los.

Instale o patch ‘Advanced Copy’ para adicionar barra de progresso aos comandos cp e mv no Linux

Os comandos cp e mv fazem parte do GNU coreutils. Portanto, você precisa baixar o GNU coreutils mais recente aqui.

wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.32.tar.xz

Extraia o arquivo baixado usando o comando:

tar xvJf coreutils-8.32.tar.xz

Este comando extrairá o arquivo coreutils em uma pasta chamada coreutils-8.32 no diretório atual. CD nele:

cd coreutils-8.32/

Baixe o patch Advanced Copy usando o seguinte comando:

wget https://raw.githubusercontent.com/jarun/advcpmv/master/advcpmv-0.8-8.32.patch

Por fim, aplique o patch executando os seguintes comandos um por um:

patch -p1 -i advcpmv-0.8-8.32.patch
./configure
make

Agora, dois novos binários corrigidos, nomeadamente cp e mv, serão criados na pasta coreutils-8.32/src. Basta copiá-los para o seu ` PATH como abaixo:

sudo cp src/cp /usr/local/bin/cp
sudo cp src/mv /usr/local/bin/mv

É isso. Os comandos cp e mv agora possuem funcionalidade de barra de progresso.

Sempre que você quiser uma barra de progresso ao copiar ou mover arquivos e diretórios, basta adicionar o sinalizador -g como abaixo:

cp -g archlinux.iso mydownload/

Ou use o sinalizador --progress-bar:

cp --progress-bar archlinux.iso mydownload/

Exemplo de resultado:

Copying at  25.7 MiB/s (about 0h 0m 1s remaining)
archlinux.iso                                                          568.1 MiB / 646.0 MiB
[=========================================================================>                  ] 87.9 %

Adicionar barra de progresso aos comandos cp e mv no Linux

Ao final do processo de cópia, você verá quantos arquivos foram copiados, quanto tempo demorou para copiar o(s) arquivo(s) e a taxa de transferência de dados por segundo. Legal, não é?

1 files (646.0 MiB) copied in 11.8 seconds ( 54.7 MiB/s).

Para copiar um diretório e seus subdiretórios recursivamente, basta adicionar o sinalizador -R:

cp -gR directory1/ directory2/

Da mesma forma, para mover arquivos usando o comando mv, execute:

mv -g archlinux.iso mydownload/

Ou use o sinalizador --progress-bar:

mv --progress-bar archlinux.iso mydownload/

Para mover diretórios com o comando mv, use:

mv -g directory1/ directory2/

Você também pode criar aliases para salvar algumas teclas digitadas. Para fazer isso, edite o arquivo ~/.bashrc:

nano ~/.bashrc

Adicione as seguintes linhas no final:

alias cp='/usr/local/bin/cp -gR'
alias mv='/usr/local/bin/mv -g'

Pressione Ctrl+o e Ctl+x para salvar e fechar o arquivo.

Agora execute o seguinte comando para efetuar as alterações:

source ~/.bashrc

De agora em diante, você pode apenas usar os comandos cp ou mv sem -g (ou --progress-bar ) bandeira.

Observe que os programas originais não são substituídos. Você ainda pode ligar para eles a qualquer momento por meio de /usr/bin/cp ou /usr/bin/mv.

Adicionar a funcionalidade da barra de progresso aos comandos cp e mv é uma boa ideia se você costuma copiar ou mover muitos arquivos e diretórios grandes. Agora você pode ver exatamente o que está acontecendo ao copiar e mover arquivos, em vez de olhar para a tela.

Nota:

O autor original enviou o patch para a equipe que mantém o GNU CoreUtils. Eles não irão mesclar este patch, porque mv e cp estão completos.

Recursos:

  • Repositório GitHub de cópia avançada
  • Cópia avançada no arquivo da Internet

Leitura relacionada:

  • gcp – um utilitário avançado de copiadora de arquivos para Linux
  • Como monitorar o progresso dos dados através de um canal usando o comando ‘pv’

Artigos relacionados