19 votos

Evitar que Spotlight indexe la unidad externa

A veces uso un SSD externo con macOS Sierra en él, en conjunto con mi unidad interna actual que tiene macOS Sierra corriendo en él.

Una cosa molesta acerca de Spotlight es que cada vez que busco algo en él por ejemplo cuando estoy ejecutando desde mi disco externo es que me da resultados tanto de mi externo y unidad interna, que es algo que no quiero.

Al arrancar en mi unidad externa, probé a crear una excepción de Spotlight para la unidad interna. Sin embargo, parece que si hago eso, se crea una excepción para mi unidad interna incluso cuando arranco en mi disco interno. Así, parece que las exclusiones de Spotlight son ligado al portátil, no a la unidad de disco - lo que significa que mi unidad interna quedará excluida de los resultados de los focos, independientemente de la unidad externa desde la que arranque.

¿Es posible crear una excepción de Spotlight para mi disco interno cuando estoy ejecutando desde mi disco externo, y del mismo modo una excepción para mi disco externo cuando estoy ejecutando desde mi disco interno?

22voto

hapi Puntos 136

Podrías tener un script que se ejecute al inicio y que emplee la técnica sugerida en este post http://apple.stackexchange.com/a/91759/183505

Cuando se arranca desde la UnidadA (cuando se quiere deshabilitar la indexación de focos para la Unidad ExternaB) se podría ejecutar :

touch /Volumes/DriveB/.metadata_never_index

Cuando se arranca desde el DriveB externo y se quiere volver a habilitar spotlight quizás se podría hacer que se ejecute el script de inicio:

rm /Volumes/DriveB/.metadata_never_index

El post enlazado también enumera otras formas de alterar programáticamente las exclusiones de los focos.

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

Buena suerte.


Editar : Método usando bash scripts y archivos plist


Primero crea un script de inicio. Yo elegí crear uno en ~/script.sh

Asegúrese de que es ejecutable chmod +x ~/script.sh

script para el SO que quiera ocultar una unidad de disco del foco

#!/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 SO 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 cargando y descargando:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist

0 votos

Parece que esta es la mejor manera de hacerlo. Esperaba algo más "nativo" en cierto modo, pero esto debería ser bastante fiable. Gracias.

0 votos

Quiero mencionar un problema que estoy enfrentando al tratar de implementar esto: el rm requiere que lo ejecute con sudo . Estoy utilizando el primer método en el enlace SO que has publicado. ¿Tendrías alguna sugerencia al respecto? ¿Necesito usar el método del demonio de lanzamiento para superar esto?

0 votos

He actualizado mi respuesta con una solución un poco complicada.

17voto

Turtle Puntos 120

Yo uso mdutil para evitar la indexación en el disco externo, creo que es más fiable.

Para comprobar si la unidad externa tiene activada la indexación o no, ejecute el comando

$ mdutil -s /Volumes/<VolumeName>

Indexing enabled. 

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

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

Indexing disabled.

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

$ mdutil -s /Volumes/<VolumeName>

Indexing disabled.

9voto

Kappuchino Puntos 61

Hoy he aprendido que se puede utilizar un sudo touch /.metadata_never_index_unless_rootfs en el directorio root 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 se (re)indexará la unidad cuando se arranque desde ella, pero no cuando no lo haga.

2voto

stoutyhk Puntos 21

Disculpas por la nueva respuesta (no tengo suficiente reputación para comentar ya que soy nuevo aquí)

@hapi - Puede que esté confundido, pero ¿los scripts están al revés?

script para el SO que quiera ocultar una unidad de disco de spotlight: renombra .metadata_never_index

script en el SO que quiere indexar la unidad: crea .metadata_never_index

Pensé que la presencia de .metadata_never_index en el volumen significaba que Spotlight lo ignoraba?

Gracias

-4voto

Skeleton Bow Puntos 108

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

0 votos

¿Cómo utilizarías a Alfred para esto?

0 votos

Buena pregunta. Ojalá recordara cómo. Creo que me refería a la forma de excluir carpetas de la búsqueda de Alfred sin tener que utilizar el método de exclusión que se sugirió en la otra respuesta.

0 votos

Supongo que quería decir que buscaría los archivos usando Alfred en lugar de usar la búsqueda de Spotlight. En retrospectiva esto parece una respuesta tonta a mi pregunta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X