Blog Linux Avante

O plocate é um locate muito mais rápido (substitui o mlocate)

9 de setembro de 2021

Plocate Encontrar Arquivos Linha de Comando

locate é uma ferramenta UNIX usada para encontrar arquivos por nome no sistema de arquivos, que usa um banco de dados pré-fabricado de arquivos gerados (criado usando updatedb ). Usar locate é mais rápido que find, mas requer o banco de dados atualizado para encontrar arquivos recém-adicionados.

locate foi criado em 1982, com as versões BSD e GNU Findutils derivando da implementação original.

plocate é novo (o primeiro lançamento estável saiu a menos de um ano), muito mais rápido que o locate. É baseado em listas de postagem, dando pesquisas muito mais rápidas em um índice muito menor.

A ferramenta de linha de comando é uma substituição de para mlocate (Merging Locate; um banco de dados de acesso restrito, mostrando apenas nomes de arquivos acessíveis ao usuário) em quase todos os aspectos, incluindo reutilização do banco de dados mlocate (o plocate cria seu próprio índice usando plocate-build que lê o banco de dados feito por updatedb) e é rápido em SSDs e HDDs.

O plocate funciona criando um índice invertido sobre trigramas (combinações de três bytes) nas strings de pesquisa, o que permite limitar rapidamente o conjunto de candidatos a uma lista muito pequena, em vez de digitalização linear a cada entrada. Faz quase toda a E/S de forma assíncrona usando io_uring se disponível (Linux 5.1+), que reduz o impacto da latência de busca em sistemas sem SSDs.

Para mostrar como o plocate é rápido comparado ao mlocate, o desenvolvedor do plocate mostra este benchmark na página inicial da ferramenta em que o plocate é capaz de encontrar 2 arquivos de 27 milhões em apenas alguns milissegundos:

Plocate Performance

Além disso, como mlocate, o plocate mostra todos os arquivos que correspondem à consulta de pesquisa somente se eles estiverem visíveis para o usuário executando o comando, pulando todos os arquivos restritos.

Como instalar e usar o plocate

O plocate está disponível nos repositórios oficiais de algumas distribuições Linux, incluindo Arch Linux/Manjaro e Debian (Bullseye e mais recente, bem como os backports Buster)/Ubuntu (21.04 e mais recente). Você pode instalá-lo usando:

  • Arch Linux/Manjaro:

Comandos para usar no terminal

sudo pacman -S plocate

  • Debian (Bullseye e mais recente, assim como o Buster Backports)/Ubuntu (21.04 e mais recente):

Comandos para usar no terminal

plocate find files command linesudo apt install plocate

Para compilá-lo em outras distribuições do Linux Você precisará de um compilador C ++ 17, ZSTD (cabeçalhos de desenvolvimento) e Meson. No meu teste no Fedora, também tive que instalar o libatomic para compilar o programa. Opcionalmente, você também vai querer liburing e um kernel suportando io_uring (Linux 5.1 ou mais recente) para melhor desempenho, especialmente se você não estiver usando um SSD. Outra dependência opcional é SystemD, que pode ser usada para executar o temporizador de atualização de banco de dados do plocate integrado.

Para instalar as dependências de compilação do plocate no Fedora (incluindo o opcional liburing), use:

Comandos para usar no terminal

sudo dnf install libzstd-devel liburing-devel libatomic gcc-c++ meson

ou para compilá-lo em Ubuntu 20.04, por exemplo (observe que o Ubuntu 20.04 não tem liburing em seus repositórios, portanto, o plocate não usará todo o seu poder se você estiver usando um HDD regular), você precisará dessas dependências:

Comandos para usar no terminal

sudo apt install libzstd-dev meson build-essential

Depois de ter as dependências de compilação instaladas, Baixe e extraia o plocate e use o terminal para navegar para sua pasta. Agora você pode prosseguir para compilar e instalar o plocate no seu sistema:

Comandos para usar no terminal

meson objcd objninjasudo groupadd --system plocatesudo ninja installsudo systemctl enable plocate-updatedb.timer

Agora você pode começar a usar o plocate. Antes de usá-lo pela primeira vez, crie seu banco de dados (índice de arquivo) usando o seguinte comando:

Comandos para usar no terminal

sudo updatedb

A primeira vez que você executa updatedb, ele digitaliza todo o sistema de arquivos, e pode demorar um pouco. Depois deve ser muito mais rápido.

Agora use plocate como você usaria locate.

Pesquisando por um arquivo usando o plocate:

Comandos para usar no terminal

locate

Sendo MEU_ARQUIVO.EXT o arquivo que você deseja encontrar.

Para mais opções, como ignorar maiúsculas/minúsculas, pesquisa com expressões regulares, etc., consulte a ajuda e a página man da ferramenta.

Temos artigos relacionados a esse tema aqui no blog, como um tutorial de como excluir, e como encontrar arquivos modificados no último n dias ou minutos usando find

Confira a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.
Propaganda