Encontre, indexe, exporte e copie arquivos em servidores de arquivos grandes e lentos, sem instalar nada
Busca por nome e extensão · Índice local · Excel / CSV / TXT · Cópia paralela · SMB, DFS e unidades mapeadas · Windows e Linux
⬇️ Baixar • 📖 Como usar • 📋 Novidades • 🐞 Relatar problema • 🌐 English • ☕ Doe um café
O ReperIO varre pastas locais e servidores de arquivos de rede (SMB/CIFS, DFS, unidades mapeadas) atrás de arquivos por nome e extensão: centenas de milhares de pastas, pastas com dezenas de milhares de arquivos e servidores que às vezes param de responder. Os achados formam o seu repertório: você pode filtrar, ordenar, exportar para Excel, CSV ou TXT e copiar em lote.
Foi criado para bancos de imagens e dados geográficos (GIS), mas serve a qualquer acervo grande de arquivos em rede.
Projeto pessoal e independente de Joberth Firmino Gambati: não é um produto oficial de nenhuma instituição nem fala em nome dela.
Do latim reperire, "achar, descobrir, trazer à luz", a mesma raiz de repertório (répertoire, repertoire, repertorium) em quase todas as línguas ocidentais. É o que o programa faz: acha os arquivos e compõe o repertório do que foi encontrado. O IO final lembra input/output: entrada e saída de dados, o servidor que é lido e a cópia e a exportação que saem dele.
| 🔎 Busca por nome e extensão | "Contém" (IMAGENS_) ou curingas (*.shp, LC08_*_B4.TIF, IMG_??), com filtro de extensões |
| ⚡ Rápido em pastas enormes | Leitura em paralelo e em lotes grandes por ida ao servidor (~3× mais rápido em pastas com 65 mil arquivos) |
| 🗂️ Índice local | A 2ª busca na mesma pasta sai em segundos, com qualquer padrão e até com o servidor fora do ar |
| 🛡️ Não trava | Uma pasta que o servidor não consegue abrir não segura a busca: o ReperIO troca de conexão e trata a pasta à parte |
| 📤 Exportar | Resultados para Excel (.xlsx), CSV ou TXT, sem precisar do Excel para gerar |
| 📋 Cópia paralela | 4 cópias simultâneas, em blocos de 1 MB, com cancelamento a qualquer momento e nomes repetidos renomeados |
| 💻 Portátil | Executável único para Windows e Linux; sem instalação, sem administrador, sem pip |
| Sistema | Como rodar | Requisitos |
|---|---|---|
| Windows 10/11 (64 bits) | ReperIO.exe |
nenhum |
| Linux x64 | ./ReperIO |
glibc 2.35+ (Ubuntu 22.04+, Debian 12+, Fedora 36+…) |
| macOS e outros | código-fonte | Python 3.8+ com tkinter |
- Baixe o
.zipdo seu sistema em Releases:ReperIO-<versão>-windows-x64.zipReperIO-<versão>-linux-x64.zip
- Extraia em qualquer pasta (área de trabalho, pendrive, rede). Não precisa instalar.
- Abra:
- Windows:
iniciar.bat(ou direto oReperIO.exe) - Linux:
./iniciar.sh(ou direto o./ReperIO)
- Windows:
O lançador usa o Python 3 com tkinter da máquina, se houver (ArcGIS Pro, python.org, python3 do
Linux); caso contrário, abre o executável. Nos dois casos, nada é baixado nem instalado.
Note
Na primeira execução o Windows pode mostrar o aviso do SmartScreen (o executável não é assinado
digitalmente): Mais informações → Executar assim mesmo. Se o antivírus corporativo bloquear o
.exe (falso positivo comum em programas empacotados com PyInstaller), peça a liberação à TI ou
rode pelo código-fonte. Confira a integridade do download com o SHA256SUMS.txt da Release.
- Pasta Raiz: onde buscar. Aceita unidade mapeada (
Y:\Imagens), caminho de rede (\\servidor\dados) ou pasta local. - Padrão: texto contido no nome (
IMAGENS_) ou curingas (*.tif,LC08_*_B4*). - Extensões (opcional):
.shp .tif .pdf, separadas por espaço ou vírgula. - Iniciar busca. Os resultados aparecem enquanto a busca acontece. Clicar em Iniciar busca de novo troca o padrão sem perder o que já foi lido.
- Selecione os arquivos (Shift/Ctrl + clique, Selecionar todos, Inverter) e:
- Exportar... a lista para Excel, CSV ou TXT; ou
- informe o Destino e clique Copiar selecionados. Plana coloca tudo numa pasta; Manter estrutura original reproduz as subpastas.
Clique no cabeçalho de uma coluna para ordenar. A barra inferior mostra o andamento e, numa segunda linha, avisos: pastas lentas, troca de conexão e pastas que não puderam ser lidas (clique para ver a lista e o motivo).
Modos de busca: Rápida (padrão: várias pastas em paralelo, com concorrência que se adapta ao servidor) ou Sequencial (uma pasta por vez, para servidores muito frágeis).
O botão Exportar... grava todos os resultados, ou só os selecionados, na ordem da lista:
| Formato | Conteúdo | Ideal para |
|---|---|---|
| Excel (.xlsx) | Nome, extensão, tamanho (número e legível), data de modificação (data real), pasta e caminho; cabeçalho congelado e filtro | Analisar, filtrar e compartilhar |
| CSV | As mesmas colunas, separadas por ;, em UTF-8 com BOM |
Excel em português, LibreOffice, QGIS, scripts |
| TXT | Um caminho completo por linha | Scripts, robocopy, listas de cópia |
- O
.xlsxé gerado pelo próprio ReperIO, sem Excel e sem bibliotecas extras, e abre no Excel, no LibreOffice e no Google Planilhas. - O CSV usa
;, padrão do Excel em português; num Windows em inglês, prefira o.xlsx. - Nomes que começam com
=,+,-ou@são neutralizados no CSV, contra injeção de fórmulas.
Toda busca grava num índice local todos os arquivos de cada pasta lida, não só os que casaram com o padrão. Na busca seguinte:
| Situação | O que acontece |
|---|---|
| Pasta já indexada por completo | Resultados em segundos, sem tocar no servidor, com qualquer padrão |
| Busca anterior interrompida | O que já foi lido sai do índice na hora; a varredura continua de onde parou |
| Verificar alterações no servidor marcado | Confere a data de cada pasta e relê só as que mudaram; arquivos e pastas novos entram, apagados saem |
- ~45 MB de índice por milhão de arquivos; uma busca no índice leva ~3 s por milhão.
- Apagar índice limpa tudo; desmarque Usar para ignorá-lo numa busca.
- Fica em
%LOCALAPPDATA%\reperio\(Windows) ou~/.local/state/reperio/(Linux).
Em servidores de arquivos Windows, uma única pasta que o servidor não consegue abrir congestiona a conexão SMB inteira por vários minutos: tudo o que for pedido por ela espera e falha com timeout (erro 121). Medimos que o servidor continua respondendo normalmente por outras conexões. O ReperIO aproveita isso:
- Várias conexões independentes. Descobre o servidor real por trás da unidade mapeada e do DFS e testa nomes alternativos do mesmo servidor (nome completo, nome completo com ponto final, IP). Para o Windows, cada nome é uma conexão separada.
- Troca na hora. Se nenhuma leitura de uma conexão recebe dados por alguns segundos, a busca passa para outra e refaz imediatamente as pastas que ficaram presas. Pastas grandes que continuam recebendo dados não são confundidas com pastas presas.
- Quarentena. A pasta culpada é lida em segundo plano, por uma conexão separada, sem atrasar o resto. Se o servidor não responder nem assim, ela entra na lista de pastas problemáticas, com o motivo para encaminhar à TI, e é tentada de novo automaticamente a cada 12 h.
- Respeito ao usuário. A conexão usada pela unidade mapeada, a mesma do Explorer, nunca recebe leituras arriscadas: sua navegação no servidor não é afetada.
Resultado medido numa árvore real de 3.246 pastas com uma pasta ilegível no servidor: a versão 2.1 travava (36 pastas em 28 min); desde a 2.3, os resultados principais saem em ~1 minuto, a árvore inteira é lida e só a pasta ilegível fica de fora, com aviso. A 2ª busca sai do índice em menos de 1 segundo.
Com uma conexão só (Linux, disco local, servidor sem outros nomes), as pastas que falham por rede vão para o fim da fila e são tentadas de novo, uma por vez, depois de todo o resto.
No Linux não existe "unidade Y:": monte o compartilhamento e busque no ponto de montagem.
sudo apt install cifs-utils
sudo mkdir -p /mnt/dados
sudo mount -t cifs //SERVIDOR/compartilhamento /mnt/dados \
-o username=SEU_USUARIO,domain=SEU_DOMINIO,vers=3.0,roPelo gerenciador de arquivos (GNOME/KDE), o caminho fica em /run/user/<uid>/gvfs/....
O iniciar.bat diz que não encontrou Python nem o executável
Você baixou o código-fonte em vez do pacote. Baixe o .zip de
Releases, que já inclui o ReperIO.exe.
Linux: "tkinter não está disponível neste Python"
Instale o tkinter (sudo apt install python3-tk ou sudo dnf install python3-tkinter) ou use o
executável ./ReperIO do pacote, que já traz tudo.
Algumas pastas aparecem como "não puderam ser lidas"
Clique no aviso amarelo, na base da janela, para ver a lista com a causa de cada uma: acesso negado, caminho de rede não encontrado, timeout etc. Pastas com timeout que falham por todas as conexões são, em geral, problema do servidor: arquivo bloqueado, antivírus, disco ou sistema de arquivos. Encaminhe a lista à TI. Elas são tentadas de novo a cada 12 h, ou já, marcando Tentar de novo as pastas problemáticas agora.
A busca parece lenta
Pastas com dezenas de milhares de arquivos levam tempo para serem listadas na primeira vez; da segunda em diante, o índice responde em segundos. Acompanhe a barra de status e o log (abaixo).
Onde fica o log?
- Windows:
%LOCALAPPDATA%\reperio\debug_execution.log - Linux:
~/.local/state/reperio/debug_execution.log
Marcas úteis: [PROGRESSO], [PASTA LENTA], [CANAL] (conexões e trocas), [QUARENTENA],
[REFEITA], [FALHA FINAL], [ÍNDICE].
Quem usava a versão 2.4 ou anterior (com o nome antigo "GIS File Finder") tem o índice e o log migrados automaticamente para a pasta nova.
Requer Python 3.8+ com tkinter e nenhuma biblioteca extra.
git clone https://github.com/Yiuky/ReperIO.git
cd ReperIO
python reperio.py # Windows (ou iniciar.bat)
python3 reperio.py # Linux/macOS (ou ./iniciar.sh)Qual Python o iniciar.bat usa
Nesta ordem, o primeiro que for 3.8+ e tiver tkinter:
- variável de ambiente
REPERIO_PYTHON py -3(Python Launcher do python.org)- ArcGIS Pro (
%ProgramFiles%\ArcGIS\Pro\bin\Python\envs\arcgispro-py3) %LOCALAPPDATA%\Programs\Python\Python3*e%ProgramFiles%\Python3*pythonno PATH
Cada candidato é testado de verdade e executado em modo isolado (-I), para que variáveis deixadas
pelo ArcGIS 10.x (Python 2.7) não interfiram. O Python do QGIS não traz tkinter e é ignorado.
Muitos usuários estão em máquinas corporativas onde instalar pacotes nem sempre é permitido. Por isso
o ReperIO usa somente a biblioteca padrão do Python: interface em tkinter, índice em sqlite3,
listagem rápida via ctypes (Windows) e Excel escrito com zipfile.
reperio.py aplicativo completo, arquivo único (busca, índice, conexões, exportação, interface)
iniciar.bat / .sh lançadores: Python da máquina, senão o executável
tests/ testes automatizados (unittest; cenários de rede simulados)
tools/build.py gera o executável (PyInstaller) e o .zip de distribuição
tools/screenshot.py gera a imagem do README com dados de demonstração
tools/make_logo.ps1 gera o logo; tools/make_icon.py monta o ícone .ico
.github/ testes (Windows/Linux), Release automática, modelos de issue e PR
Regras que mantêm a interface fluida e o servidor saudável, detalhadas no AGENTS.md: nenhum I/O de rede na thread da interface; threads conversam por filas; leituras arriscadas nunca passam pela conexão do usuário.
python -m unittest discover -s tests -v # Windows
xvfb-run -a python3 -m unittest discover -s tests -v # Linux sem tela61 testes, incluindo a simulação dos cenários vistos em servidor real: pasta que trava a conexão, vítimas refeitas na hora, cascata entre conexões, pastas grandes que não são travamento, nomes inválidos de servidores Samba antigos e exportação com datas corrompidas. O GitHub Actions roda a suíte em Windows e Linux, com Python 3.8 e 3.13, a cada push.
- Atualize
__version__emreperio.py, o CHANGELOG e oCITATION.cff. git tag vX.Y.Z && git push origin vX.Y.Z.- O GitHub Actions roda os testes, compila
ReperIO.exe(Windows) eReperIO(Linux), monta os.zipe publica a Release com oSHA256SUMS.txt.
Ideias, relatos de erro e pull requests são bem-vindos: veja o guia de contribuição, o roadmap e o código de conduta. Falhas de segurança: siga a política de segurança.
Se o ReperIO ajudou num trabalho, cite-o pelo botão "Cite this repository" do GitHub (gerado a partir do CITATION.cff) ou assim:
Gambati, J. F. (2026). ReperIO: busca, índice, exportação e cópia de arquivos em servidores (versão 2.5.0) [Software]. https://github.com/Yiuky/ReperIO
ReperIO (from Latin reperire, "to find, to discover", the root of repertory) is a portable, dependency-free desktop tool for Windows and Linux that searches local folders and network file servers (SMB/CIFS, DFS, mapped drives) for files by name and extension, builds a local SQLite index for instant repeated searches, exports results to Excel (.xlsx), CSV or TXT, and copies files in parallel.
It was built for very large, slow and unreliable file servers. On Windows, a single folder that the server cannot open stalls the whole SMB connection for minutes; ReperIO opens several independent connections to the same server (FQDN, FQDN with trailing dot, IP), switches connection as soon as one stops making progress, re-issues stuck reads immediately, and reads the culprit folder in quarantine on a separate connection, never on the user's own (Explorer) connection. On a real tree of 3,246 folders with one unreadable folder, results arrive in about one minute instead of stalling, and repeated searches come from the index in under a second.
Single-file Python 3.8+ application using only the standard library (tkinter, sqlite3, ctypes, zipfile), with standalone executables built by PyInstaller. MIT License.
O ReperIO é gratuito e de código aberto, desenvolvido nas horas vagas. Se ele economizou o seu tempo, considere pagar um café para o desenvolvedor: ajuda a manter o projeto vivo e a trazer novos recursos.


