題 什麼是__MACOSX文件夾?


在OSX上的人們製作的zip文件中,我一直看到這些__MACOSX文件夾是什麼?有些佔據了文件的30%。

什麼程序正在生成這些__MACOSX文件夾以及mac用戶如何避免這個錯誤?


137
2018-02-03 22:37


起源


它們非常刺激,是的,並且通常毫無意義,因為資源分叉經常是空的。但至少它們是無害的,不像蘋果採用內置OS X的東西採用超過4GB的存檔大小的非標準方法,這會混淆任何其他工具並再次破壞足夠大的文件。嘿,可能更糟糕的是,它可能是存儲每個文件的兩個副本,具有相同的名稱,一個用於數據,一個用於資源分支,通常使其無法訪問,就像之前的OSX Mac一樣。哦Apple,為什麼你討厭標准文件格式? - bobince
@bobince:實際上,資源分叉是一個非常好的主意......當時。目前,通過將資源存儲為單個文件來實現相同的效果,其中大多數文件看起來非常像標准文件格式。
這樣的元數據沒有任何問題,只是因為Apple有這樣的訣竅來構建他們自己的格式並且用無償的不兼容的擴展來搞亂現有的格式!將內容類型數據作為元數據本身就是一件好事,讓我感到遺憾的是,OS X正朝著Windows文件擴展的方式發展。雖然這並不像Linux上那麼糟糕,但是文件系統支持存儲Content-Type元數據,但沒有桌面使用它,更喜歡徹底破壞文件擴展名/名稱模式和內容嗅探(urgh!)。嘆了口氣,操作系統呃? - bobince
@bobince:但是,至少是他們彌補的格式 這個 沒有任何真正的傷害,除了略微混亂的目錄列表和浪費基本上1個inode和每個空資源分叉提取1個塊,除非你使用像NTFS(它將文件內容存儲在MFT中的這些小文件),在它只是浪費了“inode”(MFT條目)。 - SamB
事後可以修復 zip -d filename.zip __MACOSX/\* - Chris Johnson


答案:


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

Apple為OS X 10.3及更高版本中的ZIP文件提供內置功能,這些文件是Apple以安全方式存儲Resource Forks的結果。您永遠不會看到這些文件運行OS X 10.3或更高版本,但由於Windows和其他操作系統不理解這種特殊形式的資源分叉,它們將在您看到它們時顯示。


54
2018-02-03 22:39



它不僅僅是資源分支,超出基本文件內容的任何東西都會被放入AppleDouble文件中。 Apple正在逐漸遠離資源分支,而是轉向擴展屬性,這些屬性也將存儲在AppleDouble容器中。 - Gordon Davisson
你讓它聽起來像一個功能。元數據部門故意缺少.zip文件。如果您需要元數據,請使用其他格式,而不是Mac。正確的zip +元數據實現示例:.jar - Zenexer
死鏈接,請修復。 - think123
“因為Windows和其他操作系統不理解” - 呃。我只是討厭這種術語 - Joe Plante
剛發現:如果你在Mac上,使用命令行, unzip filename.zip 將解壓縮你不想要的__MACOSX /目錄,但是 open filename.zip 會做正確的事。 - Edward Falk


這是一個很好地解釋它的鏈接。我認為幫助亞達有點晚了,但對後人來說。

維基百科上的資源分叉說明

其餘的是我的意見:

@nickf:從未看到這些文件不是那些OS X版本的特徵,而是FLAW。 人們生成數據,將其包裝起來,將其存儲在不同的介質上,等等。他們需要知道需要什麼或不需要什麼。 隱藏它使他們在黑暗中。

從用戶那裡隱藏東西的古老壞主意: 一個程序員,關心完成自己工作的權宜之計, 濫用最終用戶的域名,使自己更容易。

在這種情況下,他將元數據存儲在用戶的數據空間中,然後將其隱藏在用戶之外。 他錯過了大局:用戶不會意識到隱藏的細節。 當他打包他的數據並將其發送到程序員未曾預料到的地方時, 丟失的部件將不會被運送或未知的部件將不會到達 用戶和收件人都可以解釋。

隱藏用戶的信息很糟糕。 它假定用戶是愚蠢的,更準確地說是程序員是愚蠢的, 或者懶惰。

需要明確的是,這種壞習慣不僅限於MAC。無處不在。 這是程序員愛上他們自己的計劃和供應商的結果,他們在最終用戶的需求之前優先考慮他們自己的目標。

簡單來說。

__MACOSX:
奇怪的氣味程序員糞便從他們被掃地的地毯下面浮現出來。

程序員和供應商:請保持開放狀態。 當你隱藏它們時,你會使自己變得愚蠢而且用戶不知情。


99
2017-12-03 01:31



如果它只是一個答案,這個答案會更好。關於愚蠢的程序員和懶惰用戶的擴展咆哮會減少它。 - Kristopher Johnson
@pbernatchez實際上,如果你停下來了解事情是怎樣的以及它們是如何演變的,那麼你可能不會離開這裡你自己的ra ,,傲慢的“糞便”。資源分支是Mac OS X之前的一個(非常好!)實現細節,用戶只有在與其他系統連接時才能找到它們。從90年代開始,Apple越來越多地轉向沒有資源分叉的世界,但仍然向後彎曲以保持兼容性。 “將元數據存儲在用戶的數據空間中”? WTF?你有多麼嚴格地定義“元數據”和“用戶的數據空間”來說明這一點?你必須討厭文件系統! - hmijail
“隱藏用戶的信息很糟糕”。伙計,你還必須討厭所有類型的用戶界面,圖書館和抽象,以及...好吧,任何類型的編程和計算機都比算盤更先進。 - hmijail
這不回答這個問題。閱讀此答案後,我仍然不知道_MACOSX文件夾中包含哪些元數據,或者資源分叉是什麼。我猜人們只是因為他們同意咆哮而贊同這一點? - Atte Juvonen
這是我認為解釋資源分叉的另一個鏈接: xahlee.info/UnixResource_dir/macosx.html - GDP2


回答你的最後一個問題:

mac用戶怎麼能避免這個錯誤?

Mac OS X用戶可以安裝第三方存檔實用程序 Keka,然後告訴它不要使用Resource Forks,然後將其設置為默認壓縮器。


如何用Keka做到這一點

告訴Keka不要使用Resource Forks

  1. 打開Keka 沒有文件(來自Launchpad,Spotlight等)
  2. ⌘Cmd+ 至 打開首選項
  3. 選擇 壓縮 標籤
    Keka "Compression" tab, selected
  4. 校驗 “排除Mac資源分叉(例如:.DS_Store)” 
    A checkbox reading "Exclude Mac resource forks (ex: .DS_Store)"

使Keka成為默認壓縮器

  1. 在相同的 Keka偏好 窗口
  2. 選擇 一般 標籤
    Keka "General" tab, selected
  3. 單擊“將Keka設置為默認壓縮器/解壓縮器”[原文如此]
    enter image description here

13
2017-11-05 15:03



這可以通過在最後兩個步驟中添加一些信息來改進,“告訴它不使用Resource Forks,然後將其設置為默認壓縮器。” - Steven C. Howell
@ stvn66完成!但是,僅供參考,這通常超出了這些問題的範圍,這就是為什麼我一開始沒有這樣做的原因。 - Ben Leggiero
低迷,抱歉。我不是安裝第三方軟件來修復可以使用默認軟件修復的問題的粉絲。正如克里斯約翰遜上面指出的, zip -d 將從zipfile中刪除資源分叉。事實上,我認為如果您首先使用zip,則首先不會添加資源分支。 - Edward Falk
@EdwardFalk這很公平!這個答案是為了解決“如何讓它始終以這種方式行事?”問題,而不是“如何讓它以這種方式表現一次?”一。 - Ben Leggiero