Verhindern Sie, dass Spotlight externe Laufwerke indiziert

Manchmal verwende ich ein externes Laufwerk mit macOS darauf. Dies steht in Verbindung mit meinem aktuellen internen Laufwerk, auf dem auch macOS ausgeführt wird.

Ich finde es ärgerlich, dass ich immer dann, wenn ich in einem der beiden Betriebssysteme nach etwas suche (z. B. einer Anwendung), Ergebnisse sowohl von meinem externen als auch von meinem internen Laufwerk erhalte. Ich bin jedoch nur daran interessiert, die Anwendung von dem Laufwerk auszuführen, von dem ich gebootet habe.

Ich habe versucht, dieses Problem auf meinem externen Laufwerk zu umgehen, indem ich eine Spotlight-Ausnahme für das interne Laufwerk erstellt habe. Dadurch wurde verhindert, dass Dateien und Apps von meinem internen Laufwerk angezeigt wurden. Dies hindert mich jedoch auch daran, nach Dateien auf meinem internen Laufwerk zu suchen, wenn ich von meinem internen Laufwerk gebootet werde! Das ist eindeutig etwas, was ich nicht will.

Es scheint, als ob die Spotlight-Ausschlüsse pro Laufwerk gelten, was in diesem Szenario nicht ideal ist.

Gibt es eine Möglichkeit, Spotlight dazu zu bringen, nur das Laufwerk zu indizieren, das gerade gebootet wird? Auf diese Weise erhalte ich beim Booten von meinem externen Laufwerk nur Ergebnisse vom externen Laufwerk und dasselbe vom internen Laufwerk.

Antworten (5)

Sie könnten ein Skript haben, das beim Start ausgeführt wird und die in diesem Beitrag https://apple.stackexchange.com/a/91759/183505 vorgeschlagene Technik verwendet

Beim Booten von DriveA (wenn Sie die Spotlight-Indizierung für External DriveB deaktivieren möchten) können Sie Folgendes ausführen:

touch /Volumes/DriveB/.metadata_never_index

Wenn Sie von externem DriveB booten und Spotlight wieder aktivieren möchten, könnten Sie vielleicht Ihr Startskript ausführen lassen:

rm /Volumes/DriveB/.metadata_never_index

Der verlinkte Beitrag listet auch andere Möglichkeiten auf, die Spotlight-Ausschlüsse programmatisch zu ändern.

Hier sind einige Möglichkeiten, ein Skript hinzuzufügen, das bei der Anmeldung gestartet wird: https://stackoverflow.com/questions/6442364/running-script-upon-login-mac

Viel Glück!


Bearbeiten: Methode mit Bash-Skripten und Plist-Dateien


Erstellen Sie zunächst ein Startskript. Ich habe mich entschieden, eine zu erstellen~/script.sh

Stellen Sie sicher, dass es ausführbar istchmod +x ~/script.sh

Skript für Betriebssystem, das ein Laufwerk vor dem Rampenlicht verbergen möchte

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

Skript auf dem Betriebssystem, das das Laufwerk indizieren möchte

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

Erstellen Sie eine Plist-Datei~/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>

Testen Sie es, indem Sie es laden und entladen:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
Scheint, als wäre dies der beste Weg, dies zu tun. Ich hatte in gewisser Weise auf etwas "Einheimischeres" gehofft, aber das sollte ziemlich zuverlässig sein. Danke dir.
Ich möchte ein Problem erwähnen, mit dem ich konfrontiert bin, wenn ich versuche, dies zu implementieren: Der rmBefehl erfordert, dass ich ihn mit ausführe sudo. Ich verwende die erste Methode in dem von Ihnen geposteten SO-Link. Hätten Sie dazu zufällig Vorschläge? Muss ich die Launch-Daemon-Methode verwenden, um dies zu überwinden?
Ich habe meine Antwort mit einer leicht hackigen Lösung aktualisiert.
Wenn DriveToHideLeerzeichen vorhanden sind, schlagen Ihre derzeit geschriebenen Skripte fehl. Wenn Sie mit testen wollen, [ ... ]dann doppelte Anführungszeichen der Variablen, um Kleckse und Wortaufteilung zu verhindern. Oder [[ ... ]]zum Testen verwenden, dann sind doppelte Anführungszeichen nicht erforderlich.
Nett! danke user3439894. Ich habe die Antwort aktualisiert, um Ihren Vorschlag widerzuspiegeln.
Übrigens: In meinem ersten Kommentar ist "Kleckse verhindern" ein automatisch korrigierter Fehler und sollte "Kleckse verhindern" sein.
@hapi Wow, danke für die Mühe, die du dir gemacht hast, um diese Methode aufzuschreiben! Ich werde es ausprobieren :)

