searchfs
es una herramienta de línea de comandos de macOS para buscar rápidamente por nombre de archivo en volúmenes APFS y HFS+ completos. La búsqueda se realiza a nivel del controlador utilizando el catálogo del sistema de archivos. Esto significa que el árbol de directorios del volumen se puede escanear mucho más rápido que con una búsqueda recursiva estándar de nombres de archivos usando find
.
La búsqueda no distingue entre mayúsculas y minúsculas de forma predeterminada. Los archivos coincidentes se imprimen en la salida estándar en el orden en que se encuentran en el catálogo. Consulte la página de manual para obtener más detalles.
KatSearch es una aplicación gráfica nativa de macOS construida sobre searchfs
.
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
Instala binario en /usr/local/bin/
. La página de manual va a /usr/local/share/man/man1/
.
Según mis puntos de referencia, searchfs
se ejecuta entre un 35 y un 50 % más rápido que find
en sistemas de archivos APFS y muchas veces más rápido en HFS+.
Los siguientes son resultados comparativos en una Retina MacBook Pro 2012 con una SSD de 512 GB suministrada por Apple que ejecuta un sistema de archivos APFS que contiene aproximadamente 2 millones de archivos:
$ time searchfs " something "
0,01s user 33,15s system 32% cpu 1:23,59 total
$ time find / -name " *something* "
9,53s user 67,64s system 49% cpu 2:37,39 total
Aunque todavía tengo que probar esto correctamente, searchfs
es probablemente mucho más rápido que find
en unidades de disco duro, que tienen tiempos de búsqueda más altos. También es muy rápido en sistemas de archivos con una pequeña cantidad de archivos.
Apple agregó la búsqueda de catálogos del sistema de archivos a Mac OS con la introducción del Sistema de archivos jerárquico (HFS) en 1985. HFS reemplazó la estructura de tabla plana anterior en el antiguo sistema de archivos MFS con un archivo de catálogo que utiliza una estructura de árbol B. A diferencia del sistema de archivos FAT de Windows, HFS (y más tarde, HFS+) organizó todo el árbol de directorios en un archivo grande en el disco, con nodos interconectados que no coincidían con la estructura jerárquica de carpetas. Esto significaba que se podían buscar volúmenes muy rápidamente independientemente de su tamaño.
El Mac OS clásico expuso esta funcionalidad a través de la función FSCatalogSearch(), que se iteraba eficientemente sobre los nodos, minimizando así los tiempos de búsqueda del disco. En la era anterior a las SSD, esto le dio a Mac una ventaja de rendimiento significativa sobre Windows cuando se trataba de búsquedas de volumen completo. Durante mucho tiempo, FSCatalogSearch siguió estando disponible en Mac OS X/macOS a través de las API de Carbon, pero ahora ha quedado obsoleto y no es compatible con APFS, el nuevo sistema de archivos de Apple.
Sin embargo, la búsqueda de catálogo tanto para HFS+ como para APFS está disponible en las bibliotecas del sistema de bajo nivel de Darwin a través de la función searchfs(). El programa searchfs
hace uso de esta función.
Copyright © 2017-2020 Sveinbjorn Thordarson <[email protected]>
Se permite la redistribución y el uso en formato fuente y binario, con o sin modificación, siempre que se cumplan las siguientes condiciones:
Las redistribuciones del código fuente deben conservar el aviso de derechos de autor anterior, esta lista de condiciones y el siguiente descargo de responsabilidad.
Las redistribuciones en formato binario deben reproducir el aviso de derechos de autor anterior, esta lista de condiciones y la siguiente exención de responsabilidad en la documentación y/u otros materiales proporcionados con la distribución.
Ni el nombre del titular de los derechos de autor ni los nombres de sus colaboradores pueden usarse para respaldar o promocionar productos derivados de este software sin un permiso previo específico por escrito.
ESTE SOFTWARE ES PROPORCIONADO POR LOS TITULARES DE DERECHOS DE AUTOR Y COLABORADORES "TAL CUAL" Y SE RENUNCIA A CUALQUIER GARANTÍA EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD E IDONEIDAD PARA UN PROPÓSITO PARTICULAR. EN NINGÚN CASO EL TITULAR DE LOS DERECHOS DE AUTOR O LOS COLABORADORES SERÁN RESPONSABLES DE NINGÚN DAÑO DIRECTO, INDIRECTO, INCIDENTAL, ESPECIAL, EJEMPLAR O CONSECUENTE (INCLUYENDO, PERO NO LIMITADO A, ADQUISICIÓN DE BIENES O SERVICIOS SUSTITUTOS; PÉRDIDA DE USO, DATOS O GANANCIAS; O INTERRUPCIÓN DEL NEGOCIO) CUALQUIER CAUSA Y EN CUALQUIER TEORÍA DE RESPONSABILIDAD, YA SEA POR CONTRATO, RESPONSABILIDAD ESTRICTA O AGRAVIO (INCLUYENDO NEGLIGENCIA O DE OTRA MANERA) QUE SURJA DE CUALQUIER MANERA DEL USO DE ESTE SOFTWARE, INCLUSO SI SE ADVIERTE DE LA POSIBILIDAD DE DICHO DAÑO.