什么是__MACOSX文件夹?


151

我在人们在OSX上制作的zip文件中看到的这些__MACOSX文件夹是什么?有些占用了文件的30%。

哪些程序正在生成这些__MACOSX文件夹,mac用户如何避免该错误?


8
是的,它们非常令人讨厌,并且通常毫无意义,因为资源分叉经常是空的。但是,至少它们是无害的,这与苹果公司采用内置OS X的东西采用大于4GB存档大小的非标准方法不同,后者会混淆任何其他工具,并再次破坏足够大的文件。嘿,这可能会更糟,它可能会为每个文件存储两个相同名称的副本,一个副本用于数据,一个副本用于资源派生,这常常使它们无法访问,就像以前的OSX Mac一样。噢,苹果,为什么您讨厌标准文件格式?
bobince'2

3
@bobince:实际上,资源派生是一个很好的主意……当时。如今,通过将资源存储为单个文件来实现相同的效果,其中大多数文件看起来与标准文件格式非常相似。

16
这样的元数据没什么大不了的,仅仅是因为苹果公司拥有自己的格式,并利用无用的不兼容扩展来混淆现有格式!将内容类型数据作为元数据本身是一件很了不起的事情,这让我感到很难过,OS X正朝Windows扩展的文件扩展名迈进。尽管这并不像Linux上那样糟糕,在Linux上文件系统支持存储Content-Type元数据,但是没有台式机使用它,而是更喜欢将文件扩展名/名称模式与内容嗅探(burgh!)彻底混合使用。叹气,操作系统是吗?
bobince'2

@bobince:但是,是的,至少他们弥补了格式,这个没有做任何真正的伤害,比略微凌乱的目录清单,基本上浪费1个索引节点和每个空资源派生1块中提取的,除非你使用类似NTFS等(其会将此类文件的文件内容存储在MFT中),在这种情况下,它只会浪费“ inode”(MFT条目)。
SamB

9
可以在事后通过zip -d filename.zip __MACOSX/\*
克里斯·约翰逊

Answers:


52

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

Apple提供了对OS X 10.3及更高版本中的ZIP文件的内置功能,这些文件是Apple以安全方式存储资源叉的结果。您将永远不会看到这些文件在OS X 10.3或更高版本上运行,但是由于Windows和其他操作系统不了解资源叉的这种特殊形式,因此它们会在您看到它们时出现。


4
不只是资源派生,AppleDouble文件中还包含了基本文件内容之外的所有内容。苹果公司正在远离资源分支,而转向诸如扩展属性之类的东西,这些属性也将存储在AppleDouble容器中。
Gordon Davisson'2

14
您听起来像个功能。元数据部门中故意缺少.zip文件。如果需要元数据,请使用其他格式,而不是Mac。正确的zip +元数据实现示例:.jar
Zenexer 2013年

16
无效链接,请修复。
卢卡斯-Better Coding Academy

71
“因为Windows和其他操作系统不了解”-gh。我只是讨厌这种术语
Joe Plante 2014年

5
刚刚发现:如果您使用的是Mac,则使用命令行将unzip filename.zip解压缩__MACOSX /目录,该目录不是您想要的,但open filename.zip会做正确的事情。
爱德华·福尔克

107

这是一个很好的解释链接。我想帮助亚达有点晚了,但为了后代。

Wikipedia上的资源派生解释

其余的是我的意见:

@nickf:从来没有看到这些文件不是那些OS X版本的功能,而是FLAW。人们产生数据,包装数据,将其存储在不同的介质上,等等。他们需要知道需要什么或不需要什么。隐藏它会使他们处于黑暗中。

向用户隐藏事物的古老的坏主意:程序员关心完成自己的工作的便利性,滥用了最终用户领域中的某些东西,以便于自己使用。

在这种情况下,他将元数据存储在用户的数据空间中,然后他向用户隐藏了它。他错过了大局:用户不会意识到隐藏的细节。当他打包数据并将其运送到程序员未预料到的地方时,丢失的零件将无法运输,或者未知的零件将到达,用户和接收者都无法解释。

