Linha de Comando em Linux: locate e updatedb – parte 01

Definição

locate é um comando para localizar arquivos por nome.

locate realiza buscas através de um ou mais pequenos bancos de dados gerenciados pela ferramenta updatedb.

 

Instalando o Comando locate

Locate nem sempre vem instalado, mas para o instalarmos no centos basta executarmos:

[elder@centos65 ~]$ sudo yum install mlocate -y

Se tentar executar verá um erro.

[elder@centos65 Labs]$ locate tree
locate: Não foi possível realizar stat () de `/var/lib/mlocate/mlocate.db': Arquivo ou diretório não encontrado

O erro acima ocorre porque é necessário criar a base de dados para o mlocate.

[elder@centos65 Labs]$ sudo updatedb

Agora o comando locate irá funcionar.

Execute o comado “locate -S”  para sabermos local da base de dados e outras informações importantes.

[elder@centos65 Labs]$ locate -S
Banco de dados /var/lib/mlocate/mlocate.db:
	5.700 diretórios
	51.887 arquivos
	2.606.845 bytes em nomes de arquivos
	1.109.222 bytes usados para armazenar a base de dados

Sintaxe de Uso do  Locate

locate + opções + nome_de_arquivo_a_pesquisar

locate sempre busca pelo “nome_de_arquivo_a_pesquisar” incluindo globbing caracteres. Globbing caracteres são aqueles caracteres que possuem significados especiais. Como exemplo de globbing caracteres temos o asterisco (*). O Asterisco representa zero ou mais vezes. Assim “bo*a” pode significar tanto “bola” quanto “bolacha” ou ainda “borracha“.

Por exemplo, Quando procuramos usando “locate  minhaFoto” locate sempre envolve “minhaFoto” com asteriscos, deixando-o assim “*minhaFoto*”. isso quer dizer que o resultado da busca poderá ser tanto um arquivo chamado “minhaFoto”, como “minhaFoto.jpg”, “pequenaMinhaFoto.gif”. Bom, para entender melhor aplicamos os exemplos no post a seguir.

 

 Gerenciando locate com updatedb

O comando updatedb cria ou atualiza o banco de dados usado pelo comando locate.

O comando updatedb geralmente é executado diariamente pelo programa cron.

Se o banco de dados já existe, ao  executar updatedb os dados de arquivos  já existentes no banco serão mantidos, acrescentado novos e excluídos não existentes.

Além do comando também existe um arquivo de configuração para o updatedb que fica em  “/etc/updatedb.conf“. Na verdade, trata-se apenas de um arquivo contento 4 variáveis e seus valores:

      • PRUNE_BIND_MOUNTS: pode receber os valores 0(no) ou 1(yes).  Se o valor for 1 ou yes bind mounts?? não são escaneados por updatedb.
      • PRUNEFS: Lista de Sistemas de Arquivos separados por um espaço em branco. Os Sistemas de Arquivos listados aqui serão ignorados, não serão escaneados.
      • PRUNENAMES: Lista de nomes de arquivos separados por um espaço em branco. Esses nomes serão ignorados por updatedb.
      • PRUNEPATHS: Lista de caminhos de pastas separados por um espaço em branco.

updatedb.conf não é exatamente um arquivo de configuração, mas apenas um meio de facilitar o uso do comando updatedb de forma que não precisemos passar os valores do arquivo updatedb.conf para a linha de comando updatedb.

Continuaremos falando de updatedb  mais à frente.

 

Opções para locate

  • -b ou –basename = procura pelo arquivo  literalmente conforme digitado, nem mais nem menos. Por exemplo, se executarmos “locate -b tree” locate irá procurar por arquivos apenas com o nome “tree”, não irá buscar por “tree.txt”  ou “arquivotree.txt”  etc.  Lembrando do que foi informado acima, locate por padrão envolve o nome do arquivo a ser procurado com dos asteriscos; a opção -b retira esses asteriscos.
  • -d ou –database = Geralmente o arquivo que serve como base de dados para o locate se encontra em “/var/lib/mlocate/mlocate.db”, se desejar alterar o local use o -d ou –database. Lembrando que  acima disse(em definição de locate) que locate usa uma ou mais bases de dados. Então aqui podemos colocar vários caminhos separados por ponto e vírgula, como por exemplo: “locate -d /home/elder/baseLocatedb:/home/elder/base02_locate.db”
  • -i ou –ignore-case = Não faz diferença entre maiúsculo e minúsculo.
  • -l ou –limit = limita o número de arquivos encontrados. Se executarmos “locate -l 2 tree.txt” irá trazer epenas os dois primeiros arquivos(tree.txt) encontrados.
  • 0 ou –null = Exibe tudo em uma única linha ao invés de exibir os resultados separados por linhas.   Na verdade, com -0, as linhas são separadas por meio do caracter NUL da tabela ASCII e essa opção serve apenas para deixar o locate compatível com a opção –null do xargs.
  • -q ou –quiet = Não exibe mensagens de erros durante a leira da base de dados.
  • -S ou –statistics = Exibe estatísticas, como localização da base de dados, total de diretórios e arquivos indexado na base etc.. Essa opção foi usada acima.
  • -r ou –regexp = Na man page essa  opção é descrita assim: “Busca por expressões regulares básicas..” bom….. Não ficou muito claro ainda. Mas pelo que parece ela serve para usarmos em expressões regulares simples. 🙂
  • –regex = Interpreta todas as entradas(nomes dos arquivos a procurar) como expressões regulares mais complexas ou estendidas.
  • -w ou –wholename = Faz a busca levando em consideração todo o caminho(path) passado. Obs.: particularmente, não ficou bem claro o uso dessa opção.

 

Opções para updatedb

  • -f ou –add-prunefs nomes_de_sistemas_de_arquivos_aqui = Adiciona valores(separados por espaços em brando) para a variável PRUNEFS.
  • -n ou –add-prunenames digite_alguns_nomes_aqui  = Adiciona valores(separados por espaços em brando) à variável PRUNENAMES
  • -e ou –add-prunepathes digite_caminhos_aqui = Adiciona valores(separados por espaços em brando) à variável PRUNEPATHS
  • -U ou –database-root digite_caminhos_de_arquivos = Armazena na base de dados apenas os caminhos passados para -U. Por padrão todo o sistema de arquivos é passado para a base de dados do updatedb.
  • -o ou –output arquivo.db = Grava em arquivo.db o conteúdo da base de dados

–prunefs sistemas_de_arquivos_aqui  = Grava sistemas_de_arquivos_aqui na  variável  PRUNEFS. Essa opção sobrescreve os valores passados para PRUNEFS em /etc/updatedb.conf

  • –prunenames digite_nomes_aqui = Grava digite_nomes_aqui na variável  PRUNENAMES. Essa opção sobrescreve os valores passados para PRUNENAMES em /etc/updatedb.conf
  • –prunepaths digite_caminhos_aqui =  Grava digite_caminhos_aqui na variável  PRUNEPATHS. Essa opção sobrescreve os valores passados para PRUNEPATHS em /etc/updatedb.conf

 

Bom, essas são as opções mais usadas. Ainda não terminamos. Como o artigo está ficando longo, continuarei em um novo artigo parte 02

This is Not The End… See you in the next post 🙂

 

Siga-nos em nossas redes:

Link Facebook: https://www.facebook.com/gnulinuxbr

Link WhatsApp: https://chat.whatsapp.com/H56efmndpH5KfGnIHzbjjx

Link Telegram: https://t.me/gnulinux_brasil

YouTube: https://www.youtube.com/channel/UCwyFWDqE0v7SwpZenjmzxYQ

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

3 thoughts on “Linha de Comando em Linux: locate e updatedb – parte 01

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *