Zapobiegaj indeksowaniu dysku zewnętrznego przez Spotlight

9

Czasami używam zewnętrznego dysku SSD z macOS Sierra, w połączeniu z moim bieżącym dyskiem wewnętrznym, na którym działa macOS Sierra.

Jedną z irytujących rzeczy w Spotlight jest to, że za każdym razem, gdy coś szukam, na przykład podczas uruchamiania z dysku zewnętrznego, otrzymuję wyniki zarówno z dysku zewnętrznego, jak i wewnętrznego, czego nie chcę.

Po uruchomieniu na dysku zewnętrznym próbowałem utworzyć wyjątek Spotlight dla dysku wewnętrznego. Wydaje się jednak, że jeśli to zrobię, wyjątek zostanie utworzony dla mojego dysku wewnętrznego, nawet gdy uruchomię go na dysku wewnętrznym. Wygląda więc na to, że wyjątki Spotlight są związane z laptopem, a nie z dyskiem - co oznacza, że ​​mój dysk wewnętrzny zostanie wykluczony z wyników Spotlight bez względu na to, z którego dysku zewnętrznego się uruchomię.

Czy można utworzyć wyjątek Spotlight dla mojego dysku wewnętrznego, gdy uruchamiam z dysku zewnętrznego, a także wyjątek dla mojego dysku zewnętrznego, gdy uruchamiam z dysku wewnętrznego?

Łuk Szkieletowy
źródło

Odpowiedzi:

14

Możesz mieć skrypt uruchamiany przy starcie, który wykorzystuje technikę sugerowaną w tym poście https://apple.stackexchange.com/a/91759/183505

Podczas uruchamiania z DriveA (gdy chcesz wyłączyć indeksowanie reflektorów dla zewnętrznego DriveB), możesz wykonać:

touch /Volumes/DriveB/.metadata_never_index

Podczas uruchamiania z zewnętrznego dysku DriveB i chcesz ponownie włączyć wyróżnienie, być może możesz uruchomić skrypt uruchamiania:

rm /Volumes/DriveB/.metadata_never_index

W linkowanym wpisie wymieniono także inne sposoby programowej zmiany wyłączeń reflektorów.

Oto kilka sposobów dodania skryptu, który uruchomi się podczas logowania: /programming/6442364/running-script-upon-login-mac

Powodzenia!


Edycja: Metoda przy użyciu skryptów bash i plików plist


Najpierw utwórz skrypt startowy. Zdecydowałem się stworzyć jeden w~/script.sh

Upewnij się, że jest wykonywalny chmod +x ~/script.sh

Skrypt dla systemu operacyjnego, który chce ukryć dysk przed centrum uwagi

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

Skrypt w systemie operacyjnym, który chce zindeksować dysk

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

Utwórz plik 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>

Przetestuj go, ładując i rozładowując:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
hapi
źródło
Wydaje się, że to najlepszy sposób na zrobienie tego. Miałem nadzieję na coś bardziej „rodzimego”, ale to powinno być całkiem wiarygodne. Dziękuję Ci.
Szkielet Łuk
Chcę wspomnieć o problemie, który napotykam, próbując to zaimplementować: rmpolecenie wymaga, aby go uruchomić sudo. Używam pierwszej metody w opublikowanym linku SO. Czy miałbyś jakieś sugestie? Czy muszę użyć metody demona uruchamiania, aby temu zaradzić?
Szkielet Łuk
Zaktualizowałem swoją odpowiedź nieco zhackowanym rozwiązaniem.
hapi
2
Jeśli DriveToHidema spacje, wówczas twoje skrypty , jak obecnie napisane, zawiodą. Jeśli zamierzasz przeprowadzić test, [ ... ]to podwój cudzysłów, aby zapobiec blokowaniu i dzieleniu słów. Lub użyj [[ ... ]]do przetestowania, wtedy podwójne cytowanie nie jest konieczne.
user3439894
Miły! dzięki użytkownik3434894. Zaktualizowałem odpowiedź, aby odzwierciedlić twoją sugestię.
hapi
2

Przepraszamy za nową odpowiedź (za mało przedstawicieli, aby skomentować, ponieważ jestem tu nowy)

@hapi - mogę się mylić, ale czy skrypty są niewłaściwe?

Skrypt dla systemu operacyjnego, który chce ukryć dysk przed centrum uwagi: zmienia nazwy .metadata_never_index

Skrypt w systemie operacyjnym, który chce zindeksować dysk: tworzy .metadata_never_index

Myślałem, że obecność .metadata_never_indexna tomie oznacza, że ​​Spotlight to zignorował?

Dzięki

stoutyhk
źródło
Z mojego doświadczenia wynika, że .metadata_never_indexnie ma to żadnego wpływu na MacOS 10.13 - superuser.com/questions/591406/… ...
Anon
2

Dowiedziałem się dzisiaj, że można użyć sudo touch /.metadata_never_index_unless_rootfs w katalogu głównym każdego dysku do oddzielenia indeksów od napędów rozruchowych systemu OS X. Jest to specjalna wersja .metadata-never-index, ponieważ będzie (ponownie) indeksować dysk podczas uruchamiania z niego, ale nie, gdy nie.

Kappuchino
źródło
-2

Chociaż druga odpowiedź jest dobrą metodą na to, może przypadkowo powodować problemy i może nie być w 100% niezawodna. Lepszym sposobem byłoby użycie Alfreda , ponieważ jest on bardziej elastyczny niż Spotlight, w zewnętrznym systemie operacyjnym.

Łuk Szkieletowy
źródło
Jak użyłbyś do tego Alfreda?
Matt Sephton
Dobre pytanie. Chciałbym pamiętać, jak to zrobić. Wydaje mi się, że mówiłem o tym, w jaki sposób można wykluczyć foldery z wyszukiwania Alfreda bez konieczności korzystania z metody wykluczania sugerowanej w innej odpowiedzi.
Skeleton Bow