Como copiar arquivos usando o comando “install” no Linux

Publicados: 2022-01-29
Arte conceitual do Bash em um desktop Ubuntu Linux
Fatmawati Achmad Zaenuri/Shutterstock.com

install é um comando versátil de cópia de arquivos no Linux e no macOS. É perfeito para o usuário avançado que procura eficiência. Leia este artigo para descobrir como trabalhar de forma mais inteligente, não mais difícil.

Espere — não é para instalar software?

O comando de install pode ter o nome mais enganoso de qualquer um dos comandos do Linux. Na verdade, ele não instala nenhum software. Se você estiver tentando instalar um pacote de software a partir da linha de comando no Ubuntu ou em outra distribuição baseada em Debian, use o comando apt-get . Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes da sua distribuição Linux—por exemplo, dnf no Fedora ou zypper no openSUSE.

Então, o que a instalação faz?

Em poucas palavras, a install combina elementos dos comandos cp (copiar), chown (alterar proprietário), chmod (modo de alteração), mkdir (criar diretório) e strip (símbolos de tira). Ele permite que você use funções de todos eles em uma única ação.

O comando install pode:

  • Copie arquivos como o comando cp .
  • Escolha se deseja substituir os arquivos existentes.
  • Crie o diretório de destino se ele não existir, como mkdir .
  • Defina os sinalizadores de permissão do usuário dos arquivos, assim como o comando chmod .
  • Defina o proprietário dos arquivos, assim como o comando chown .
  • Remova a bagagem não essencial dos arquivos executáveis, assim como o comando strip .

Apesar de toda essa funcionalidade, o comando de install não tem muitas opções para enfrentar.

instalar página de manual

Quando você usaria

O comando de install provavelmente não será usado todos os dias. É útil, mas apenas para determinadas situações. Um cenário em que a install se destaca é o desenvolvimento de software. Digamos que você esteja programando um novo utilitário. Você precisará fazer testes fora do ambiente de desenvolvimento. Para fazer isso, você precisa copiar os novos arquivos de programa para um diretório de teste. O diretório de teste pode precisar ser criado e você precisa definir as permissões e a propriedade corretas para os arquivos.

Propaganda

Como o desenvolvimento é uma atividade iterativa, você pode acabar fazendo essa sequência de ações muitas e muitas vezes. O comando install faz todo o trabalho pesado para você. Finalmente, quando seu novo utilitário estiver pronto para ser implantado, você poderá usar install para copiá-lo com as permissões corretas para seu local de trabalho final.

Um exemplo

Um programador está trabalhando em um novo utilitário, chamado ana . Ele consiste em um arquivo binário executável e um banco de dados. Após o teste, ele deve ser copiado para /usr/local/bin para torná-lo disponível para todos os usuários do sistema Linux. Você precisará substituir os nomes de arquivos e caminhos de diretório em nosso exemplo pelos arquivos e caminhos que você está usando em seu computador ao usar install .

Até que esteja pronto para lançamento, ele será testado em um diretório chamado ~/test/ana . Os membros do grupo geek terão permissões de leitura e execução. Outros usuários também terão permissões de leitura e execução. O comando install usa a mesma representação numérica para permissões que o chmod . Nosso programador decidiu que as permissões devem ser definidas para:

  • Proprietário: Ler, escrever e executar.
  • Grupo: Ler e executar.
  • Outros: Executar apenas.

Como usar o comando de install

O diretório de trabalho do nosso programador fictício é ~/work . Ele escreveu o programa, compilou-o e produziu um binário chamado ana . Ele já criou o arquivo de banco de dados com o qual a ana trabalha, Words.db . Portanto, ambos os arquivos estão prontos para teste. Vamos dar uma olhada neles:

 ls -l ana Words.db 

O utilitário ana que ele acabou de escrever cria anagramas a partir de uma frase fornecida na linha de comando. O teste de verificação é bastante simples.

teste do utilitário ana no diretório de trabalho

Nosso programador invocou ana com a frase “biscuit” e tudo parece bem. Ele agora deseja copiar esses dois arquivos para o diretório ~/test/ana para ver se o novo utilitário funciona corretamente fora do ambiente de desenvolvimento. Ele emite o seguinte comando:

 install -D -v ana Words.db -t ~/test/ana 

Instale o comando em /test/ana

As opções usadas na linha de comando foram:

  • D : Crie diretórios, incluindo diretórios pai, se necessário.
  • v : Detalhado, liste cada diretório conforme é criado e cada cópia de arquivo conforme é executada.
  • t : Diretório de destino.
Propaganda

Podemos ver que install cria o diretório ~/test e, em seguida, cria o diretório ~/test/ana . Os arquivos são listados um a um conforme são copiados para o diretório de destino.

Listar os arquivos em ~/test/ana confirma que eles foram copiados corretamente.

 ls -l 

ls no diretório /test/ana

A próxima etapa é testar o utilitário ana invocando-o no diretório ~/test/ana .

teste do utilitário ana no diretório /test/ana

O utilitário funciona como esperado, o que é ótimo. No entanto, as permissões não estão corretas. O requisito é definir que os membros do grupo geek tenham permissões de leitura e execução e que outros usuários tenham apenas permissões de execução.

Podemos resolver esses dois problemas simplesmente com o seguinte comando. Observe o uso de sudo para executar o comando com permissões de root. As opções -o e -g e exigem isso. Será solicitada nossa senha quando emitirmos o comando.

 sudo install -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana 

