Empêcher Spotlight d'indexer un lecteur externe


9

J'utilise parfois un SSD externe avec macOS Sierra, conjointement avec mon lecteur interne actuel sur lequel macOS Sierra est exécuté.

Une chose ennuyeuse à propos de Spotlight est que chaque fois que je recherche quelque chose dedans, par exemple lorsque je suis en cours d'exécution à partir de mon disque externe, c'est que j'obtiens des résultats à la fois sur mon disque externe et interne, ce que je ne veux pas.

Lors du démarrage sur mon lecteur externe, j'ai essayé de créer une exception Spotlight pour le lecteur interne. Cependant, il semble que si je le fais, une exception est créée pour mon lecteur interne même lorsque je démarre sur mon lecteur interne. Ainsi, il semble que les exclusions Spotlight soient liées à l'ordinateur portable, pas au lecteur - ce qui signifie que mon lecteur interne sera exclu des résultats Spotlight, quel que soit le lecteur externe à partir duquel je démarre.

Est-il possible de créer une exception Spotlight pour mon lecteur interne lorsque j'exécute à partir de mon lecteur externe, et de même une exception pour mon lecteur externe lorsque j'exécute à partir de mon lecteur interne?

Réponses:


14

Vous pourriez avoir un script qui s'exécute au démarrage et qui utilise la technique suggérée dans cet article https://apple.stackexchange.com/a/91759/183505

Lors du démarrage à partir de DriveA (lorsque vous souhaitez désactiver l'indexation Spotlight pour External DriveB), vous pouvez exécuter:

touch /Volumes/DriveB/.metadata_never_index

Lors du démarrage à partir de DriveB externe et que vous souhaitez réactiver Spotlight, vous pouvez peut-être exécuter votre script de démarrage:

rm /Volumes/DriveB/.metadata_never_index

Le message lié répertorie également d'autres façons de modifier par programme les exclusions Spotlight.

Voici quelques façons d'ajouter un script qui se lancera à la connexion: /programming/6442364/running-script-upon-login-mac

Bonne chance!


Edit: méthode utilisant des scripts bash et des fichiers plist


Créez d'abord un script de démarrage. J'ai choisi d'en créer un à~/script.sh

Assurez-vous qu'il est exécutable chmod +x ~/script.sh

Script pour OS qui veut cacher un lecteur des projecteurs

#!/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 sur l'OS qui veut indexer le lecteur

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

Créer un fichier 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>

Testez-le en le chargeant et en le déchargeant:

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

On dirait que c'est la meilleure façon de le faire. J'espérais quelque chose de plus "natif" en quelque sorte, mais cela devrait être assez fiable. Je vous remercie.
Skeleton Bow

Je veux mentionner un problème auquel je suis confronté en essayant de l'implémenter: la rmcommande nécessite que je l'exécute en utilisant sudo. J'utilise la première méthode dans le lien SO que vous avez publié. Auriez-vous des suggestions à ce sujet? Dois-je utiliser la méthode de lancement du démon pour résoudre ce problème?
Skeleton Bow

J'ai mis à jour ma réponse avec une solution légèrement hacky.
hapi

2
S'il DriveToHidea des espaces, alors vos scripts , tels qu'ils sont actuellement écrits, échoueront. Si vous allez tester avec [ ... ]puis double guillemet les variables pour éviter les taches et le fractionnement de mots. Ou utilisez [[ ... ]]pour tester, puis il n'est pas nécessaire de citer deux fois.
user3439894

Agréable! merci user3439894. J'ai mis à jour la réponse pour refléter votre suggestion.
hapi

2

Toutes mes excuses pour la nouvelle réponse (pas assez de représentant pour commenter car je suis nouveau ici)

@hapi - Je suis peut-être confus, mais les scripts sont-ils dans le mauvais sens?

Script pour OS qui veut cacher un lecteur des projecteurs: renomme .metadata_never_index

Script sur l'OS qui veut indexer le lecteur: crée .metadata_never_index

Je pensais que la présence de .metadata_never_indexsur le volume signifiait que Spotlight l'ignorait?

Merci


Mon expérience est que cela .metadata_never_indexn'a aucun impact sur macOS 10.13 - superuser.com/questions/591406/… ...
Anon

2

J'ai appris aujourd'hui que vous pouvez utiliser un sudo touch /.metadata_never_index_unless_rootfs dans le répertoire racine de chaque lecteur pour séparer les index des lecteurs de démarrage OS X. Il s'agit d'une version spéciale de .metadata-never-index, car elle (ré) indexera le disque lorsque vous démarrez à partir de celui-ci, mais pas lorsque vous ne le faites pas.


-2

Alors que l'autre réponse est une bonne méthode pour le faire, elle peut provoquer des problèmes par inadvertance et peut ne pas être fiable à 100%. Une meilleure méthode serait d'utiliser Alfred , car il est plus flexible que Spotlight, sur le système d'exploitation externe.


Comment utiliseriez-vous Alfred pour cela?
Matt Sephton

Bonne question. J'aimerais pouvoir me rappeler comment. Je pense que je parlais de la façon dont vous pouvez exclure des dossiers de la recherche Alfred sans avoir à utiliser la méthode d'exclusion suggérée dans l'autre réponse.
Skeleton Bow
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.