3

我正在一个网站上工作,该网站应该存储压缩存档文件以供下载,适用于不同的平台(Mac 和 Windows)。

不幸的是,下载的 Mac 版本使用“资源分叉”,据我了解,这是 MacOS 文件系统的供应商特定功能,可将额外数据附加到文件标识符。以前,唯一的解决方案是在 Mac 上创建 Mac 存档(当时.sit特别是存档),然后手动上传两个版本。

我现在想让网站只接受 Windows 文件(.zip可以在任何文件系统上解压缩的常规文件),并自动生成带有资源分支的 Mac 存档。基本上,我需要的只是某种在 Linux 服务器上生成存档文件的方法(以任何可以支持资源分叉的合理通用格式;不确定是否.sit仍然是最佳选择),在 Mac 上解压缩时会产生正确的文件结构。由于文件系统不支持分叉,存档可能必须在内存中组装并写入磁盘,而不是使用任何本机压缩工具。

是否有一些软件可以做到这一点,或者至少有一些格式规范可以从头开始实现它?

4

1 回答 1

4

(1) 资源(和其他“命名”)分支是 macOS 中的遗留技术。尽管仍受支持,但没有现代软件将资源分叉用于任何实质性的事情。我首先建议检查您的要求,看看这是否还有必要。

(2) macOS 长期以来一直.zip作为标准/内置存档格式。.sit是一个已经失宠的第三方压缩应用程序 (StuffIt)。

(3) 使用命名约定将资源分叉转换为非本地文件系统。例如,假设该文件Chart.jpg有一个资源分支。当 macOS 将其写入不支持命名分叉的文件系统时,它会创建两个文件:Chart.jpg._Chart.jpg,后者包含资源分叉和元数据。通常,文件所需要的只是.zip包含这两个文件,macOS 取消归档实用程序将使用两个分叉重新组合原始文件。

我找到了一些带有资源分叉的文件,并使用 macOS 的内置压缩命令对其进行了压缩。这是存档的内容(unzip -v Archive.zip):

Archive:  /Users/james/Development/Documentation/Archive.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
 1671317  Defl:N  1108973  34% 12-19-2009 12:09 b1b6083c  svn-book.pdf
       0  Stored        0   0% 01-30-2018 12:59 00000000  __MACOSX/
     263  Defl:N      157  40% 12-19-2009 12:09 9802493b  __MACOSX/._svn-book.pdf
     265  Defl:N      204  23% 06-01-2007 23:49 88130a77  Python Documentation.webloc
     592  Defl:N      180  70% 06-01-2007 23:49 f41cd5d1  __MACOSX/._Python Documentation.webloc
--------          -------  ---                            -------
 1672437          1109514  34%                            5 files

因此,特殊文件名似乎被隔离在一个不可见的__MACOSX子文件夹中。您所要做的就是生成一个.zip具有相同结构的文件,然后它将在 macOS 系统上重新组装成一个带有资源分支的本机文件。

于 2018-01-30T19:50:03.180 回答