欢迎各位兄弟 发布技术文章
这里的技术是共享的
当你在 Windows 系统上解压由 macOS 打包的 ZIP 文件时,出现的 __MACOSX
文件夹是 macOS 系统自动生成的元数据存储目录,主要用于保存文件的扩展属性(如文件图标、Finder 视图设置、资源派生文件等)。以下是详细解释和解决方案:
__MACOSX
文件夹?macOS 的扩展属性:
macOS 使用类似 ._filename
的文件和 __MACOSX
目录来存储文件的额外信息(如图标位置、创建者信息、Spotlight 注释等)。这些数据对 Windows 用户通常无用。
ZIP 打包时的默认行为:
使用 macOS 自带的压缩工具时,系统默认会将这些元数据一并打包到 ZIP 文件中。
__MACOSX
文件夹?在终端(Terminal)中使用 zip
命令时,添加 -X
参数排除元数据:
bashzip -X -r archive.zip your_folder/
Keka(macOS 免费压缩工具):
在设置中勾选 "Exclude Mac resource forks" 选项后再打包。
The Unarchiver:
解压时自动忽略这些文件。
__MACOSX
文件夹?解压后手动删除 __MACOSX
文件夹及所有以 ._
开头的文件(这些文件在 Windows 下通常无用)。
7-Zip:
解压时勾选 "排除多余的文件" 选项(部分版本支持)。
WinRAR:
在解压对话框中通过 "文件过滤" 排除 __MACOSX
和 ._*
文件。
如果经常遇到此问题,可以用 PowerShell 脚本一键删除:
powershellGet-ChildItem -Path "解压目录" -Recurse -Force -Include "__MACOSX", "._*" | Remove-Item -Recurse -Force
__MACOSX
目录是 AppleDouble 格式的实现,用于兼容非 HFS+ 文件系统(如 FAT32/NTFS)。
Windows 和 Linux 系统不依赖这些元数据,删除后不影响文件内容。
推荐方法:让 macOS 用户在打包时使用 zip -X
或第三方工具排除元数据。
临时解决:在 Windows 上手动删除或通过工具过滤无关文件。
这样可以确保跨平台文件共享时的简洁性,避免不必要的混乱。
在 Windows 系统中解压由 macOS 打包的 ZIP 文件时,出现 __MACOSX
文件夹是正常现象,这与 macOS 和 Windows 处理文件元数据的方式不同有关。以下是详细解释和解决方法:
__MACOSX
文件夹?macOS 的隐藏元数据:
macOS 在创建 ZIP 文件时,会额外存储一些系统相关的元数据(如文件图标、Finder 视图设置、资源派生文件等)。这些数据以 .DS_Store
文件或 ._文件名
的形式存在,但 ZIP 格式本身不支持直接存储这类元数据。
__MACOSX
的作用:
为了兼容性,macOS 的归档工具(如“归档实用工具”)会将元数据转换为特殊文件,并统一存放在 __MACOSX
文件夹中。这些文件通常以 ._文件名
的形式存在,例如 ._README.txt
。
Windows 的显示规则:
Windows 默认不隐藏以 .
开头的文件或文件夹(而 macOS 和 Linux 会隐藏),因此解压后会直接看到 __MACOSX
。
__MACOSX
文件夹的出现?使用终端命令打包:
通过 zip
命令的 -x
参数排除隐藏文件:
bashzip -r archive.zip folder_to_compress -x ".*" -x "__MACOSX/*"
或使用 ditto
命令(macOS 专用,自动忽略元数据):
bashditto -c -k --sequesterRsrc --keepParent folder_to_compress archive.zip
使用第三方工具:
工具如 Keka 或 The Unarchiver 在打包时可以选择不生成 __MACOSX
文件夹。
使用 7-Zip 或 WinRAR:
这些工具默认会忽略 __MACOSX
文件夹,解压时不会显示它。
手动删除:
解压后直接删除 __MACOSX
文件夹即可(它对 Windows 用户无实际用途)。
通过终端运行以下命令,禁用 macOS 的元数据存储(需谨慎操作):
bashdefaults write com.apple.desktopservices DSDontWriteNetworkStores true
(此命令主要针对网络存储,对 ZIP 的直接影响有限,建议优先使用方法 1 或 2。)
__MACOSX
文件夹的内容是什么?通常包含以下文件:
._文件名
:存储文件的扩展属性(如 Finder 标签、自定义图标)。
Icon\r
:文件或文件夹的图标数据。
其他 macOS 系统元数据。
示例结构:
archive.zip ├── __MACOSX/ │ └── ._file1.txt │ └── ._folder/ │ └── Icon\r ├── file1.txt └── folder/
统一使用通用格式:
如果团队同时使用 macOS 和 Windows,建议改用 .tar.gz
或 .7z
格式,它们不会生成 __MACOSX
文件夹。
明确打包规范:
在协作文档中说明如何正确打包/解压文件,避免混淆。
__MACOSX
是 macOS 为兼容性生成的元数据文件夹,对 Windows 用户无害但可能造成困扰。通过调整打包方式或解压工具即可解决。如果是个人使用,直接删除该文件夹即可;如果是团队协作,建议统一使用跨平台兼容的压缩格式。