Как остановить OS X от записи файлов Spotlight и Trash на карты памяти и USB-накопители?

126

При подключении USB-накопителя к Mac OS X создает на нем ряд скрытых файлов, включая указатель Spotlight и папку «Корзина».

Пример с терминала для флешки "Без названия":

$ ls -a /Volumes/Untitled
.Spotlight-V100
.Trashes
._.Trashes
.disk
.fseventsd

Он даже делает это на карте памяти xD для моей камеры, поэтому после копирования моих изображений и удаления их с карты карта все еще заполнена.

Возможно ли отключить это для USB и карт памяти, поэтому OS X либо записывает эти файлы на основной диск, либо не записывает их вообще?

JG-Фауст
источник
Комментарии не для расширенного обсуждения; этот разговор был перемещен в чат .
bmike

Ответы:

20

ОБНОВЛЕНО Март 2018 г. Похоже, мое решение больше не действует, решение, которое работает прямо сейчас, предложено @ElmerCat в одном из ответов ниже.

Он предлагает использовать CleanMyDrive 2

Устаревшее решение

Как я знаю, у вас есть 2 варианта:

  1. TinkerTool (бесплатно)

альтернативный текст

  1. BlueHarvest (коммерческий)

альтернативный текст

Am1rr3zA
источник
1
Хорошо спасибо. Я надеялся, что где-то будет встроенная настройка, но по крайней мере есть решение.
jg-faustus
3
@Philip: К сожалению, Tinkertool имеет дело только с файлами .DS_Store в соответствии с их страницей сведений , что, вероятно, означает, что это единственный скрытый файл, который можно отключить через интерфейс командной строки - другие файлы нуждаются в пользовательских инструментах. Но BlueHarvest выглядит красиво, и делает то, что мне нужно. (Нашел некоторые подробности по этому вопросу здесь и здесь )
jg-faustus
1
устареть! последующие ответы лучше
Дима Тиснек
1
@ JG-Фауст Не только TinkerTool дело только с .DS_store файлами , но он делает это только для сетевого fileysystems
nhed
2
Протестировал это. Tinkertool не работает на USB-накопителях (по крайней мере, на 10.9)
pufferfish
106

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

mdutil -i off /Volumes/yourUSBstick
cd /Volumes/yourUSBstick
rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir .fseventsd
touch .fseventsd/no_log .metadata_never_index .Trashes
cd -

Другие незнакомые вещи, которые вы все еще можете увидеть, вы, вероятно, захотите сохранить, например, двойные файлы «._ *» Apple и другие мелочи в Apple DS, связанные с иконками и расположением окон.

Metaxis
источник
8
Хотя это может отключить индексирование, эти файлы и каталоги все еще будут присутствовать на томе (который является раздражающей частью в первую очередь), и если вы удалите их, .Spotlight * и .fseventd вернутся. На самом деле, .metadata_never_index это один более запись в файл листинге , чем обычный хлам.
ShreevatsaR
1
+1, на самом деле, я сам придумал, как трогать мусор, и пошел сюда, чтобы найти лучшее решение, но увидев это, я не смог устоять перед +1. Это решает реальную проблему - остановка автозвука от воспроизведения мусорных файлов;)
Майкл Крелин - хакер
+1 знал, что это существует, но всегда должен найти его, когда мне это нужно. Это полезно, если у вас больше доступа к USB-накопителю, чем к системе OSX.
mlhDev
2
Спасибо, я не знал о "CD -". Я все еще толкаю pushd / popd :).
Studgeek
А как насчет каталога ".DS_Store"? Это все еще там. Любая причина, почему это не было включено в строку "rm -rf"?
Марникс А. ван Аммерс
30

Чтобы Spotlight не индексировал не системные тома, добавьте / Volumes в список «Конфиденциальность» в «Системных настройках»> «Spotlight».

/ Volumes - это точка в файловой системе, где все несистемные диски смонтированы по умолчанию.

введите описание изображения здесь

Майлз Лейси
источник
невозможно добавить / томов в 10,8; хотя можно добавлять отдельные тома по одному. Я подозреваю, что это похоже наmdutil -i off /Volumes/xxx
Дима Тиснек
15
@qarma Очень возможно добавить / Тома в 10.8 или позже. Просто откройте окно Finder, нажмите Shift+ Command+, Gчтобы открыть окно «Перейти в папку ...», введите /Volumes, а затем перетащите маленький значок папки в верхней части окна Finder (рядом со словом «Объемы») в список на скриншоте выше
Крис Мукерджи
Я должен попробовать это ...
Дима Тиснек
1
Вы можете добавить /Volumes, это просто не работает.
Кенни
1
На моей машине установлен встроенный жесткий диск /Volumes/Macintosh HD, так что, если это сработает, не помешает ли Spotlight индексировать HD?
LarsH
17
  1. Вставьте USB-накопитель.
  2. Перейдите к Macintosh HD > Applications > Utilitiesтерминалу и откройте его.
  3. В командной строке терминала введите следующую команду, заменив path_to_volumeее реальным путем:

    sudo mdutil -i off /path_to_volume

  4. Нажмите возврат.

  5. Если будет предложено ввести пароль, введите пароль администратора, а затем нажмите клавишу возврата. Вы получите ответ:

    /path_to_volume/: Indexing disabled for volume. в Mac OS X 10.4 или

    /path_to_volume: Indexing disabled. под Mac OS X 10.5 или выше.

    Прожектор немедленно перестанет индексировать указанный объем.

  6. Если вы используете Mac OS X 10.5 или более позднюю версию, перейдите к шагу 9.

  7. В командной строке терминала введите следующую команду, снова подставив правильный путь:

    sudo mdutil -E /path_to_volume и нажмите возврат

  8. Если будет предложено ввести пароль, введите пароль администратора, а затем нажмите клавишу возврата. Вы получите ответ:

    /path_to_volume/: Volume index removed.

  9. В командной строке терминала введите и exitнажмите клавишу возврата.
  10. Выйти из терминала.

Спасибо thexlab.com , их электронным книгам по устранению неполадок с Mac OS X и их веб-сайту за подробное объяснение того, почему другие методы работают.

бензопила
источник
1
Примечание sudo запрашивает пароль у текущего пользователя
user151019
Это сработало для меня. Использование диска Spotlight увеличилось с 2 ГБ до 200 КБ. Тот факт, что прожектор занимает так много места на пустом диске, безумен . Интересно, сможем ли мы собрать воедино это решение и какой-нибудь триггер-скрипт на основе USB, который определяет, какое USB-устройство находится там, и автоматически выполняет эту команду. Есть идеи по этому поводу?
Отей
15

Еще один способ справиться с (только) файлами Spotlight - добавить этот том в список исключений Spotlight. Подключите устройство и перейдите на предварительную панель Spotlight в Системных настройках. Выберите вкладку Конфиденциальность. Теперь перетащите этот том со своего рабочего стола вверх в список конфиденциальности ... или используйте кнопку + внизу, чтобы добавить его. На этом томе больше не будет индексации в центре внимания.

Харв
источник
К сожалению, тома, кажется, удаляются из списка конфиденциальности всякий раз, когда они отключены. Так что это нужно будет повторять каждый раз, когда вы снова подключаете карту памяти или USB-накопитель.
LarsH
9

2017 декабрь

Можно подумать, что после всех этих лет Apple встроит что-то в Finder, чтобы справиться с этим. Люди, использующие USB-диски или SD-карты для воспроизведения медиафайлов на своих автомобилях или других устройствах, все еще остаются очень распространенной проблемой.

Тем не менее, разработчики заполнили пустоту многочисленными одобренными Apple приложениями. Приложения, перечисленные в предыдущих ответах, могли быть хорошими в то время, но они не были поддержаны для работы с современными версиями macOS.

Я также был бы немного осторожен с установкой того, что будет полностью контролировать файловую систему, написанное неопознанными разработчиками. Одно дело не желать иметь дело с App Store, а совсем другое - не регистрироваться в Apple в качестве разработчика. Более того, что-то из AppStore прошло как минимум минимальный аудит Apple и может быть удалено с вашего компьютера так же легко, как и установлено.

Поэтому, когда бы вы ни прочитали этот «ответ», он советует вам поискать в App Store что-то свежее, проверенное и бесплатное.

TL; DR:

Мой выбор 20 декабря 2017 года - «CleanMyDrive 2» из App Store. Решает проблему, прекрасный интерфейс, совершенно бесплатно. (Предлагает внутриигровые покупки пользовательских значков. В противном случае все работает бесплатно.)

Завтра может появиться что-то лучшее, но суть в том, что в App Store есть бесплатные и простые решения оригинального, но постоянного вопроса jg-faustus, заданного здесь так много лет назад - вопрос, который у меня возник сегодня.

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

ElmerCat
источник
6

Я использую командную строку MacOS Terminal для вывода списка и удаления всех этих файлов и папок перед тем, как извлечь устройство с рабочего стола. Для некоторых файлов вам может понадобиться команда sudo / bin / rm.

hotpaw2
источник
Я тоже так делаю. Хотя было бы еще лучше, если бы мне это не нужно, поэтому я изучаю альтернативы.
jg-faustus
Кстати, устройство находится где-то в / Volumes / <name>
DerMike
4

Я использую Clean Eject (бесплатно) и пользовательскую службу Automator (все еще приватную), поэтому я могу назначить горячую клавишу для очистки и извлечения тома с помощью приложения.

Мэтт Сефтон
источник
Без доступа к службе Automator вы упомянули, что этот ответ на самом деле не очень полезен. Можете ли вы также поделиться услугой?
nohillside
Ответ абсолютно полезен - вы можете использовать приложение без действия Automator. Если вы хотите добавить специальный ярлык для Clean Eject, у вас есть много вариантов: Alfred, Keyboard Maestro. Действие Automator не является обязательным, но полезно. Я выложу
Мэтт Сефтон
Сервис, который я использую для очистки извлечения выбранных томов поиска, теперь загружен сайтом (см. Ссылку выше).
Мэтт Сефтон
Спасибо за загрузку, делает ответ гораздо более полным.
nohillside
4

@ Майлз Лиси сообщение

и комментарий @ qarma:

Нет, это все еще возможно даже в OSX 10.9, но вам нужно сделать несколько дополнительных шагов сейчас:

1) В Finder нажмите « Перейти», затем нажмите « Перейти к папке» ...

2) Введите / Volume и нажмите Go.

3) Откроется окно Finder, в верхней части которого должно быть указано « Объемы» .

Это самый важный шаг:

4) Далее, где он говорит , что объемы в верхней части окна Finder, есть маленький синий значок папки. Нажмите и перетащите этот значок влево на панель избранного .

5) Теперь у вас будет доступ к папке «Тома» в любом месте, в том числе в настройках Spotlight, как предложено Miles Leacy. (Всякий раз, когда вам это нужно, просто нажмите на ссылку Избранное, чтобы выбрать его.)

Надеюсь это поможет,

Лучший,

Влад :)

~ ~ ~

Как добавить папку «Тома» в Избранное, чтобы получить к ней доступ в настройках Spotlight

~ ~ ~

Как это выглядит после добавления папки Volumes в список исключений Spotlight:

Обратите внимание, что на заднем плане вы можете увидеть мой пост в Safari. ;)

Как это выглядит после добавления папки Volumes в список исключений Spotlight

Владимир
источник
1
FWIW, я думаю, что это хороший ответ и не должен быть комментарием. Я бы убрал эту часть из нее и оставил как есть.
Марк Эдингтон
Так как Mac HD - это подпапка томов, разве это не отключает Spotlight на Mac HD?
LarsH
@LarsH Хороший вопрос. Я не люблю прожектор, и в настоящее время он полностью отключен на моем Mac, так что я не уверен. : 3
Владимир
3

На самом деле прикосновение к файлу .Trashes будет лучшим способом решения вашей основной проблемы, поскольку .Trashes теперь является файлом, а не папкой. Это означает, что Apple не может переместить файлы в папку .Trashes, когда вы удалите их, и ваш диск больше не заполнен.

Другой вариант - нажать Cmd-Opt-Shift-Backspace, чтобы заставить Finder очистить содержимое .Trashes на карте перед ее извлечением.

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

Однако из вашего поста видно, что вас больше беспокоит загрязнение диска различными точечными файлами. Если вы выполните указанные выше действия, вы сэкономите место на диске, но при этом будет создано как минимум количество точек.

Timpraetor
источник
3

MacOS теперь предоставляет этот прямой флаг, который вы можете переключать из терминала:

defaults write com.apple.desktopservices DSDontWriteUSBStores -bool true
tj0719
источник
1
Хороший ответ на часть вопроса. Это отключает DSStore, но вопрос был конкретно о файлах Trash и Spotlight, о которых ваше решение (из того, что я могу прочитать) не имеет никакого отношения.
Отей
2

Самый простой способ остановить автозвук при попытке прочитать скрытые файлы Mac OS - это удалить их в ОС Windows. Просто скопируйте музыку в формате MP3 на USB-накопитель из iTunes. Поменяйте флешку в ОС Windows и выберите просмотр скрытых файлов в настройках папки. Это позволит вам удалить каждый скрытый файл, который ваш надежный Mac поместил на USB-накопитель, включая эти надоедливые файлы .trashes. Наконец, использование для ОС Windows!

