Evite que Spotlight indexe una unidad externa

A veces uso una unidad externa con macOS. Esto es junto con mi unidad interna actual que también ejecuta macOS.

Me resulta molesto que, cada vez que busco algo (como una aplicación) cuando estoy en cualquiera de los sistemas operativos cuando la unidad externa está conectada, obtengo resultados tanto de mi unidad externa como de la interna. Sin embargo, solo estoy interesado en ejecutar la aplicación desde la unidad desde la que he arrancado.

Intenté eludir este problema mientras estaba en mi disco externo creando una excepción de Spotlight para el disco interno. Esto evitó que aparecieran archivos y aplicaciones de mi disco interno. Sin embargo , esto también me impide buscar archivos en mi disco interno, ¡cuando arranco desde mi disco interno! Claramente esto es algo que no quiero.

Parece que las exclusiones de Spotlight son por unidad, lo que no es ideal en este escenario.

¿Hay alguna manera de hacer que Spotlight indexe solo la unidad que está arrancada actualmente? De esta manera, cuando arranque desde mi disco externo, obtendré resultados solo desde el disco externo, y lo mismo con el disco interno.

Respuestas (5)

Podría tener un script que se ejecute al inicio y emplee la técnica sugerida en esta publicación https://apple.stackexchange.com/a/91759/183505

Al arrancar desde la unidad A (cuando desea deshabilitar la indexación de Spotlight para la unidad externa B), puede ejecutar:

touch /Volumes/DriveB/.metadata_never_index

Al arrancar desde DriveB externo y desea volver a habilitar Spotlight, tal vez podría ejecutar su secuencia de comandos de inicio:

rm /Volumes/DriveB/.metadata_never_index

La publicación vinculada también enumera otras formas de modificar programáticamente las exclusiones de Spotlight.

Aquí hay algunas formas de agregar un script que se iniciará al iniciar sesión: https://stackoverflow.com/questions/6442364/running-script-upon-login-mac

¡Buena suerte!


Editar: Método usando scripts bash y archivos plist


Primero cree un script de inicio. Elegí crear uno en~/script.sh

Asegúrate de que sea ejecutablechmod +x ~/script.sh

Script para el sistema operativo que quiere ocultar una unidad de Spotlight

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"  # a new name

# if flag exists rename it.
if [ -a "$flagLocation/.metadata_never_index" ]; then 
    mv "$flagLocation/.metadata_never_index" "$flagLocation/$flagRemoved";
fi

Script en el sistema operativo que quiere indexar la unidad

#!/bin/bash
flagLocation="/Volumes/DriveToHide"
flagRemoved=".ney_the_index"

if [ -a "$flagLocation/$flagRemoved" ]; then
    mv "$flagLocation/$flagRemoved" "$flagLocation/.metadata_never_index"
fi

if [ ! -a "$flagLocation/$flagRemoved" ] || [ ! -a "$flagLocation/.metadata_never_index" ] ; then
    touch "$flagLocation/.metadata_never_index"
fi

Crear un archivo plist~/Library/LaunchAgents/com.user.loginscript.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>Program</key>
   <string>/Users/yourusername/script.sh</string>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

Pruébalo cargándolo y descargándolo:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
Parece que esta es la mejor manera de hacerlo. Esperaba algo más "nativo" de alguna manera, pero esto debería ser bastante confiable. Gracias.
Quiero mencionar un problema al que me enfrento al intentar implementar esto: el rmcomando requiere que lo ejecute usando sudo. Estoy usando el primer método en el enlace SO que publicaste. ¿Tendrías alguna sugerencia para eso? ¿Necesito usar el método Launch Daemon para superar esto?
Actualicé mi respuesta con una solución ligeramente hacky.
Si DriveToHidetiene espacios, entonces sus scripts , tal como están escritos actualmente, fallarán. Si va a probar con [ ... ], entonces comillas dobles las variables para evitar que se borren y se dividan las palabras. O utilícelo [[ ... ]]para probar, entonces las comillas dobles no son necesarias.
¡Bonito! gracias usuario3439894. Actualicé la respuesta para reflejar tu sugerencia.
Por cierto, en mi primer comentario, "prevenir blobbing" es un error de autocorrección y debería ser "prevenir globbing"
@hapi Wow, ¡gracias por el esfuerzo que hiciste para escribir ese método! Voy a tratar de salir :)

Aprendí hoy que puede usar un sudo touch /.metadata_never_index_unless_rootfsen el directorio raíz de cada unidad para separar los índices de las unidades de arranque OS X. Es una versión especial de .metadata-never-index, porque (re) indexará la unidad cuando arranque desde ella, pero no cuando no lo haga.

Esto parece una buena respuesta a la pregunta. ¿Pero tienes una fuente para esto?

Uso mdutilel comando para evitar la indexación en un disco externo, creo que es más confiable.

Para verificar si la unidad externa tiene la indexación habilitada o no, ejecute el comando:

$ mdutil -s /Volumes/<VolumeName>

Indexing enabled. 

Para deshabilitar la indexación, ejecute el comando (requiere contraseña de usuario):

$ sudo mdutil -i off /Volumes/<VolumeName>

Indexing disabled.

Puede volver a verificar el estado de indexación con el primer comando nuevamente:

$ mdutil -s /Volumes/<VolumeName>

Indexing disabled.
Si agrega -dal comando ( sudo mdutil -i off -d /Volumes/<VolumnName>), también deshabilitará la búsqueda.
¿Este cambio es permanente? ¿Seguirá siendo efectivo si desconecto y conecto mi disco externo?

Disculpas por la nueva respuesta (no hay suficiente representante para comentar ya que soy nuevo aquí)

@hapi: puedo estar confundido, pero ¿los guiones están al revés?

Script para el sistema operativo que quiere ocultar una unidad de Spotlight: cambia el nombre.metadata_never_index

Script en el sistema operativo que desea indexar la unidad: crea.metadata_never_index

Pensé que la presencia de .metadata_never_indexen el volumen significaba que Spotlight lo ignoraba.

Gracias

Mi experiencia es que .metadata_never_indexno tiene ningún impacto en macOS 10.13 - superuser.com/questions/591406/… ...
Estás bien. Creo que los guiones hacen lo contrario de lo que dice la línea descriptiva de arriba.

Mientras que la otra respuesta es un buen método para hacerlo, puede causar problemas sin darse cuenta y puede no ser 100% confiable. Un mejor método sería usar Alfred , ya que es más flexible que Spotlight, en el sistema operativo externo.

¿Cómo usarías a Alfred para esto?
Buena pregunta. Ojalá recordara cómo. Creo que estaba hablando de la forma en que puede excluir carpetas de la búsqueda de Alfred sin tener que usar el método de exclusión que se sugirió en la otra respuesta.
Supongo que quise decir que buscaría archivos usando Alfred en lugar de usar la búsqueda de Spotlight. En retrospectiva, esto parece una respuesta tonta a mi pregunta.