Impedire a Spotlight di indicizzare l'unità esterna


9

A volte uso un SSD esterno con macOS Sierra su di esso, insieme alla mia attuale unità interna che ha macOS Sierra in esecuzione su di esso.

Una cosa fastidiosa di Spotlight è che ogni volta che cerco qualcosa in esso, ad esempio quando sono in esecuzione dal mio disco esterno, ottengo risultati sia dal mio disco esterno che interno, il che è qualcosa che non voglio.

Quando avviato nel mio disco esterno, ho provato a creare un'eccezione Spotlight per il disco interno. Tuttavia, sembra che, se lo faccio, viene creata un'eccezione per l'unità interna anche quando eseguo l'avvio nell'unità interna. Pertanto, sembra che le esclusioni Spotlight siano vincolate dal laptop, non dall'unità , il che significa che la mia unità interna verrà esclusa dai risultati Spotlight, indipendentemente dall'unità esterna da cui eseguo l'avvio.

È possibile creare un'eccezione Spotlight per l'unità interna quando sono in esecuzione dall'unità esterna e allo stesso modo un'eccezione per l'unità esterna quando sono in esecuzione dall'unità interna?

Risposte:


14

Potresti avere uno script che viene eseguito all'avvio che utilizza la tecnica suggerita in questo post https://apple.stackexchange.com/a/91759/183505

Quando si avvia da DriveA (quando si desidera disabilitare l'indicizzazione Spotlight per unità esterna B) è possibile eseguire:

touch /Volumes/DriveB/.metadata_never_index

Quando si avvia da DriveB esterno e si desidera riattivare Spotlight, forse è possibile eseguire lo script di avvio:

rm /Volumes/DriveB/.metadata_never_index

Il post collegato elenca anche altri modi per modificare programmaticamente le esclusioni Spotlight.

Ecco alcuni modi per aggiungere uno script che verrà avviato all'accesso: /programming/6442364/running-script-upon-login-mac

In bocca al lupo!


Modifica: metodo usando script bash e file plist


Innanzitutto crea uno script di avvio. Ho scelto di crearne uno a~/script.sh

Assicurati che sia eseguibile chmod +x ~/script.sh

Script per sistema operativo che desidera nascondere un'unità sotto i riflettori

#!/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 sul sistema operativo che desidera indicizzare l'unità

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

Crea un file 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>

Provalo caricandolo e scaricandolo:

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

Sembra che questo sia il modo migliore per farlo. Speravo in qualcosa di più "nativo", ma questo dovrebbe essere abbastanza affidabile. Grazie.
Skeleton Bow,

Voglio menzionare un problema che sto affrontando nel tentativo di implementarlo: il rmcomando richiede che lo esegua usando sudo. Sto usando il primo metodo nel link SO che hai pubblicato. Avresti qualche suggerimento per questo? Devo usare il metodo del demone di lancio per superare questo?
Skeleton Bow,

Ho aggiornato la mia risposta con una soluzione leggermente confusa.
hapi,

2
Se DriveToHideha spazi, i tuoi script , come attualmente scritti, falliranno. Se hai intenzione di testare, [ ... ]quindi doppia virgoletta sulle variabili per impedire il blobbing e la divisione delle parole. Oppure usa [[ ... ]]per testare, quindi non è necessaria la doppia citazione.
user3439894,

Bello! grazie utente3439894. Ho aggiornato la risposta per riflettere il tuo suggerimento.
hapi,

2

Ci scusiamo per la nuova risposta (non abbastanza rappresentante per commentare dato che sono nuovo qui)

@hapi - Potrei essere confuso, ma gli script sono nella direzione sbagliata?

Script per sistema operativo che vuole nascondere un'unità da Spotlight: rinomina .metadata_never_index

Script sul sistema operativo che desidera indicizzare l'unità: crea .metadata_never_index

Ho pensato che la presenza di .metadata_never_indexsul volume significasse che Spotlight l'ha ignorato?

Grazie


La mia esperienza è che .metadata_never_indexnon ha alcun impatto su macOS 10.13 - superuser.com/questions/591406/… ...
Anon

2

Ho imparato oggi che è possibile utilizzare un sudo touch /.metadata_never_index_unless_rootfs nella directory principale di ogni unità per separare gli indici da Boot-Drives OS X. È una versione speciale di .metadata-never-index, perché (ri) indicizzerà l'unità quando si avvia da essa, ma non quando non lo si fa.


-2

Mentre l'altra risposta è un buon metodo per farlo, può inavvertitamente causare problemi e potrebbe non essere affidabile al 100%. Un metodo migliore sarebbe utilizzare Alfred , poiché è più flessibile di Spotlight, sul sistema operativo esterno.


Come useresti Alfred per questo?
Matt Sephton,

Buona domanda. Vorrei ricordare come. Credo che stavo parlando del modo in cui è possibile escludere le cartelle dalla ricerca Alfred senza dover utilizzare il metodo di esclusione che è stato suggerito nell'altra risposta.
Skeleton Bow
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.