MacMad
источник
+1 Это немного утомительно, но, конечно же, почему бы и нет, это делает работу, ха-ха.
Владимир,
2

В итоге я воспользовался бесплатным приложением " Hidden Cleaner ". MP3-плеер моей машины пытался читать. (MP3filename) .mp3 (пустые, пустые mp3-файлы). Перейдите к Macintosh HD в разделе «Устройства» в левом меню Finder, перетащите USB-накопитель и перейдите в приложение Hidden Cleaner. Он очистит пустые файлы и оставит настоящие MP3-файлы и вытеснит ваш USB.

Примечание: это не постоянное решение. Вы должны делать выше каждый раз, когда вы копируете файлы. Я не против, хотя.

Уйгар у
источник
Другая похожая программа: Eject для Windows www011.upp.so-net.ne.jp/decafish/EjectForWindows/…
Виниций Пинто
Когда дело доходит до игры с файловой системой, не стоит доверять свой компьютер неопознанным разработчикам. Я просто говорю.
ElmerCat
2

Старый вопрос, но я, наконец, обнаружил асептику . Это утилита с открытым исходным кодом, которая решает эту давнюю проблему, ограничивая все .DS_STOREкаталоги в одном месте, по умолчанию /usr/local/.dscage
после установки и перезагрузки, не более .DS_STORE на USB-накопителях с преимуществом (для некоторых из нас) необходимость отключить индексацию на внешних дисках. Начиная с версии 1.4 он также поддерживает OS X Mavericks.

Обновление с веб-сайта Aepsis: «Предупреждение. Asepsis больше не находится в активной разработке и поддерживается в OS X 10.11 (El Capitan) и более поздних версиях.

Карло
источник
Здорово! Интересно, как эта программа будет обрабатывать системный сбой или экстремальную загрузку процессора. Другими словами, мне интересно, будет ли ставка на дисикронизацию автоматически обрабатываться, или вам придется делать это самим? Автоматически это хорошо, потому что нам не нужно об этом беспокоиться, но это также означает, что программе придется выполнять гораздо больше проверок.
Владимир
2

Большинство решений здесь «очищают точечные файлы перед извлечением», а не «предотвращают создание точечных файлов».

В поисках бесплатного решения для первого я попробовал несколько вариантов и остановился на яблочном скрипте здесь: SuperUser: У кого-нибудь есть скрипт Mac Terminal для удаления скрытых файлов? потому что это позволяет мне точно видеть, что происходит на этом пути.

Обратите внимание в моем комментарии на этот ответ, что я сделал небольшое редактирование, чтобы заставить его работать на OSX 10.12.1. (В этом случае я не публикую исходный текст, так как этот вопрос выглядит довольно дружелюбным).

ptim
источник
2

Самое глупое, что я не могу просто поспособствовать этому ответу Метаксиса. Но легко создать скрипт bash, который автоматически обрабатывает это для всех папок в / Volumes (или для конкретной, если вы укажете). Если у вас есть возможность вызывать его с помощью Automator или Applescript, когда папка появляется в / Volumes, то у вас есть автоматическое отключение индексации.

#!/bin/bash

if [ -n "$1" ]; then
    if [ ! -e "${1}/.metadata_never_index" ]; then
        echo "mdutil -i off $1"
        mdutil -i off "$1"
        cd "$1"
        rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
        mkdir .fseventsd
        touch .fseventsd/no_log .metadata_never_index .Trashes
    fi
else
#    echo "finding Volumes"
    find /Volumes -type d -maxdepth 1 -mindepth 1 -print0 | xargs -0 -n 1 "$0"
fi
freefly42
источник
0

Я нашел это приложение в Apple App Store бесплатно и пользуюсь им, и оно отлично сработало для меня. Вы должны искать «cleanusbdrive» все одно слово без кавычек в App Store.

Это Хосе А. Хименес Кампос.

specialpromise
источник
0

В настоящее время Cleanmydrive2 доступен в магазине приложений бесплатно и решает эту проблему для пользователей вплоть до высоких уровней.

Blurber
источник
-1

Я получил это для работы на Sierra 10.12.3 в Automator.

Во-первых, я сделал эту версию скрипта: он работает так же, как и freefly42, просто по-другому пишет одно и то же.

Чтобы перевести на неродные колонки bash, то, что он делает:

При запуске с аргументом командной строки он пытается определить, является ли аргумент каталогом, и содержит ли этот каталог файл с именем «.disable_osx_metadata».

Если специального файла нет, то ничего не происходит. Этот диск игнорируется.

Если там есть специальный файл, сценарий удаляет все метаданные osx и создает несколько небольших новых элементов, которые запрещают что-либо еще. Например, создание файла с именем .Trashes не позволяет ОС создавать каталог с именем .Trashes и затем записывать туда файлы.

Если запустить без аргументов, он запускается один раз для каждого каталога в / Volumes.

Таким образом, если вы запускаете его вручную или нажимаете на него, он проверяет все подключенные диски. Если вы создаете рабочий процесс в Automator, то Automator запускает его при каждом подключении диска, только для этого диска.

#!/bin/bash
x=.disable_osx_metadata
[[ "$1" ]] || exec find /Volumes -type d -maxdepth 1 -mindepth 1 -exec $0 {} \;
[[ -e "$1/$x" ]] || exit 0
mdutil -i off "$1"
rm -rf "$1"/.{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir "$1/.fseventsd"
touch "$1/.fseventsd/no_log" "$1/.Trashes" "$1/$x"

Сохраните как «disable_osx_metadata», chmod 755, скопируйте в / usr / local / bin.

$ cd Documents/disable_osx_metadata/
$ chmod 755 disable_osx_metadata
$ sudo cp disable_osx_metadata /usr/local/bin

Затем откройте Automator, New, Folder Action

Затем я обнаружил, что даже в Sierra 10.12.3 вы МОЖЕТЕ неочевидным образом добавить каталог / Volumes в Automator.

Перейдите в Finder, File, «Go To Folder ...», вручную введите «/ Volumes» и нажмите Enter.

Теперь это показывает окно с вашими жесткими дисками HD и USB, но нет очевидной папки "/ Volumes", по которой можно щелкнуть. Но в строке заголовка написано "/ Volumes", и она также появляется внизу.

Вы можете перетащить значок папки рядом с «/ Volumes», либо из строки заголовка, либо снизу, на Automator, и перетащить его на «Действие папки получает файлы и папки, добавленные в: [______]»

Перетаскивание / тома из строки заголовка Finder

Закрыть Finder.

Вернитесь в Automator: слева прокрутите вниз и перетащите «Получить содержимое папки» вправо и опустите его.

Затем снова слева, прокрутите вниз и перетащите «Run Shell Script» вправо и опустите его ниже «Получить содержимое папки».

Измените «Pass input:» на «в качестве аргументов». Оболочка: [/ bin / bash] Передать ввод: [в качестве аргументов]

Затем перетащите скрипт из / usr / local / bin в поле под «Run Shell Script», чтобы он сказал «/ usr / local / bin / disable_osx_metadata»

Файл, сохранить, отключить_osx_metadata.workflow

Рабочий процесс Automator Folder Action

Для справки, это сохраняется в: / Users / YOUR_NAME / Library / Workflows / Applications / Folder Actions Если вы сохраните что-то неправильно, я думаю, вам придется вручную перейти в Finder, чтобы удалить его.

Наконец, для каждого нового USB-диска, который вы хотите защитить, вы должны создать файл с именем «.disable_osx_metadata» в корневой папке.

Вы можете сделать это в Терминале: $ touch / Volumes / NO \ NAME / .disable_osx_metadata

Или просто сохраните небольшой текстовый файл с видимым именем (без начальной точки) и скопируйте его в корень любого нового USB-накопителя и переименуйте его .disable_osx_metadata после копирования.

Этот диск теперь очищается каждый раз, когда вы его подключаете.

Не так чисто, как хотелось бы. Вы должны немного загрязнить диск, чтобы сказать ОС не загрязнять его больше. Кажется, нет способа заставить ОС просто оставить ее в покое и не добавлять файлы, которые вы не просили.

TODO: добавить функции включения / выключения для создания / удаления файла точек.

TODO: Это не мешает файлам .DS_Store в каждом каталоге.

ТОДО: Можно ли упаковать скрипт и файл foo.workflow, чтобы пользователь мог пропустить большинство этих инструкций вручную? Я вижу, что в Automator есть опция экспорта, которая создает какой-то файл пакета.

ТОДО: Возможно, устарел весь этот пост. Этот рабочий процесс appleScript + automator может быть лучше: https://superuser.com/questions/319553/does-anyone-have-a-mac-terminal-script-to-remove-hidden-files/814104#814104

Брайан Уайт
источник