comando de instalação com opções de backup e configurações de permissões

  • A opção -b (backup) cria backups dos arquivos antes de serem substituídos.
  • A opção -S (sufixo) define o sufixo para os arquivos de backup. Se você não fornecer um sufixo, um ~ (til) será usado. Estamos pedindo à install para usar um sufixo de .bak .
  • Definimos o proprietário do arquivo como dave usando a opção -o (proprietário).
  • A opção -g (grupo) requer o nome de um grupo. Este se torna o grupo proprietário dos arquivos. O grupo que vamos usar chama-se geek .
  • A opção -m (mode) define os modos de arquivo para os arquivos, usando a sintaxe numérica chmod padrão.

Não precisamos mais usar a opção -D (criar diretórios), pois sabemos que o diretório de teste já existe. Também omitimos a opção -v (verbose). Listar os arquivos em nosso diretório ~/test/ana nos mostra os detalhes do arquivo:

 ls -l 

ls no diretório /test/ana

Isso confirma que todos os nossos requisitos foram atendidos.

  • Os arquivos foram copiados para o diretório de teste.
  • As permissões foram definidas corretamente.
  • dave é o proprietário dos arquivos.
  • O grupo geek é o grupo proprietário dos dois arquivos.
  • Cópias de backup foram feitas de cada arquivo, chamadas ana.bak e Words.db.bak.
Propaganda

Tudo isso foi conseguido através do uso de um comando. Arrumado.

Nosso programador faz algumas alterações finais no utilitário e recompila. Os arquivos que foram alterados precisam ser copiados para o diretório ~/test/ana do diretório ~/work . Podemos fazer isso usando a opção -C (comparar). Se o arquivo de origem e o arquivo de destino forem iguais, o arquivo de origem não será copiado.

 sudo install -C -b -S .bak -o dave -g geek -m 751 ana Words.db -t ~/test/ana 

comando de instalação com a opção -C compare

Listar os arquivos no diretório de destino nos mostra que o tamanho do arquivo ana foi alterado. É maior que o arquivo ana.bak . O timestamp em ana também mudou. Essas alterações ocorrem porque a nova versão do arquivo foi copiada aqui.

 ls -l 

ls em /test/ana com o utilitário test fo ana

O tamanho do arquivo e o carimbo de data/hora do arquivo Words.db não foram alterados. Nenhuma alteração foi feita no arquivo Words.db , portanto, ele não foi copiado. Em um projeto com muitos arquivos, a opção -C (comparar) pode economizar muito tempo e rotatividade do disco rígido, copiando apenas os arquivos que foram alterados.

O programador testou novamente que o utilitário ana continua a funcionar.

É hora de usar install para copiar os arquivos para o /usr/local/bin . Isso disponibilizará o novo utilitário para todos os usuários deste computador Linux. Sabemos que /usr/local/bin existe, então não precisamos criar esse diretório. Podemos usar uma versão modificada do nosso último comando.

Propaganda

Alteramos o diretório de destino para /usr/local/bin . Removemos a opção -C (comparar) porque ainda não há cópias desses arquivos no diretório de destino, portanto, não há nada para comparar. Da mesma forma, não há nada para fazer backup, então podemos remover a opção -b (backup) e a opção -S (sufixo).

 sudo install -o dave -g geek -m 751 ana Words.db -t /usr/local/bin 

instale copiando arquivos para /usr/local/bin

Podemos listar que os arquivos chegaram em /usr/local/bin :

 ls -l 

ls de /usr/local/bin

E como teste final, vamos mudar o diretório para nosso diretório inicial e ver se podemos invocar nosso novo utilitário de lá.

teste de utilidade ana

Observe que não precisamos prefaciar o comando ana com ./ o que significa que ele está sendo executado a partir de /usr/local/bin . Missão cumprida.

Mencionamos que a instalação pode remover tabelas de símbolos redundantes e outras bagagens de dentro do arquivo binário, para reduzi-lo em tamanho. Vamos fazer isso agora. Observe que o comando abaixo não inclui Words.db. Isso ocorre porque Words.db é um arquivo de banco de dados, não um executável binário. Para copiar e reduzir o arquivo binário ana , podemos usar o seguinte comando. Adicionamos a opção -s (encolher) com um “s” minúsculo. Adicionamos de volta a opção -b (backup) e a opção -S (sufixo), com um “S” maiúsculo.

 sudo install -s -b -S .bak -o dave -g geek -m 751 ana -t /usr/local/bin 

opção de instalação com opção -s strip

Propaganda

Listar os arquivos em /usr/local/bin nos permite comparar o tamanho do arquivo ana com sua versão de backup. O arquivo ana foi reduzido para quase 60% de seu tamanho anterior.

 ls -l /usr/local/bin 

ls no diretório de trabalho

Em suma

O comando de install atende a um uso bastante de nicho. Para muitas pessoas, não será usado dia após dia, ou possivelmente de mês para mês. Apesar disso, o comando install é uma boa ferramenta para se familiarizar e ter em seu arsenal de truques. Para aquelas ocasiões em que você precisa, ele recompensa sua curva de aprendizado com aumentos de eficiência, simplicidade e simplesmente menos pressionamentos de teclas.

RELACIONADO: Melhores laptops Linux para desenvolvedores e entusiastas