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’