Impedir que o Spotlight indexe a unidade externa

9

Às vezes, uso um SSD externo com o macOS Sierra, em conjunto com minha unidade interna atual, que possui o macOS Sierra em execução.

Uma coisa irritante sobre o Spotlight é que sempre que procuro algo nele, por exemplo, quando estou executando a partir de minha unidade externa, obtém resultados da unidade externa e interna, o que é algo que eu não quero.

Quando inicializado na minha unidade externa, tentei criar uma exceção do Spotlight para a unidade interna. No entanto, parece que, se eu fizer isso, uma exceção será criada para a minha unidade interna, mesmo quando eu inicializá-la. Portanto, parece que as exclusões do Spotlight estão vinculadas pelo laptop, não pela unidade - o que significa que minha unidade interna será excluída dos resultados do Spotlight, independentemente da unidade externa da qual eu for inicializado.

É possível criar uma exceção do Spotlight para a minha unidade interna quando estou executando a partir da minha unidade externa e da mesma forma uma exceção para a minha unidade externa quando estou executando a partir da minha unidade interna?

Arco esqueleto
fonte

Respostas:

14

Você pode ter um script executado na inicialização que emprega a técnica sugerida nesta publicação https://apple.stackexchange.com/a/91759/183505

Ao inicializar a partir do DriveA (quando você deseja desativar a indexação do Spotlight para o DriveB externo), você pode executar:

touch /Volumes/DriveB/.metadata_never_index

Ao inicializar a partir do DriveB externo e você deseja reativar o holofote, talvez seja possível executar o script de inicialização:

rm /Volumes/DriveB/.metadata_never_index

A postagem vinculada também lista outras maneiras de alterar programaticamente as exclusões de destaque.

Aqui estão algumas maneiras de adicionar um script que será iniciado no login: /programming/6442364/running-script-upon-login-mac

Boa sorte!


Edit: Método usando scripts bash e arquivos plist


Primeiro, crie um script de inicialização. Eu escolhi criar um em~/script.sh

Verifique se é executável chmod +x ~/script.sh

Script para SO que deseja ocultar uma unidade dos holofotes

#!/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 no sistema operacional que deseja indexar a unidade

#!/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

Crie um arquivo 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>

Teste-o carregando e descarregando-o:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
hapi
fonte
Parece que esta é a melhor maneira de fazê-lo. Eu esperava algo mais "nativo", mas isso deve ser bastante confiável. Obrigado.
esqueleto da curva
Quero mencionar um problema que estou enfrentando ao tentar implementar isso: o rmcomando exige que eu o execute usando sudo. Estou usando o primeiro método no link SO que você postou. Você teria alguma sugestão para isso? Preciso usar o método daemon de inicialização para superar isso?
esqueleto da curva
Atualizei minha resposta com uma solução ligeiramente hacky.
hapi
2
Se DriveToHidehouver espaços, seus scripts , como atualmente escritos, falharão. Se você for fazer o teste com [ ... ]aspas duplas, as variáveis ​​devem ser evitadas para evitar que as palavras falhem. Ou use [[ ... ]]para testar, então não é necessário citar duas vezes.
user3439894
Agradável! obrigado user3439894. Atualizei a resposta para refletir sua sugestão.
hapi
2

Desculpas pela nova resposta (representante insuficiente para comentar, pois sou novo aqui)

@hapi - Posso estar confuso, mas os scripts são o contrário?

Script para SO que deseja ocultar uma unidade dos holofotes: renomeia .metadata_never_index

Script no sistema operacional que deseja indexar a unidade: cria .metadata_never_index

Eu pensei que a presença de .metadata_never_indexno volume significava que o Spotlight ignorou?

obrigado

stoutyhk
fonte
Minha experiência é que .metadata_never_indexnão tem nenhum impacto no MacOS 10,13 - superuser.com/questions/591406/... ...
Anon
2

Aprendi hoje que você pode usar um sudo touch /.metadata_never_index_unless_rootfs no diretório raiz de cada unidade para separar índices dos drives de inicialização do OS X. É uma versão especial do .metadata-never-index, porque (re) indexa a unidade quando você inicializa, mas não quando não o faz.

Kappuchino
fonte
-2

Enquanto a outra resposta é um bom método para fazê-lo, pode causar problemas inadvertidamente e pode não ser 100% confiável. Um método melhor seria usar o Alfred , pois é mais flexível que o Spotlight, no sistema operacional externo.

Arco esqueleto
fonte
Como você usaria Alfred para isso?
Matt Sephton
Boa pergunta. Eu gostaria de lembrar como. Acredito que estava falando sobre como você pode excluir pastas da pesquisa Alfred sem precisar usar o método de exclusão sugerido na outra resposta.
Skeleton Bow