1

Я столкнулся с проблемой, когда обнаружил, что один и тот же видеофайл имеет разные значения для метаданных kMDItemkind Spotlight в зависимости от диска, на котором он находится (конечно, на той же машине), что приводит к сбою поиска Spotlight по файлу «Kind». Чтобы усугубить проблему, значение на внешнем диске в некоторых случаях является неправильным и несовместимым с иерархией типов документов, предоставляемой приложением, из которого она поступает.

  • На внутреннем диске,
    1. для видеофайла Matroska (с расширением mkv) mdls перечисляет kMDItemKind как «Video Media». Это правильно, так как это проигрыватель по умолчанию для этого типа файлов (MPlayerX) типа «один размер подходит всем».
    2. для MPEG4 файлов QuickTime с ITunes Store (расширение m4v mdls перечисляет kMDItemKind , как «Apple MPEG4-Film». Опять же, это правильно, так как это проигрыватель по умолчанию для файлов этого типа (QuickTimeX), соответствующих типу видео мультимедиа.
  • На моем внешнем диске FireWire,
    1. для того же файла Matroska mdls перечисляет kMDItemKind как «Movie-DivX». Это, очевидно, неверно, но также неверно даже для iFlicks , который предоставляет это значение, поскольку иерархия типов документов iFlicks не привязывает mkv к этому типу - она привязывает его к «Video-Matroska».
    2. для того же файла MPEG4 mdls перечисляет kMDItemKind как «Video-MPEG4». Это технически правильно, но, опять же, это значение, предоставляемое iFlicks, который не является ни проигрывателем по умолчанию для этого типа файлов, ни назначенным проигрывателем в Finder.
  • На обоих дисках окно «Get Info» в Finder показывает правильный тип файла (т.е.Video Media »/« Apple MPEG-4-Film »), но, в соответствии со значениями kMDItemKind , поиски Spotlight в этом виде возвращают только результат на внутреннем диске.

Различие вывода mdls в соответствующих файлах показывает, что кроме этой разницы, единственными другими отличающимися ключами являются kMDItemFSOwnerGroupID и kMDItemFSOwnerGroupID , которые установлены на 99 (_unknown) на внешнем диске, и на мои идентификаторы пользователей и групп на внутреннем один (обратите внимание, что, несмотря на то, что это предполагает, фактическое владение файлом и разрешения идентичны).

Оба диска отформатированы как Mac OS Extended Journaled, но проблема идентична, когда я копирую файл на USB-ключ в формате FAT32. Копирование, копирование или перемещение файлов на диске не меняет этого явления, а только переносит их из внутреннего в внешний и наоборот .

Наконец, переиндексируем внешний диск ( сначала с помощью sudo mdutil -E "/Volumes/My Book" , затем трудным путем, сначала отключив индексацию, удалив) .Spotlight-V100 , выполняющий вышеописанное и включающий индексацию), не имеет значения. Метка времени метаданных изменяется, но значения остаются теми же.

Как заставить Spotlight хранить правильное значение для kMDItemKind моих видеофайлов, как определено соответствующими проигрывателями по умолчанию, на внешнем диске?

Запуск OS X 10.7.4 (проблема присутствует в 10.7.3 уже), немецкий. Другие установленные мультимедийные приложения (кроме MPlayerX и iFlicks): Subler, MediaInfo, Perian

1 ответ1

1

Как оказалось, kMDItemFSOwner*ID которых задано значение _unknown указали в правильном направлении: текущая реализация Spotl в Lion, по-видимому, устанавливает значения kMDItemKind только косвенно связанные с правильными значениями для файлов и папок, владельцем и / или группой которых является 99 (иначе _unknown). Проблема заключается в том, что внешние диски по умолчанию настроены на игнорирование владения их содержимым, или, с технической точки зрения, их состояние БД настроено на деактивацию («отключение») владения на диске.

В этом случае как владение, так и владение группой для всего содержимого тома устанавливается на _unknown (99), но, и это затрудняет распознавание проблемы, и Finder, и оболочка будут отображать текущую группу пользователей и идентификатор пользователя вместо этих значений. (sudo ls -lna покажет правильные значения - см. @kpatten в этой ветке сообществ поддержки Apple).

Решение

  1. активировать («принять») владение диском для тома. Это можно сделать с помощью диалога «Get Info» тома в Finder (снимите флажок с самого нижнего) или через оболочку:

    sudo vsdbutil -a /Volumes/<Volume name>
    
  2. взять на себя ответственность за все затронутые файлы и папки. Я бы рекомендовал оставить корень тома в одиночестве (в конце концов, предустановка Apple имеет смысл - вы не хотите, чтобы съемный диск был связан со структурой владения Mac, с которой он связан, по крайней мере, не слишком глубоко), и Делаем это на уровне верхних папок, содержащих затронутый контент:

    sudo chown -R $(id -u "$USER"):$(id -g "$USER") /Volumes/<Volume name>/<Folder>
    
  3. переиндексировать громкость

    sudo mdutil -E /Volumes/<Volume name>
    

Проверка с помощью mdls после этих шагов покажет, правильно ли установлены ключи ID ключа kMDItemFSOwner*ID (не удивительно) и, что более важно, правильное значение kMDItemKind для файлов.

Предостережение Emperor: это обходной путь для решения проблемы, а не решение (которое должно быть предоставлено Apple). Во-первых, он подрывает «съемность» внешнего диска, поскольку устанавливает разрешения, которые действительны только при подключении к определенному Mac для всех файлов и папок, созданных / скопированных в иерархию сброса. Во-вторых, он работает только на томах с файловой системой, которая может устанавливать владение POSIX. Данные Spotlight на других томах (скажем, в формате FAT32) не могут быть исправлены таким образом.

Об ошибке сообщили в Apple. Отражение в виде открытого радара # 1725402.

Рекомендации

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .