Что такое папка __MACOSX?

152

Что это за папки __MACOSX, которые я постоянно вижу в zip-файлах, созданных людьми на OSX? Некоторые занимают до 30% файла.

Какая программа создает папку __MACOSX и как пользователи Mac могут избежать этой ошибки?

Яда
источник
8
Да, они супер-раздражающие и, как правило, бессмысленные, так как ресурсные вилки так часто пусты. Но, по крайней мере, они безвредны, в отличие от нестандартного подхода, который Apple использует для> 4 ГБ размеров архивов с помощью встроенного в OS X материала, что запутает любой другой инструмент и снова сломает достаточно большие файлы. И, может быть, это может быть и хуже, он может хранить две копии каждого файла с одним и тем же именем, одну для данных и одну для ветки ресурсов, что часто делает невозможным доступ к любой из них, как это было в Mac OS до OSX. О, Apple, почему ты ненавидишь стандартные форматы файлов?
2010 года
3
@bobince: на самом деле, ресурсные вилки были очень хорошей идеей ... в то время. В наши дни тот же эффект достигается за счет хранения ресурсов в виде отдельных файлов, большинство из которых выглядят почти как стандартные форматы файлов.
16
В метаданных как таковых нет ничего плохого, просто Apple умеет создавать собственные форматы и путать существующие форматы с совершенно несовместимыми расширениями! Наличие данных типа контента в качестве метаданных само по себе - отличная вещь, и меня огорчает то, что в качестве альтернативы OS X движется к взлому Windows расширений файлов. Хотя это не так плохо, как в Linux, где файловая система поддерживает хранение метаданных Content-Type, но никакие рабочие столы не используют их, предпочитая полностью разбитую смесь шаблонов расширения файла / имени и сниффинга контента (ура!). Вздох, ОС а?
бобинце
@bobince: Но да, по крайней мере, формат, который они создали для этого , не приносит никакого реального вреда, кроме небольшого загромождения списков каталогов и траты по существу 1 инода и 1 блока на извлеченную пустую ветвь ресурса, если вы не используете что-то вроде NTFS (который будет хранить содержимое файла в MFT для таких маленьких файлов), в этом случае он просто тратит впустую «inode» (запись MFT).
SamB
9
Может быть исправлено после фактаzip -d filename.zip __MACOSX/\*
Крис Джонсон

Ответы:

52

http://www.realsoftware.com/listarchives/gettingstarted/2005-09/msg00328.html

Apple предоставляет встроенную возможность ZIP-файлов в OS X 10.3 и выше, и эти файлы являются результатом безопасного хранения Resource Forks Apple. Вы никогда не увидите эти файлы под управлением OS X 10.3 или выше, но поскольку Windows и другие операционные системы не понимают эту особую форму Resource Forks, они будут отображаться так, как вы их видите.

nickf
источник
4
Это не просто разветвление ресурсов, в файл AppleDouble помещается что-то помимо базового содержимого файла. Apple отходит от ресурсов, но к таким вещам, как расширенные атрибуты, которые также будут храниться в контейнере AppleDouble.
Гордон Дэвиссон
14
Вы делаете это звучит как особенность. .zip файлы намеренно отсутствуют в отделе метаданных. Если вам нужны метаданные, используйте другой формат, а не Mac. Пример правильной реализации zip + метаданных: .jar
Zenexer
16
битая ссылка, пожалуйста, исправьте.
Лукас - Лучшая академия кодирования
71
«Так как Windows и другие операционные системы не понимают», - тьфу. Я просто ненавижу такую ​​терминологию
Джо Планте,
5
Только что обнаружил: если вы на Mac, используя командную строку, unzip filename.zipраспакуете каталог __MACOSX /, который вам не нужен, но open filename.zipсделает правильно.
Эдвард Фальк
107

Вот ссылка, которая объясняет это довольно хорошо. Полагаю, уже поздно помогать Яде, но для потомков.

Объяснение ресурсного форка в Википедии

Остальное мое мнение

@nickf: Никогда не видеть эти файлы - не ОСОБЕННОСТЬ тех версий OS X, это FLAW. Люди создают данные, оборачивают их, хранят на разных носителях и так далее. Им нужно знать, что нужно или что не нужно. Сокрытие это держит их в темноте.

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

В этом случае он хранит метаданные в пространстве данных пользователя, а затем скрывает их от пользователя. Он пропустил общую картину: пользователь не узнает о скрытых деталях. Когда он упаковывает свои данные и отправляет их куда-то неожиданно для программиста, недостающие части не будут отправлены или появятся неизвестные части, которые ни пользователь, ни получатель не смогут объяснить.

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

