Como faço para o mlocate indexar apenas determinados diretórios?

23

Eu gostaria de usar o mlocate no meu servidor Ubuntu, mas apenas para indexar certos diretórios (por exemplo , /homee /data, mas nem tudo abaixo /). No entanto, a configuração padrão do mlocate funciona da maneira oposta; você especifica os caminhos que deseja remover (com PRUNE_PATHS).

Existe alguma maneira fácil de conseguir isso ou algum utilitário semelhante que faça o que eu quero? (nota: ele deve manter um índice como mlocate, portanto, findnão é aceitável, por exemplo) Obrigado.

Andrew Ferrier
fonte

Respostas:

16

Você pode usar a opção -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-o grava no arquivo de saída

-l 0 faz com que você possa lê-lo, caso contrário, ele é acessível apenas para localizar

Então você pode usá-lo como:

locate -d /home/user/databasefile Dylan

-d define o caminho do banco de dados

Para usar o mlocate com mais de um diretório raiz, basta criar dois arquivos de banco de dados e usar o local com duas opções de caminho de banco de dados como este:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Para resumir e responder à pergunta mais específica:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan
Janghou
fonte
Voto positivo, pois esta é uma resposta parcial. No entanto, ele permite apenas a inclusão de um caminho na lista de permissões. Minha pergunta foi especificamente sobre como colocar em lista branca mais de um caminho.
Andrew Ferrier
1
Melhorou a resposta e para facilitar o manuseio Sugiro criar um alias
Janghou
boa resposta! Não sabia que era possível pesquisar em dois bancos de dados em paralelo, obrigado pelo esclarecimento. Vou marcar como aceito, a menos que uma resposta melhor chegue!
Andrew Ferrier 12/12
É updatedb -l 0 -U /home/user/musicrecursivo? Não parece estar no meu caso
Gaia
22

Edite o arquivo /etc/updatedb.conf

Configure PRUNEPATHScom os diretórios que você NÃO deseja pesquisar

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Uma lista separada por espaços em branco de nomes de caminhos de diretórios que não devem ser verificados por updatedb. Cada nome de caminho deve estar exatamente no formato em que o diretório seria relatado por localização. Por padrão, nenhum caminho é ignorado.

Observe que todas as informações de configuração acima também podem ser alteradas ou atualizadas através das opções de linha de comando do utilitário updatedb.

LnxSlck
fonte
Não, é exatamente o oposto do que eu quero. Isso indexará tudo, exceto esses diretórios.
Andrew Ferrier
Você pode definir PRUNEPATHS com tudo, exceto seus diretórios. Dessa forma, ele somente examinará seus diretórios.
LnxSlck
OK, obrigado pela edição de esclarecimento. Isso é um pouco impraticável, porque, à medida que adiciono subdiretórios aos diretórios que quero indexar, devo lembrar de adicioná-los ao PRUNEPATHS. No entanto, isso funcionaria. Obrigado pela sugestão.
Andrew Ferrier
Sim, eu sei, mas não consigo encontrar muita informação sobre o mlocate para fazer isso. Você não pode usar algo como encontrar?
LnxSlck
Não, eu tenho muitos dados, por isso é importante que sejam indexados. Esclareceu em questão.
Andrew Ferrier
1

Encontrei outra coisa que você poderia tentar:

  1. Pesquisa Rápida - "Portanto, meu SearchTool usa uma maneira diferente: ele usa o comando 'ls' para listar o conteúdo da pasta pesquisada e, em seguida, faz a pesquisa nessa saída. Dessa forma, a velocidade da pesquisa é muito rápida (exceto pela primeira vez que é necessário 'ls' output). "

Não tenho muita certeza sobre a indexação.

  1. Use o rastreador de ferramenta -gui
  2. Pretty lame solution sudo find "coloque seus diretórios de pesquisa aqui"> files.list grep 'filename' files.list
LnxSlck
fonte
Tente não adicionar várias respostas. Se necessário, edite a resposta existente e inclua mais informações. Obrigado.
jokerdino
Sim, eu vou fazer isso
LnxSlck