要在 Mac 之间移动项目归档并保留访达标签,请在压缩前保留项目文件夹上的标签,创建兼容 Mac 的 ZIP,在删除原始文件前在目标 Mac 上解压并检查文件夹。访达标签属于具体的文件和文件夹;归档是其内容的打包,因此不要以为归档文件本身的标签会自动应用到其中的所有内容上。
为您的归档选择合适的工作流
如果您有一个仍需压缩的项目文件夹,请使用 Apple 的 ditto 实用工具来制作一个存储 Mac 元数据的 ZIP。Apple 建议使用 ditto 将 Mac 软件打包分发为 ZIP,并且其使用手册中详细说明了扩展属性保留功能以及在 ZIP 内存储元数据的选项。访达标签属于元数据的一部分:Apple 的文件提供程序(File Provider)文档将标签数据定义为项目元数据,而 ditto 手册说明其默认保留扩展属性。Apple 打包指南、Apple 文件提供程序文档、macOS ditto 使用手册
如果您手头已有由其他应用程序创建或从他人那里接收的 ZIP,则没有任何万能的访达控制项可以恢复归档从未保存过的标签。将其解压,检查内容,并在访达中重新应用丢失的标签。当接收方的存储设备或传输服务剥离了元数据时也是如此:文件可能会完整到达,但其标签却丢失了。
创建包含 Mac 元数据的 ZIP
首先,在访达中选中项目文件夹并留意其标签。您可以通过工具栏的“标签”按钮、“文件”菜单或按住 Control 键点按来查看或添加标签;一个文件夹可以拥有多个标签。Apple 访达标签指南
打开“终端”并输入以下命令,在最后一个词后留一个空格:
ditto -c -k --sequesterRsrc --keepParent
将项目文件夹从访达拖入“终端”窗口以插入其路径,然后输入一个空格以及 ZIP 文件的完整目标路径,例如 ~/Desktop/ClientProject.zip。按 Return 键。完整的命令类似于此示例:
ditto -c -k --sequesterRsrc --keepParent ~/Documents/ClientProject ~/Desktop/ClientProject.zip
将两个示例路径替换为您的实际文件夹和目标路径。-c -k 创建一个 ZIP;--keepParent 将项目文件夹包含为归档的顶层文件夹;--sequesterRsrc 将资源分支和访达元数据存储在 ZIP 的 __MACOSX 目录中。ditto 手册指出,PKZip 解压会自动查找这些资源。此方法适用于支持 Mac 特性的解压环境。使用不同操作系统或 ZIP 工具的接收者可能无法以同样的方式恢复 Mac 元数据。
在验证解压后的副本之前,请保留原始文件夹。如果终端报告错误,不要以为 ZIP 已完整生成;请阅读提示信息,在更正路径或目标问题后重新运行。手册指出 ditto 可能会在继续复制的同时报告错误,因此仅凭生成了归档并不能证明完全成功。macOS ditto 使用手册
在目标 Mac 上解压并检查标签
传输 ZIP,然后在目标 Mac 上将其解压。在访达中打开生成的项目文件夹,选择几个您确定带标签的文件和子文件夹,然后通过访达的“标签”按钮或“文件”菜单检查其标签。若要进行更全面的检查,请在访达边栏中选择相应的标签或搜索其名称;Apple 详细记录了这两种查找已添加标签的项目的方法。Apple 访达标签指南
同时还要检查预期的项目文件夹和文件是否存在,并打开对您工作至关重要的文件。访达可以显示标签颜色或名称,但这种视觉检查并不能证明归档包含所有必需的项目文件,也不能保证特定应用程序的项目能够正常打开。
如果标签丢失
在访达中选择受影响的文件或文件夹,并通过“标签”按钮或按住 Control 键点按弹出的菜单重新添加丢失的标签。您可以选择多个项目以便同时为它们应用标签。如果标签需要在跨平台或由其他工具创建的归档中保持一致,请附带一份简单的文本说明,列出标签名称及其适用的文件或文件夹;访达标签属于元数据,其兼容性取决于所涉及的工具和存储方式。
检查完解压后的项目后,如果符合您的工作流程,您可以保留 ZIP 作为归档并删除源文件夹。重要工作请保留单独的备份。访达提供了标记和标签搜索功能,但没有任何访达命令可以保证每个第三方归档都能保留或恢复其标签。
资料来源
分发 Mac 软件的打包指南 (Packaging Mac software for distribution) — Apple 开发者文档
extendedAttributes — Apple 开发者文档
DITTO(1) — macOS 使用手册页面
在 Mac 上使用标签整理文件 — Apple 支持