Где хранятся метаданные «Откуда» при загрузке через Chrome?

Я запускаю Mavericks с Chrome, и когда я загружаю изображение/файл, он сохраняет «Откуда» при просмотре через Get Info. Это также происходит в Safari.

Теперь я понимаю, что существует отдельная история загрузок, которую можно просмотреть и удалить с помощью приемов, описанных в следующей статье: http://www.cultofmac.com/179873/list-your-macs-entire-download-history-at -once-os-x-tips/ Они используются при открытии приложений в первый раз, чтобы показать пользователю, откуда они берутся.

Тем не менее, я удалил это и подтверждаю, что он пуст, но все же отображается в «Откуда». Я провел еще несколько тестов и загрузил изображение для просмотра EXIF ​​и метаданных, но, похоже, оно вообще не хранится в метаданных файлов. Так где же он мог храниться?

Кто-нибудь знает, как хранятся метаданные «Откуда» и где они хранятся. Остается ли он с файлом, если вы поместите файл на USB-накопитель и откроете его на другом компьютере?

Я не очень беспокоюсь о его удалении, но я просто не вижу, откуда он взялся?

Вам также нужен программный ответ, показывающий, как получить эту информацию для файла? Я вижу, вы подтвердили ответ, который объясняет это "уровень оболочки"...

Ответы (2)

Он хранится в расширенном атрибуте файла. В частности, com.apple.metadata:kMDItemWhereFromsатрибут. Он может остаться с файлом, когда вы переместите его на другой компьютер, но это зависит от используемой вами файловой системы или протокола обмена файлами. Если вы переместите его на другой Mac на диске HFS+, он, скорее всего, сохранит его, но не обязательно, если вы будете передавать по сети, и, скорее всего, не с внешним диском с файловой системой, отличной от HFS+.

Вы можете проверить файл, запустив его xattr -lp com.apple.metadata:kMDItemWhereFroms myfileв Терминале, или удалить его с помощью xattr -d com.apple.metadata:kMDItemWhereFroms my file. ls -l@также полезен флаг; он перечислит имена xattrs вместе с обычной информацией ls.

Если вы хотите удалить его из нескольких файлов, посмотрите на этот вопрос: Как удалить xattr com.apple.quarantine из всех файлов .webarchive с этим расширенным атрибутом?

Это очень информативный ответ, спасибо. Буду ли я прав, если скажу, что файл содержит данные файла, а затем есть скрытый файл оболочки, к которому на самом деле добавлен xattr?
Близко, но не совсем. Это больше похоже на метаданные. Точно так же, как у файла есть содержимое, которое является фактическими данными, а также имя, дата создания и т. д., он может иметь прикрепленные расширенные атрибуты.
@robmathers: черт, ты меня опередил. Также я забыл об опции -l xattr. Проголосуйте.
абсолютно не "скрытый файл оболочки" Хранение, индексация, поиск и извлечение метаданных - это большая тема, которую не очень легко охватить или понять. Просто помните, что функция Spotlight опирается на эти метаданные (и собирает их), и есть специальные компоненты, которые вы можете разработать для своего приложения, которые будут возвращать ваши собственные настраиваемые метаданные для ваших настраиваемых файлов документов (динамически вызываемые операционной системой). Поддерживаемые системой атрибуты метаданных и многое другое.

Загружаемым файлам назначаются расширенные атрибуты, например помещение исполняемыхcom.apple.quarantine файлов в карантин и com.apple.metadata:kMDItemWhereFromsданные «Откуда». Наличие этих атрибутов можно выявить в Терминале через ls -l@ /path/to/downloaded/file.

Теперь, чтобы получить фактические данные, хранящиеся в этом kMDItemWhereFroms, я нашел решение, основанное на этом ответе (который также объясняет немного больше о методе преобразования):

xattr -p com.apple.metadata:kMDItemWhereFroms /path/to/downloaded/file | sed -e 's/0D//g' -e 's/.*\(5F 10\)...//' -e 's/00.*//'| xxd -r -p | sed -e 's@ (.*@@g'

Это вернет URL-адрес. Пожалуйста, обратите внимание, что на данный момент это относительно трудно читаемая форма, так как моя командная строка-фу, кажется, подводит меня. Я обновлю ответ, как только найду подходящий sedдля него.

Из первых нескольких байтов, «bplist», я догадался, что это двоичный plist, поэтому вот как его расшифровать с помощью инструментов Apple для их чтения: xattr -p com.apple.metadata:kMDItemWhereFroms "$file" | xxd -r -p | plutil -convert xml1 -o - -. Если вы хотите получить URL-адреса (у большинства файлов, похоже, их два) сами по себе, на этом этапе правильным будет использовать либо какой-нибудь общий XML-инструмент (например, ), либо какой-либо инструмент, специфичный для plist (can xpath' тебе там не помогут). (Проверено на 10.8.5.)
@AaronDavies, ты прав! К сожалению, строки не расположены в определенном порядке в XML. Приятно видеть, что это работает и с такими вещами, как почтовые вложения.