Запрет Spotlight индексировать внешний диск

9

Иногда я использую внешний SSD с macOS Sierra на нем, в сочетании с моим текущим внутренним диском, на котором работает macOS Sierra.

Одна из неприятных вещей в Spotlight заключается в том, что всякий раз, когда я что-то ищу в нем, например, когда я бегу со своего внешнего диска, я получаю результаты как от своего внешнего, так и от внутреннего диска, чего я не хочу.

При загрузке на внешний диск я попытался создать исключение Spotlight для внутреннего диска. Однако, похоже, что если я это сделаю, то исключение будет создано для моего внутреннего диска, даже когда я загружаюсь в мой внутренний диск. Таким образом, создается впечатление, что исключения Spotlight связаны с ноутбуком, а не с диском - это означает, что мой внутренний диск будет исключен из результатов Spotlight независимо от того, с какого внешнего диска я загружаюсь.

Возможно ли создать исключение Spotlight для моего внутреннего диска, когда я работаю со своего внешнего диска, и также исключение для моего внешнего диска, когда я работаю со своего внутреннего диска?

Скелет Лук
источник

Ответы:

14

У вас может быть скрипт, который запускается при запуске и использует технику, предложенную в этом посте https://apple.stackexchange.com/a/91759/183505

При загрузке с DriveA (когда вы хотите отключить индексирование прожектора для внешнего диска B) вы можете выполнить:

touch /Volumes/DriveB/.metadata_never_index

Когда вы загружаетесь с внешнего диска DriveB и хотите снова включить прожектор, возможно, вы могли бы запустить скрипт запуска:

rm /Volumes/DriveB/.metadata_never_index

В связанном посте также перечислены другие способы программного изменения исключений в центре внимания.

Вот несколько способов добавить скрипт, который будет запускаться при входе в систему: /programming/6442364/running-script-upon-login-mac

Удачи!


Изменить: метод с использованием сценариев bash и plist-файлов


Сначала создайте скрипт запуска. Я решил создать один на~/script.sh

Убедитесь, что это исполняемый файл chmod +x ~/script.sh

Скрипт для ОС, который хочет скрыть диск в центре внимания

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

Скрипт на ОС, который хочет проиндексировать диск

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

Создайте файл 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>

Проверьте это, загрузив и выгрузив его:

launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
хапи
источник
Похоже, это лучший способ сделать это. Я надеялся на что-то более «родное», но это должно быть достаточно надежно. Спасибо.
Скелетный лук
Я хочу упомянуть проблему, с которой я столкнулся, пытаясь реализовать это: rmкоманда требует, чтобы я запустил ее, используя sudo. Я использую первый метод в той ссылке, которую вы разместили. Есть ли у вас какие-либо предложения для этого? Нужно ли использовать метод запуска демона, чтобы преодолеть это?
Скелет Лук
Я обновил свой ответ немного хакерским решением.
хапи
2
Если DriveToHideесть пробелы, то ваши сценарии , как написано в настоящее время, не будут работать. Если вы собираетесь тестировать, [ ... ]то двойные кавычки переменных, чтобы предотвратить разбивание и расщепление слов. Или используйте [[ ... ]]для проверки, тогда двойные кавычки не нужны.
user3439894
Ницца! спасибо user3439894. Я обновил ответ, чтобы отразить ваше предложение.
хапи
2

Извиняюсь за новый ответ (недостаточно комментариев для комментирования, так как я здесь новичок)

@hapi - я могу быть смущен, но сценарии неправильные?

Скрипт для ОС, который хочет скрыть диск в центре внимания: переименовывает .metadata_never_index

Скрипт на ОС, который хочет проиндексировать диск: создает .metadata_never_index

Я думал, что присутствие .metadata_never_indexна томе означало, что Центр внимания проигнорировал это?

Спасибо

stoutyhk
источник
Мой опыт показывает, что .metadata_never_indexэто никак не повлияет на macOS 10.13 - superuser.com/questions/591406/… ...
Anon
2

Сегодня я узнал, что вы можете использовать sudo touch /.metadata_never_index_unless_rootfs в корневом каталоге каждого диска для отделения индексов от загрузочных дисков OS X. Это специальная версия .metadata-never-index, потому что она будет (пере) индексировать диск при загрузке с него, но не когда вы этого не сделаете.

Kappuchino
источник
-2

Принимая во внимание, что другой ответ является хорошим методом, он может непреднамеренно вызвать проблемы и не может быть на 100% надежным. Лучшим способом было бы использовать Alfred , поскольку он более гибкий, чем Spotlight, во внешней ОС.

Скелет Лук
источник
Как бы вы использовали Альфред для этого?
Мэтт Сефтон
Хороший вопрос. Я бы хотел, чтобы я вспомнил как. Я думаю, что я говорил о том, как вы можете исключить папки из поиска Альфреда без необходимости использовать метод исключения, который был предложен в другом ответе.
Скелет Лук