Normalmente, quando tenho programas que fazem uma verificação completa do disco e examinam todos os arquivos do sistema, eles demoram muito tempo para serem executados. Por que o updatedb roda tão rápido em comparação?
fonte
Normalmente, quando tenho programas que fazem uma verificação completa do disco e examinam todos os arquivos do sistema, eles demoram muito tempo para serem executados. Por que o updatedb roda tão rápido em comparação?
A resposta depende da versão de locate
que você está usando, mas há uma boa chance é mlocate
, cujo updatedb
corre rapidamente, evitando fazer varreduras disco cheio:
mlocate é uma implementação de localização / atualizaçãob. O 'm' significa "mesclagem": updatedb reutiliza o banco de dados existente para evitar a releitura da maior parte do sistema de arquivos, o que torna o updateb mais rápido e o lixo do cache do sistema.
(O banco de dados armazena o registro de data e hora de cada diretório ctime
ou mtime
, o que for mais recente.)
Como a maioria das implementações de updatedb
, o mlocate
's também ignorará os sistemas de arquivos e os caminhos que ele está configurado para ignorar. Por padrão, não há nenhum mlocate
caso, mas as distribuições geralmente fornecem um básico updatedb.conf
que ignora os sistemas de arquivos em rede, sistemas de arquivos virtuais etc. (veja o arquivo de configuração do Debian, por exemplo; esta é uma prática padrão no Debian, portanto o GNU updatedb
é configurado da mesma forma ).
mtime
de seu pai imediato.mlocate
importa-sectime
e omtime
que implica apenas se a lista de entradas do diretório ainda é a mesma (sem arquivos removidos ou adicionados), o que significa que ela não se importa com os arquivos reais. Isso está correto?locate
não égrep -R
. Não lê o conteúdo do arquivo.Além de verificar os tempos de modificação,
mlocate
também ignora certas subárvores do sistema de arquivos que possuem muitos arquivos desinteressantes ou potencialmente duplicados, conforme especificado em /etc/updatedb.conf (e descrito em man updatedb.conf ):fonte
updatedb
implementações também suportam exclusões configuradas.)