De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Cesar Brod
Data de Publicação: 02 de março de 2013
Ah! Aqueles velhos tempos do computador à lenha, quando nenhum arquivo tinha mais do que poucos kbytes. Hoje você quer copiar ou mover um arquivo (um ebook de 327 Mbytes) de uma pasta para a outra e fica ali, com o olhar perdido, esperando que o prompt da linha de comando volte a aparecer...
Sim, caro leitor! Você pode argumentar que, com interfaces gráficas modernas, além do progresso da cópia e de uma estimativa de seu término serem exibidos, ainda é possível abrir uma outra janela e jogar gamão. Mas há ainda aqueles casos onde seu servidor está longe, muito longe de você e tudo o que liga você a ele, além do seu amor, é uma conexão ssh.
Mas, não se apavore! Para tudo há uma saída. Abra lá uma sessão ssh em seu servidor (ou experimente tudo isso, primeiro, em uma máquina local - uma prática que você já adotou!) e verifique qual é a versão mais recente do coreutils:
elinks http://ftp.gnu.org/gnu/coreutils/?O=D | grep coreutils -m 2
Como resultado, você deve ter algo parecido com isso:
[22][ ] [23]coreutils-8.21.tar.xz.sig 14-Feb-2013 12:06 836 [24][ ] [25]coreutils-8.21.tar.xz 14-Feb-2013 12:06 5.1M
O elinks acessa o endereço onde o programa coreutils (que contém o cp, o mv e outros). A chave ?O=D indica que os resultados devem ser exibidos na ordem decrescente de data (os mais recentes no início). O grep filtrará apenas as linhas que contém a palavra coreutils e a chave -m indica a quantidade de linhas que queremos ver exibidas no terminal. Facinho, né?
Agora baixe a versão mais recente do coreutils:
wget http://ftp.gnu.org/gnu/coreutils/coreutils-8.21.tar.xz
Claro, você poderia fazer um script que, usando os dois comandos acima ou outras alternativas, já baixaria automaticamente a última versão do coreutils. Aliás, é bem provável que o Paulo Roberto Bagatini faça isso! ;)
Se algum dos comandos acima não funcionou é muito provável que você não tenha os programas instalados. Resolva isto com um apt-get e aproveite para instalar o pacote build-essential, que você precisará para os passos a seguir:
sudo apt-get install wget elinks build-essential
Aceite a instalação de qualquer prerrequisito necessário.
Execute os seguintes comandos:
tar xvJf coreutils-8.21.tar.xz cd coreutils-8.21/ wget http://zwicke.org/web/advcopy/advcpmv-0.4-8.21.patch patch -p1 -i advcpmv-0.4-8.21.patch ./configure make sudo cp src/cp /usr/local/bin/cp sudo cp src/mv /usr/local/bin/mv
O comando tar irá descompactar os fontes do coreutils. Em seguida, você usa o cd para ir até a pasta onde os fontes estão descompactados. O wget obtém a modificação que irá melhorar os comandos cp e mv e o comando patch irá aplicá-la no cógigo. O configure verificará seu ambiente e preparará os fontes para que sejam compilados (transformados em programas executáveis), o que é feito pelo comando make. Por fim, os comandos cp copiarão os novos comandos cp e mv para o caminho (PATH) de execução de seu sistema. Você precisará usar o sudo já que a pasta /usr/local/bin pertence ao superusuário (root).
Nota: Usando a informação desta mesma dica você sabe, agora, como saber se a modificação advcpmv-0.4-8.21.patch é mesmo a mais recente, certo?
Antes de sair fazendo experiências, veja o resultado deste comando:
echo $PATH
Exemplo de resultado:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:.
Repare que você copiou os novos comandos para /usr/local/bin, que vem antes, em seu caminho de execução, de /usr/bin - onde encontram-se os originais cp e mv. Assim, para voltar tudo ao que era antes basta você apagar as novas versões de cp e mv da pasta /usr/local/bin.
Para saber onde está um determinado comando que você utiliza, use o which:
which cp
Resultado:
/usr/local/bin/cp
Agora teste!
cp -g um_arquivo_grande copia_arquivo_grande
A chave g é a novidade! Ela irá mostrar uma barra de progresso da cópia. O mesmo vale para o comando mv.
Como, porém, sempre vou querer usar a chave g agora que ela está disponível, criarei aliases para os comandos cp e mv. Para saber mais sobre aliases, veja esta dica ou várias outras aqui no Dicas-L. Em meu caso, adicionei estas linhas ao final do /etc/bash.bashrc (assim estes aliases ficam disponíveis para todos os usuários):
alias cp='cp -g' alias mv='mv -g' alias rm='rm -i'
Nota: O alias rm='rm -i' não tem nada a ver com o tema deste artigo! Mas todo mundo deve, por amor a seus preciosos arquivos, tê-lo. Ele faz com que qualquer tentativa de remoção de arquivos ou pastas solicite uma confirmação.
Mais informações na página do projeto Advanced Copy.
Cesar Brod é do tempo em que controladores de comunicação no protocolo TCP/IP não cabiam em uma USB.
Cesar Brod ministra cursos in-house adequados à necessidade de sua empresa, além de atuar como coach de equipes ágeis. Visite nosso portal para saber mais ou entre em contato diretamente com o autor para mais informações.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários