Como executar o updatedb, excluindo alguns caminhos, mas não removendo conteúdo indexado anterior para esses caminhos?

4

Eu tenho uma pergunta estranha, e não tenho certeza se isso é algo factível, é por isso que estou perguntando para o Superusuário:)

Então, imagine que você tenha seu sistema de arquivos com alguns pontos de montagem para partições adicionais.

diga algo como

/ drives / driveA / partitionA / drives / driveA / partitionB / drives / driveB / partitionA ... etc.

agora, se todas essas partições forem montadas em seus respectivos pontos de montagem, a execução de updatedb indexaria todo o conteúdo em seus sistemas de arquivos. Bom.

Agora, estou tentando configurar um tipo de servidor de arquivos com baixo consumo de carga e pouco disco rígido, no qual gostaria de usar o automount, onde gostaria de ter arquivos indexados, mas onde não quero executar a indexação nessas unidades adicionais todos os dias.

Então, o que eu quero é executar o updatedb de forma que alguns caminhos (no meu caso, os caminhos acima) possam ser excluídos da indexação, MAS, ao mesmo tempo, sem destruir o conteúdo anterior indexado para esses caminhos.

Eu vejo que o updatedb tem várias opções de "remoção", que nos permitem excluir certos caminhos do processo de indexação. Mas isso também implica descartar todas as informações de conteúdo relacionadas a esses caminhos. Em vez disso, gostaria de excluir determinados caminhos, mantendo o que já foi indexado anteriormente nesses caminhos.

Alguém tem uma idéia de como conseguir isso com o mlocate, ou que outra ferramenta usar para isso? obrigado

    
por Pa_ 27.11.2012 / 15:40

1 resposta

3

Crie vários índices

Use mlocate para pesquisar vários arquivos de banco de dados simultaneamente. Tudo o que você deseja excluir não deve ser verificado em primeiro lugar. Esqueça as regras de exclusão montadas e não montadas e crie índices para os locais importantes.

O exemplo fornecido pode ser adotado para sua situação com pouco esforço ...

Em geral, você pode criar vários arquivos de índice com updatedb e atualizá-los simultaneamente ou um por um com a frequência desejada (por meio de crond , por exemplo).

Se existe um /etc/updatedb.conf global, então é aconselhável excluir os caminhos que terão seus próprios índices - já que a varredura (criação de índice) no mesmo local mais de uma vez produzirá múltiplos resultados durante a varredura (busca ) para o mesmo local.

Depois de criar "dicionários" binários para todos os locais, configure uma função no shell;

function fooLocate {
    /usr/bin/locate \
      -d /var/tmp/default.mlocate.db \
      -d /my-stuff/mlocate-index2.db $@ 
}

Documentação relevante

(faça um man updatedb também)

man locate * rolagem de rolagem *

-d, --database DBPATH
  Replace the default database with DBPATH. DBPATH is a :-separated list of
  database file names. (...) 

  An empty database file name is replaced by the default database. A database
  file name - refers to the standard input. Note that a database can be read 
  from the standard input only once.

Exemplo

# updatedb -o /home/jaroslav/.locate/media-music.db -U /mnt/media/media/ \
    -n images \
    -n movies \
    -n steamapps \
    -n pr0n -v

# locate -i glass -d /home/jaroslav/.locate/media-music.db| wc -l
35
# locate -i glass -d /home/jaroslav/.locate/media-music.db \
                  -d /var/lib/mlocate/mlocate.db  | wc -l
363
    
por 29.11.2012 / 19:33