Чтобы было ясно, эта вредная привычка не ограничивается MAC. Это везде. Это является следствием того, что программисты влюбляются в свои собственные схемы, а поставщики ставят приоритеты в своих целях перед потребностями конечного пользователя.

Вкратце.

__MACOSX:
странно пахнущий помет программиста, появляющийся из-под коврика, где их заметили.

Программисты и поставщики: пожалуйста, держите все под открытым небом. Когда вы их скрываете, вы становитесь глупыми, а пользователь не информированным.

pbernatchez
источник
12
Этот ответ был бы лучше, если бы это был просто ответ. Из-за этого отвлекается расширенная болтовня о глупых программистах и ​​ленивых пользователях.
Кристофер Джонсон
1
@pbernatchez На самом деле, если вы остановитесь, чтобы узнать о том, как все выглядит и как они развиваются, то, вероятно, вы не оставите здесь свою собственную бессмысленную, высокомерную «помет». Ресурсные вилки были (очень приятно!) Деталями реализации до Mac OS X, и пользователи находили их только при взаимодействии с другими системами; Начиная с 90-х годов Apple все чаще перемещается в мир без разветвлений ресурсов, но все еще отклоняется назад, чтобы сохранить совместимость. «Хранить метаданные в пространстве данных пользователя»? WTF? Насколько круто вы должны определить «метаданные» и «пространство данных пользователя», чтобы сказать это? Вы должны ненавидеть файловые системы!
hmijail
3
«Скрывать вещи от пользователя - это плохо». Чувак, ты также должен ненавидеть все виды пользовательских интерфейсов, библиотек и абстракций, и ... ну, любой вид программирования и компьютеров, более продвинутых, чем счеты.
hmijail
4
Это не отвечает на вопрос. После прочтения этого ответа я до сих пор не представляю, какие метаданные содержатся в папке _MACOSX или что такое ветки ресурсов. Я полагаю, что люди голосуют за это только потому, что они согласны с разглагольствованием?
Атте
1
Хотя я согласен с тем, что эмоционально заряженный тонус бесполезен, я также абсолютно согласен с тем, что создание скрытых вещей, которые иногда необходимы, является действительно плохой идеей, в точности как указано в этом ответе: пользователи либо (а) не будут отправлять скрытые файлы, которые или (b) отправлять скрытые файлы, которые получатель может видеть и не понимать. Эти файлы должны быть либо видны, либо данные должны быть встроены в файлы каким-либо образом, который помечен как «пропускаемый» другими ОС. Скрытые файлы и каталоги следует использовать в первую очередь для защиты пользователей, а не для их сохранения в темноте.
Майк Уильямсон
16

Чтобы ответить на ваш последний вопрос:

как пользователи Mac могут избежать этой ошибки?

Пользователи Mac OS X могут установить стороннюю утилиту архивирования, такую ​​как Keka , затем запретить использование Resource Forks, а затем установить ее в качестве компрессора по умолчанию.


Как это сделать с Keka

Скажите Кека, чтобы не использовать Resource Forks

  1. Откройте Keka без файла (из панели запуска, Spotlight и т. Д.)
  2. Нажмите ⌘ Cmd+, ,чтобы открыть настройки
  3. Выберите вкладку « Сжатие »
    Кека "Сжатие", выбрана вкладка
  4. Установите флажок «Исключить вилки ресурсов Mac (например, .DS_Store)»
    Флажок с надписью «Исключить вилки ресурсов Mac (например: .DS_Store)»

Сделать Keka компрессором по умолчанию

  1. В том же окне настроек Keka
  2. Выберите вкладку General
    Кека "Общие", выбрана вкладка
  3. Нажмите «Установить Keka в качестве компрессора / распаковщика по умолчанию» [sic]
    введите описание изображения здесь
Бен Легжеро
источник
1
Это можно улучшить, добавив некоторую информацию о последних 2 шагах: «Скажите, чтобы она не использовала Resource Forks, а затем установите ее в качестве компрессора по умолчанию».
Стивен Хоуэлл,
@ stvn66 Готово! Просто к вашему сведению, однако, это обычно выходит за рамки этих вопросов, именно поэтому я не сделал сначала.
Бен Легжеро
2
Downvoting, извините. Я не фанат установки стороннего программного обеспечения для решения проблемы, которая может быть исправлена ​​с помощью программного обеспечения по умолчанию. Как указывал Крис Джонсон выше, zip -dудалит ветки ресурсов из zip-файла. На самом деле, я думаю, что если вы используете zip в первую очередь, ресурсные вилки не добавляются в первую очередь.
Эдвард Фальк
1
@EdwardFalk Это честно! Этот ответ должен был решить вопрос «Как заставить его всегда так себя вести?» проблема, а не "Как заставить его так себя вести?" один.
Бен Легжеро