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

什么程序在生成这些__MACOSX文件夹,mac用户如何避免此错误?

评论

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

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

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

@bobince:但是,是的,至少它们构成的格式没有任何实际的危害,除了目录列表有些混乱,每个提取的空资源派生实际上浪费了1个inode和1个块,除非您使用NTFS之类的(会将此类文件的内容存储在MFT中),在这种情况下,它只会浪费“ inode”(MFT条目)。

事后可以通过zip -d filename.zip __MACOSX / \ *
进行修复

#1 楼


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


评论


这不仅是资源派生,而且基本文件内容之外的所有内容都将放入AppleDouble文件中。苹果公司正在远离资源分支,而转向诸如扩展属性之类的东西,这些属性也将存储在AppleDouble容器中。

–戈登·戴维森(Gordon Davisson)
2010-2-5在2:02

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

–辛尼泽
2013年8月22日4:11



无效链接,请修复。

–卢卡斯
2014年2月2日,下午3:24

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

–乔·普兰特
2014年4月23日在2:38

刚刚发现:如果您在Mac上,使用命令行,解压缩filename.zip会解压缩您不需要的__MACOSX /目录,但是打开filename.zip会做正确的事情。

–爱德华·福克
16年6月22日在18:40

#2 楼

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

Wikipedia上的资源派生解释

其余的是我的意见:

@nickf:从来没有看到过这些文件不是OS X版本的功能,而是FLAW。

人们产生数据,将其包装,存储在不同的介质上,依此类推。他们需要知道需要什么或不需要什么。
隐藏它会使他们陷入黑暗之中。

对用户隐藏事物的古老的坏主意:

一个程序员,关心实现他/她的便利性自己的作品
滥用了最终用户的域中的内容,使他/她自己变得很容易。

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

隐藏的东西

假设用户是愚蠢的,更准确地说,是程序员是愚蠢的或懒惰的。

要明确的是,这种不良习惯是不限于MAC。它无处不在。
这是程序员爱上自己的方案和供应商将最终目标放在优先于最终用户需求之前的结果。

简而言之。

__MACOSX:
从扫过地毯的地方冒出来的奇怪的程序员掉落的东西。

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

评论


如果仅是答案,则此答案会更好。关于愚蠢的程序员和懒惰的用户的漫长的抱怨削弱了它。

–克里斯托弗·约翰逊(Kristopher Johnson)
2015年6月19日下午13:15

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

–hmijail哀悼辞职者
17年1月20日在12:28



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

–hmijail哀悼辞职者
17年1月20日在12:39

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

– Atte Juvonen
17年2月15日在13:25

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

–麦克·威廉姆森
18-10-25在1:47

#3 楼

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

mac用户如何避免此错误?

macOS用户可以安装第3方归档实用程序(例如Keka),然后告诉它不要使用Resource。 Forks,然后将其设置为默认压缩器。

如何使用Keka进行此操作
告诉Keka不要使用资源叉


不使用而打开Keka文件(从Launchpad,Spotlight等)。
按⌘Cmd +,打开“首选项”。

选择“压缩”选项卡。

选中“排除Mac资源分支(例如:.DS_Store)“


将Keka设置为默认压缩器

在同一“ Keka首选项”窗口中
选择“常规”标签

单击“将Keka设置为默认压缩器/解压器” [sic]



评论


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

–史蒂文·霍维尔(Steven C. Howell)
16年2月16日在21:17

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

– Ben Leggiero
16年2月16日在21:52

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

–爱德华·福克
16年6月22日在18:44

@EdwardFalk这很公平!此答案旨在解决“如何使它始终保持这种行为?”问题,而不是“如何使它以这种方式表现一次?”一。

– Ben Leggiero
16年9月9日在14:24