Запобігайте прожектору від індексації зовнішнього накопичувача


9

Я іноді використовую зовнішній SSD з macOS Sierra на ньому, в поєднанні з моїм поточним внутрішнім накопичувачем, на якому працює macOS Sierra.

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

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

Чи можливо створити виняток Spotlight для мого внутрішнього накопичувача, коли я працюю від зовнішнього диска, а також виняток для зовнішнього накопичувача, коли я працюю з внутрішнього накопичувача?

Відповіді:


14

Ви можете мати сценарій, який працює при запуску, який використовує техніку, запропоновану в цьому дописі https://apple.stackexchange.com/a/91759/183505

Під час завантаження з DriveA (якщо ви хочете відключити індексацію прожектора для зовнішнього DriveB), ви можете виконати:

touch /Volumes/DriveB/.metadata_never_index

Під час завантаження із зовнішнього DriveB і ви хочете знову включити прожектор, можливо, ви могли б виконати сценарій запуску:

rm /Volumes/DriveB/.metadata_never_index

Пов’язана публікація також перелічує інші способи програмного зміни виключень прожекторів.

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

Удачі!


Редагувати: метод за допомогою скриптів bash та файлів плістів


Спочатку створіть сценарій запуску. Я вирішив створити його в~/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

Створіть файл-список ~/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. Я використовую перший метод у посиланні SO, яке ви опублікували. Чи трапляються ви з цим якісь пропозиції? Чи потрібно використовувати метод запуску демона, щоб подолати це?
Скелетний лук

Я оновив свою відповідь трохи хитким рішенням.
Хапі

2
Якщо DriveToHideє пробіли, то ваші сценарії , як написано в даний час, вийдуть з ладу. Якщо ви збираєтеся протестувати, [ ... ]то двічі цитуйте змінні, щоб уникнути роздуття та розбиття слів. Або використовувати [[ ... ]]для тестування, тоді подвійне цитування не потрібно.
користувач3439894

Приємно! дякую користувачу3439894. Я оновив відповідь, щоб відобразити вашу пропозицію.
Хапі

2

Вибачення за нову відповідь (недостатньо реп. Для коментарів, оскільки я тут новий)

@hapi - Можливо, я збентежився, але чи сценарії неправильно зворотні?

Сценарій для ОС, який хоче приховати диск від уваги: ​​перейменовує .metadata_never_index

Сценарій в ОС, який хоче індексувати накопичувач: створює .metadata_never_index

Я думав, що присутність .metadata_never_indexгучності означає, що прожектор проігнорував це?

Дякую


Мій досвід показує, що .metadata_never_indexне має ніякого впливу на MacOs 10.13 - superuser.com/questions/591406 / ... ...
Anon

2

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


-2

Якщо інша відповідь - це хороший спосіб зробити це, він може ненавмисно спричинити проблеми і може бути не на 100% надійним. Кращим методом було б використання Альфреда , оскільки він більш гнучкий, ніж Spotlight, на зовнішній ОС.


Як би ти використовував Альфреда для цього?
Метт Сефтон

Хороше питання. Мені б хотілося, щоб я згадав, як. Я вважаю, що я говорив про те, як ви можете виключити папки з пошуку Альфреда, не використовуючи метод виключення, запропонований в іншій відповіді.
Скелетний лук
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.