Evitar que Spotlight indexe la unidad externa


9

A veces uso un SSD externo con macOS Sierra, junto con mi unidad interna actual que tiene macOS Sierra ejecutándose.

Una cosa molesta sobre Spotlight es que cada vez que busco algo en él, por ejemplo, cuando ejecuto desde mi unidad externa, es que obtengo resultados tanto de mi unidad externa como interna, que es algo que no quiero.

Cuando arranqué en mi disco externo, intenté crear una excepción de Spotlight para el disco interno. Sin embargo, parece que si hago eso, se crea una excepción para mi unidad interna incluso cuando inicio en mi unidad interna. Por lo tanto, parece que las exclusiones de Spotlight están vinculadas por la computadora portátil, no por la unidad , lo que significa que mi unidad interna se excluirá de los resultados de Spotlight sin importar desde qué unidad externa arranque.

¿Es posible crear una excepción de Spotlight para mi disco interno cuando estoy ejecutando desde mi disco externo, y también una excepción para mi disco externo cuando estoy corriendo desde mi disco interno?

Respuestas:


14

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

Al arrancar desde DriveA (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 script de inicio:

rm /Volumes/DriveB/.metadata_never_index

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

Aquí hay algunas formas de agregar un script que se iniciará al iniciar sesión: /programming/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 ejecutable chmod +x ~/script.sh

Script para el sistema operativo que quiere ocultar una unidad de atención

#!/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ébelo 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.
Skeleton Bow

Quiero mencionar un problema al que me enfrento al tratar de 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 de lanzamiento del demonio para superar esto?
Skeleton Bow

Actualicé mi respuesta con una solución ligeramente hacky.
hapi

2
Si DriveToHidetiene espacios, sus scripts , como están escritos actualmente, fallarán. Si va a realizar una prueba con [ ... ]comillas dobles, coméntelas para evitar el bloqueo y la división de palabras. O use [[ ... ]]para probar, luego no se necesita doble cita.
user3439894

¡Agradable! gracias usuario3439894. Actualicé la respuesta para reflejar su sugerencia.
hapi

2

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

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

Script para sistema operativo que quiere ocultar una unidad de atención: renombra .metadata_never_index

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

Pensé que la presencia .metadata_never_indexen el volumen significaba que Spotlight lo ignoró.

Gracias


Mi experiencia es que .metadata_never_indexno tiene ningún impacto en macOS 10.13 - superuser.com/questions/591406/… ...
Anon

2

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


-2

Mientras que la otra respuesta es un buen método para hacerlo, puede causar problemas inadvertidamente y puede no ser 100% confiable. Un método mejor 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?
Matt Sephton el

Buena pregunta. Desearía recordar 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.
Skeleton Bow
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.