Como posso visualizar o conteúdo do banco de dados updatedb e, em seguida, excluir determinados arquivos / caminhos?

5

O banco de dados updatedb no meu servidor debian (squeeze) é bem lento.

  • onde está localizado o banco de dados
  • como posso ver seu conteúdo e descobrir se há alguns caminhos com coisas inúteis que eu poderia adicionar aos editais?
  • como posso remover todos os caminhos que contêm */.git/* , */.svn/* e semelhantes?
  • por que os arquivos não são excluídos, eu defini em PRUNEPATHS ?

my /etc/updatedb.conf tem esta aparência:

...
# filesystems which are pruned from updatedb database
PRUNEFS="NFS nfs nfs4 afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf"
export PRUNEFS
# paths which are pruned from updatedb database
PRUNEPATHS="/tmp /usr/tmp /var/tmp /afs /amd /alex /var/spool /sfs /media /var/backups/rsnapshot /var/mod_pagespeed/"
...

EDITAR:

  • O banco de dados de localização está em /var/cache/locate/locatedb
  • locate / listará todos os arquivos e diretórios no banco de dados (examinei os resultados exportando-os em um arquivo: locate />/tmp/locatedb.txt , baixe este arquivo txt e encontre uma grande quantidade de coisas inúteis)
por rubo77 01.12.2012 / 00:10

4 respostas

5

Você provavelmente está usando a versão GNU findutils do locate, que não suporta a opção PRUNENAMES. A instalação do mlocate fornecerá estas opções de configuração:

apt-get remove locate
mv /etc/updatedb.conf /etc/updatedb.conf-GNU.old
apt-get install mlocate

Agora, com o pacote mlocate, você pode editar ou criar /etc/updatedb.conf e adicionar estas linhas:

PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /var/cache /media /usr/tmp /var/tmp /sfs /afs /amd /alex /var/backups/rsnapshot /var/mod_pagespeed"
# the paths in 'PRUNEPATHS' must be without trailing slashes

Em seguida, atualize o banco de dados com:

updatedb

Você provavelmente pode remover o enorme banco de dados de localização antigo:

rm /var/cache/locate/locatedb

(O banco de dados mlocate é armazenado em /var/lib/mlocate/mlocate.db )

Confira o link para obter mais informações sobre o pacote.

(Eu gastei uma quantidade ridícula de tempo tentando resolver um problema semelhante!)

    
por 09.10.2013 / 00:15
6

Use PRUNENAMES como indicado em man updatedb.conf

A whitespace-separated list of directory names (without paths) which should not be scanned by updatedb(8). By default, no directory names are skipped.

O uso de

PRUNENAMES=".git .hg .svn"

deve fazer o truque (a linha acima é o valor padrão no Fedora 18).

    
por 01.12.2012 / 02:02
3

locate / listará todos os arquivos e diretórios no banco de dados.

    
por 01.12.2012 / 00:35
1

why don't the files get excluded, I defined in PRUNEPATHS

Embora o problema do OP tenha sido versão / PRUNENAMES, como uma alternativa / adição ao trolling através da saída do locate db, rodar o updatedb manualmente com o sinalizador --debug-pruning imprime as decisões de remoção individuais para o stderr, e é realmente útil para rastreando problemas de poda

Por exemplo, cole-o em um arquivo (como root, neste caso):

updatedb --debug-pruning > ~/updatedb_debug.log 2>&1 &

Exemplo de saída:

Matching bind_mount_paths:
...done
Checking whether filesystem '/boot' is excluded:
 '/', type 'rootfs'
 '/proc', type 'proc'
 => type matches, dir '/proc'
 '/run', type 'tmpfs'
...
Checking whether filesystem '/mnt/windows' is excluded:
Checking whether filesystem '/proc' is excluded:
Checking whether filesystem '/run' is excluded:
...
Skipping '/dev/mqueue': in prunefs
Skipping '/dev/pts': in prunefs

etc

(estou usando mlocate)

    
por 05.01.2014 / 00:00