updatedb & locate - Os arquivos do disco rígido externo não são mais indexados após a reinicialização

16

Os arquivos do meu disco rígido externo não são mais indexados após a reinicialização. Eu tenho que remontar e, em seguida, executar

# updatedb

após cada reinicialização. O problema é updatedb leva alguns minutos para meus discos rígidos externos. Existe alguma maneira que eu possa manter a indexação para meus externos depois que eu reiniciar, para que o comando locate possa pesquisar através de meus externos?

EDIT: Por solicitação, aqui estão minhas especificações:

$ cat /etc/updatedb.conf
PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"

# mount
/dev/sda5 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
none on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
none on /dev type devtmpfs (rw,mode=0755)
none on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
none on /dev/shm type tmpfs (rw,nosuid,nodev)
none on /var/run type tmpfs (rw,nosuid,mode=0755)
none on /var/lock type tmpfs (rw,noexec,nosuid,nodev)
none on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/me/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=me)
/dev/sdb1 on /media/me type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sdd1 on /media/Little Boy type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sde1 on /media/Fat Man type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

# on_ac_power; echo $?
255
    
por user784637 06.09.2011 / 06:51

3 respostas

29

Os arquivos de seu disco rígido externo não são indexados porque updatedb está configurado para não indexar nada em /media , que é onde o armazenamento externo é normalmente montado. Essa configuração está configurada no arquivo /etc/updatedb.conf . Especificamente, a entrada /media na linha PRUNEPATHS .

Algumas ideias sobre como você pode tornar updatedb para indexar sua unidade externa:

1. Monte a unidade externa unter /mnt .

Se o seu disco rígido externo deve ser montado permanentemente , sugiro configurá-lo para que ele seja montado em /mnt em vez de /media . Isso geralmente pode ser feito editando /etc/fstab . Procure por "fstab" para aprender sobre isso. Você precisará dos direitos de sudo para editar /etc/fstab .

2. Crie um banco de dados dedicado para seu disco rígido externo e consulte-o sob demanda.

O comando a seguir criará um banco de dados dedicado:

updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk

Isso criará o banco de dados no arquivo oculto .externalharddisk.db em sua casa. Você não precisa de sudo para esse comando. Execute o mesmo comando novamente para manter o banco de dados atualizado. Cuidado: se você executar esse comando enquanto o disco rígido externo não estiver montado, updatedb pensará que os arquivos foram excluídos e esvaziarão o banco de dados.

Você pode configurar um script para automatizar essa tarefa. Procure por "cronjob" para aprender como fazer isso. Nota: você pode configurar um cronjob do usuário como usuário. Você não precisa de direitos sudo para configurar um cronjob de usuário.

O seguinte comando consultará o banco de dados:

locate -d ~/.externalharddisk.db searchterm

Você também pode consultar o banco de dados dedicado e o banco de dados padrão ao mesmo tempo:

locate -d ~/.externalharddisk.db: searchterm

Os dois pontos no final seguidos por nada significa também pesquisar no banco de dados padrão.

Você pode criar um alias para facilitar o uso. Coloque a seguinte linha no seu .bashrc :

alias locate-external='locate -d ~/.externalharddisk.db:'

Agora você pode usar locate para pesquisar apenas o banco de dados padrão e locate-external para pesquisar também em seu disco rígido externo.

3. Remova /media de PRUNEPATHS

Observação: não recomendo isso ! Isso é por causa da maneira como updatedb funciona. Se updatedb for executado enquanto o disco rígido externo for removido, todas as entradas que apontarem para o disco rígido externo serão removidas do banco de dados. Se updatedb for executado enquanto o disco rígido externo estiver conectado, as entradas que apontam para o disco rígido externo serão adicionadas novamente. Como updatedb está sendo executado regularmente em segundo plano, você nunca pode ter certeza se os arquivos do disco rígido externo estão atualmente indexados ou não.

Além disso: se você remover /media de PRUNEPATHS , esse comportamento também será aplicado a qualquer outro armazenamento externo que você tenha montado enquanto updatedb estiver atualizando o banco de dados.

    
por lesmana 07.09.2011 / 08:45
2

Em updatedb.conf , você tem /media em PRUNEPATHS . Você deve removê-lo, já que suas unidades externas parecem estar montadas lá.

    
por taneli 07.09.2011 / 06:30
0

Estes são mais embelezamentos a serem adicionados à resposta da Lesmana

[1] leve embelezamento: posso sugerir adicionar o -i ao para garantir que o caso da consulta pesquisada não seja mais um problema : para adicionar a .bashrc > >

alias locate-external = 'localizar -d ~ / .externalharddisk.db: -i '

[2] No que diz respeito à atualização de ambas as bases de dados ; o do HD principal e o novo do externo; Vale a pena adicionar mais uma entrada ao .bashrc

alias updateALL = 'sudo updatedb & amp; & amp; updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk '

e, em seguida, simplesmente execute updateALL no terminal para atualizar os dois bancos de dados de uma só vez

PS: claro, não esqueça de executar . ~/.bashrc para firmar tudo quando uma nova linha for salva no .bashrc
PS²: e claro também externalharddisk em todas as linhas acima é substituído pelo nome do seu HD externo, ou seja, / media / YOURHDNAME

* PS³ e você pode combinar tanto atualização quanto localizar em seu .bashrc

alias LO = 'sudo updatedb & amp; & amp; updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk; localize -d ~ / .externalharddisk.db: -i '

agora tudo que você precisa para atualizar e pesquisar é digitar LO 'seguido pelos termos que você procura'

    
por shantiq 28.07.2015 / 16:59