隐藏用户的东西是不好的。它假定用户是愚蠢的,更准确地说,是程序员是愚蠢的或懒惰的。

需要明确的是,这种不良习惯并不局限于MAC。它无处不在。这是程序员沉迷于自己的方案,而供应商却在最终用户需求之前优先考虑自己的目标的结果。

简单来说。

__MACOSX:
从被扫过的地毯下面浮现出奇怪的气味。

程序员和供应商:请保持公开状态。当您隐藏它们时,您会使自己变得愚蠢,而用户则不了解情况。


12
如果仅是答案,则此答案会更好。关于愚蠢的程序员和懒惰的用户的漫长的抱怨削弱了它。
克里斯托弗·约翰逊

1
@pbernatchez实际上,如果您停止学习事物的外观以及它们的演变方式,那么您可能不会在这里留下自己的任性,傲慢的“粪便”。资源分支是Mac OS X之前的一个(非常好!)实现细节,用户只有在与其他系统连接时才发现它们。自90年代以来,苹果公司已经越来越多地转移到一个没有资源分叉的世界,但仍然向后弯曲以保持兼容性。“将元数据存储在用户的数据空间中”?WTF?您必须如何定义“元数据”和“用户的数据空间”呢?您必须讨厌文件系统!
hmijail '17

3
“隐藏用户的内容是不好的”。伙计,您还必须讨厌所有类型的用户界面,库,抽象,以及……嗯,比算盘更高级的任何编程和计算机。
hmijail '17

4
这不能回答问题。阅读此答案后,我仍然不知道_MACOSX文件夹中包含什么元数据,或者资源分叉是什么。我想人们之所以赞成这一点,仅仅是因为他们同意这一行径?
Atte Juvonen

1
尽管我同意充满感情色彩的调子无济于事,但我也绝对同意创建偶尔需要的隐藏内容是一个非常糟糕的主意,正像此答案中所述:用户将要么(a)不发布隐藏文件,要么(b)传送收件人可以看到并且都不理解的隐藏文件。这些文件应该是可见的,或者数据应该以其他操作系统标记为“可跳过”的某种方式嵌入文件中。隐藏的文件和目录应主要用于保护用户,而不是使用户处于黑暗状态。
迈克·威廉姆森

16

要回答您的最后一个问题:

Mac用户如何避免此错误?

Mac OS X用户可以安装第三方归档实用程序(例如Keka),然后告诉它不要使用资源叉,然后将其设置为默认压缩器。


如何使用Keka做到这一点

告诉Keka不要使用资源叉

  1. 不使用文件打开Keka(从Launchpad,Spotlight等)
  2. ⌘ Cmd+ ,打开偏好
  3. 选择压缩选项卡
    Keka“压缩”标签,已选中
  4. 选中“排除Mac资源派生(例如:.DS_Store)”
    选中“排除Mac资源派生(例如:.DS_Store)”的复选框

将Keka设为默认压缩机

  1. 在同一“ Keka首选项”窗口中
  2. 选择常规标签
    已选择Keka的“常规”标签
  3. 单击“将Keka设置为默认压缩器/解压器” [sic]
    在此处输入图片说明

1
我可以在最后两个步骤中添加一些信息来改进这一点,“告诉它不要使用资源叉,然后将其设置为默认压缩器”。
史蒂文·C·豪威尔

@ stvn66完成!不过,仅供参考,这通常不在这些问题的范围内,这就是为什么我起初没有这样做。
Ben Leggiero

2
不好意思,抱歉。我不喜欢安装第三方软件来解决可以使用默认软件解决的问题。正如克里斯·约翰逊在上面指出的那样,zip -d将从zipfile中删除资源派生。实际上,我认为如果您首先使用zip,则不会首先添加资源派生。
爱德华·福尔克

1
@EdwardFalk这很公平!此答案旨在解决“如何使它始终保持这种行为?” 问题,而不是“如何使它以这种方式表现一次?” 一。
Ben Leggiero
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.