Ich habe heute gelernt, dass Sie ein sudo touch /.metadata_never_index_unless_rootfsim Stammverzeichnis jedes Laufwerks verwenden können, um Indizes von OS X-Startlaufwerken zu trennen. Es ist eine spezielle Version von .metadata-never-index, weil es das Laufwerk (neu) indiziert, wenn Sie davon booten, aber nicht, wenn Sie es nicht tun.

Dies scheint eine gute Antwort auf die Frage zu sein. Aber hast du dafür eine Quelle?

Ich verwende den mdutilBefehl, um die Indizierung auf einem externen Laufwerk zu verhindern. Ich denke, das ist zuverlässiger.

Führen Sie den folgenden Befehl aus, um zu überprüfen, ob auf dem externen Laufwerk die Indizierung aktiviert ist oder nicht:

$ mdutil -s /Volumes/<VolumeName>

Indexing enabled. 

Um die Indizierung zu deaktivieren, führen Sie den Befehl aus (Benutzerkennwort erforderlich):

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

Indexing disabled.

Sie können den Indizierungsstatus mit dem ersten Befehl erneut überprüfen:

$ mdutil -s /Volumes/<VolumeName>

Indexing disabled.
Wenn Sie -ddem Befehl ( sudo mdutil -i off -d /Volumes/<VolumnName>) hinzufügen, wird auch die Suche deaktiviert.
Ist diese Änderung dauerhaft? Ist es immer noch wirksam, wenn ich mein externes Laufwerk trenne und wieder einstecke?

Entschuldigung für die neue Antwort (nicht genug Vertreter, um einen Kommentar abzugeben, da ich neu hier bin)

@hapi - Ich bin vielleicht verwirrt, aber sind die Skripte falsch herum?

Skript für Betriebssystem, das ein Laufwerk vor dem Rampenlicht verbergen möchte: Umbenennungen.metadata_never_index

Skript auf dem Betriebssystem, das das Laufwerk indizieren möchte: erstellt.metadata_never_index

Ich dachte, das Vorhandensein von .metadata_never_indexauf dem Volume bedeutet, dass Spotlight es ignoriert hat?

Vielen Dank

Meiner Erfahrung nach .metadata_never_indexhat das keinerlei Auswirkungen auf macOS 10.13 - superuser.com/questions/591406/… ...
Du hast recht. Ich denke, die Skripte machen das Gegenteil von dem, was die Beschreibungszeile darüber sagt.

Während die andere Antwort eine gute Methode ist, kann sie versehentlich Probleme verursachen und ist möglicherweise nicht 100% zuverlässig. Eine bessere Methode wäre die Verwendung von Alfred , da es flexibler als Spotlight ist, auf dem externen Betriebssystem.

Wie würden Sie Alfred dafür verwenden?
Gute Frage. Ich wünschte, ich hätte mich daran erinnert, wie. Ich glaube, ich habe darüber gesprochen, wie Sie Ordner von der Alfred-Suche ausschließen können, ohne die in der anderen Antwort vorgeschlagene Ausschlussmethode verwenden zu müssen.
Ich gehe davon aus, dass ich meinte, dass ich mit Alfred nach Dateien suchen würde, anstatt die Spotlight-Suche zu verwenden. Im Nachhinein scheint dies eine dumme Antwort auf meine Frage zu sein.