Eu corro updatedb assim:updatedb --localpaths="/a /b"
/a
é uma unidade removível. /b
é o disco rígido local. Embora /a
nem sempre seja acessível para mim, frequentemente quero executar locate
para descobrir se tenho um determinado arquivo nele (com base na última vez que executei updatedb
).
O problema é que, se eu executar updatedb
quando não estiver conectado, recebo um erro:
/usr/bin/find: '/a': No such file or directory
O banco de dados obtém as informações mais recentes sobre /b
, mas remove /a
os dados existentes de . Existe uma maneira de manter /a
os dados quando /a
não está conectado durante updatedb
?
Acho que isso pode ser possível com vários bancos de dados, um para /a
e outro para /b
. Em seguida, um script pode verificar se /a
está ou não conectado quando decide se deve ou não updatedb
.
Mas a página de manual para ambos os comandos assume que eu sei muito mais do que sei (por exemplo, o que FINDOPTIONS
sabe), então espero que haja uma solução mais fácil para esse problema.
Eu não conheço o Linux no Windows, nem a versão GNU do
locate
, mas você deve poder fazer o que quiser. Há uma versão mais longa do manual aqui .Substitua seu single
updatedb --localpaths="/a /b"
por 2 comandos,onde
/dir/mydb
é o nome do caminho completo do arquivo no qual você deseja manter o banco de dados.Ao localizar, defina a variável
LOCATE_PATH
de ambiente como/dir/mydb::
. Em princípio::
deve significar usar o db padrão.Se
::
não funcionar, você poderá obter o nome do arquivo do banco de dados padrão executandoupdatedb --help
. Pode dizer, por exemplo, o padrão é/usr/local/var/locatedb
. Você pode então definirLOCATE_PATH=/dir/mydb:/usr/local/var/locatedb
. Você também pode usar a-d
opçãolocate
para fornecer esta lista de dbs.