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
4 Comments to “Linha de Comando em Linux: locate e updatedb – parte 01”