Os arquivos do meu disco rígido externo não são mais indexados após a reinicialização. Eu tenho que remontar e depois correr
# updatedb
após cada reinicialização. O problema é atualizado e leva alguns minutos para meus discos rígidos externos. Existe alguma maneira de manter a indexação de meus externos após a reinicialização, para que o comando de localização possa pesquisar meus externos?
EDIT: Por solicitação, aqui estão as 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
command-line
updatedb
locate
user784637
fonte
fonte
cat /etc/updatedb.conf
,mount
,on_ac_power; echo $?
updatedb
está fazendo: (1.) Corraupdatedb
com--verbose
e--debug-pruning
. (2.) Veja o texto para ver o que está sendo indexado e não está sendo indexado -> ajuste seu/etc/updatedb.conf
. Eugrep
procurava por arquivos que eu precisava, mas estavam sendo ignorados. Por exemplo, eu modifiquei/etc/updatedb.conf
com: (1.)PRUNE_BIND_MOUNTS = "no"
(2.) removernfs nfs4 nfsd autofs
dePRUNEFS
(3.) remover/net
dePRUNEPATHS
Respostas:
Os arquivos do seu disco rígido externo não são indexados porque
updatedb
estão configurados para não indexar nada/media
, onde é normalmente montado o armazenamento externo. Esta configuração é definida no arquivo/etc/updatedb.conf
. Especificamente a entrada/media
naPRUNEPATHS
linha.Algumas idéias de como você pode fazer
updatedb
para indexar sua unidade externa:1. Monte a unidade externa em um lugar
/mnt
.Se o seu disco rígido externo deve ser montado permanentemente , sugiro configurá-lo para que seja montado embaixo em
/mnt
vez de embaixo/media
. Isso geralmente pode ser feito editando/etc/fstab
. Procure por "fstab" para aprender sobre isso. Você precisará de direitos sudo para editar/etc/fstab
.2. Crie um banco de dados dedicado para o seu disco rígido externo e consulte-o sob demanda.
O comando a seguir criará um banco de dados dedicado:
Isso criará o banco de dados no arquivo oculto
.externalharddisk.db
em sua casa. Você não precisasudo
desse 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
os arquivos serão 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 de 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:
Você também pode consultar o banco de dados dedicado e o banco de dados padrão ao mesmo tempo:
Os dois pontos no final seguidos por nada significam 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
:Agora você pode usar
locate
para pesquisar apenas no banco de dados padrão elocate-external
também no disco rígido externo.3. Remova
/media
dePRUNEPATHS
Nota: Eu não recomendo isso ! Isso é por causa da maneira como
updatedb
funciona. Se forupdatedb
executado enquanto o disco rígido externo é removido, todas as entradas que apontam para o disco rígido externo serão removidas do banco de dados. Se forupdatedb
executado enquanto o disco rígido externo estiver conectado, as entradas apontando para o disco rígido externo serão adicionadas novamente. Comoupdatedb
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
dePRUNEPATHS
, esse comportamento também se aplicará a qualquer outro armazenamento externo que você tenha montado enquantoupdatedb
estiver atualizando o banco de dados.fonte
~/.bashrc
arquivo:alias updatedb-external='sudo updatedb -l 0 -o ~/.externalharddisk.db -U /media/externalharddisk'
locate-external
, ou seja , estou pensando em anexar três bancos de dados em um--database /mnt/c...
para WSL,--dataabase /mnt/e...
para scripts e documentos compartilhados WSL + Linux e--database /var/lib/mlocate/mlocate.db
para o Ubuntu 16.04 com inicialização dupla. Todos os três bancos de dados na mesma linha de comando localizar (com um alias, é claro). Mas antes de começar, seria bom saber se funcionaria. Posso ter seus pensamentos sobre isso?/media
dePRUNEPATHS
. Embora sim, tenha o problema que você mencionou, excluí-lo completamente é ainda pior - você NUNCA localizará arquivos nessas unidades. É como amputar os dedos para que eles não se queimem durante o cozimento (a menos que haja outra solução óbvia implícita que eu não esteja vendo).Em
updatedb.conf
que você tem/media
emPRUNEPATHS
. Você deve removê-lo, pois suas unidades externas parecem montadas lá.fonte
Estes são outros enfeites a serem adicionados à resposta de Lesmana
[1] leve embelezamento: posso sugerir a adição de -i para garantir que o caso da consulta pesquisada não seja mais um problema : para adicionar ao .bashrc >>
alias Locate-external = 'Localize -d ~ / .externalharddisk.db: -i '
[2] No que diz respeito à atualização de ambas as bases de dados ; aquele no HD principal e o novo no externo; provavelmente vale a pena adicionar mais uma entrada ao arquivo .bashrc
alias updateALL = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk'
e então simplesmente executar
updateALL
no terminal para atualizar os dois bancos de dados de uma só vezPS: é claro que não se esqueça de correr
. ~/.bashrc
para confirmar tudo assim que uma nova linha for salva no .bashrcPS²: e, é claro, também
externalharddisk
em todas as linhas acima é substituída pelo nome do seu nome de HD externo, por exemplo, / media / YOURHDNAME* PS³ e, é claro, você pode combinar a atualização e a localização no seu .bashrc
alias LO = 'sudo updatedb && updatedb -l 0 -o ~ / .externalharddisk.db -U / media / externalharddisk; localize -d ~ / .externalharddisk.db: -i '
agora, tudo o que você precisa atualizar e pesquisar é inserir LO 'seguido pelos termos que você procura'
fonte