você está aqui: Home  → Arquivo de Mensagens

slocate (Secure Locate)

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 30 de Janeiro de 2006

Sistemas Linux possuem uma excelente ferramenta para nos ajudar na localização de arquivos na estrutura de diretórios, o comando slocate.

O comando slocate cria um banco de dados contendo a listagem dos arquivos do sistema e sua localização na estrutura de diretórios. O banco de dados criado pelo comando slocate fica localizado no diretório /var/lib/slocate/ e chama-se slocate.db.

O programa slocate armazena também, além do nome, as permissões de leitura e propriedade dos arquivos de maneira a garantir que ninguém obtenha informações sobre arquivos aos quais não tenha acesso. Daí o seu nome, Secure Locate.

O banco de dados é criado emitindo-se o comando:

# slocate -u

Este comando irá gravar no arquivo /var/lib/slocate/slocate.db a localização e o nome de todos os arquivos e diretórios a partir do diretório raiz.

Usuários comuns podem também criar seu índice personalizado. A restrição é que o banco de dados (slocate.db) deve ser gravado em um local ao qual o usuário tenha acesso, como por exemplo seu diretório de trabalho pessoal.

$ slocate -U /home/usuario -o .slocate.db

O banco de dados pessoal foi chamado de .slocate.db. O nome inicia-se em "." para que não conste nas listagens normais do diretório de trabalho.

Ao invocar o comando slocate sem argumentos, o banco de dados pesquisado será o do sistema (/var/lib/slocate/slocate.db). Para consultar o banco de dados pessoal, utilizar a opção --database:

$ slocate --database=.slocate.db tex

Forneceu-se no exemplo a instrução de se buscar por arquivos que contenham os caracteres tex em seu nome.

O tempo de resposta do comando slocate é excelente. Rarissimas vezes será necessária a criação de um banco de dados pessoal, a não ser que o sistema seja muito grande e contenha centenas de milhares de arquivos. Mesmo nestas condições a busca é bastante eficiente.

Caso realmente se opte por um banco de dados individual, uma boa alternativa é criar um alias que especifique as diretivas apropriadas:

alias Slocate="slocate --database=$HOME/.slocate.db"

Desta forma, se especificarmos Slocate estaremos consultando o banco de dados pessoal. O comando slocate continuará fazendo uma busca na listagem completa.

O acesso a este banco de dados é feito através do comando locate.

Usá-lo é extremamente simples, basta fornecer como argumento a cadeia de caracteres que se deseja localizar no sistema.

Finalmente, principalmente em sistemas bastante ativos, com uma grande taxa de modificação do sistema de arquivos, o mais indicado é automatizar a atualização do banco de dados slocate.db. As seguintes entradas na crontab realizam esta atualização uma vez a cada hora:

0 * * * * slocate -u

Para usuários normais

0 * * * * slocate -U /home/usuario -o .slocate.db


Veja a relação completa dos artigos de Rubens Queiroz de Almeida