使用非HFS文件系统上的资源分叉处理存档

时间:2018-01-30 15:40:49

标签: linux macos hfs+

我正在开发一个应该存储压缩存档文件的网站,用于不同的平台(Mac和Windows)。

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

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

是否有某些软件可以执行此操作,或者至少有一些格式规范可以从头开始实现?

1 个答案:

答案 0 :(得分:1)

(1)资源(和其他“命名”)分支是macOS中的遗留技术。虽然仍然支持,但没有现代软件使用资源分支来实现任何实质性的。我首先建议您查看您的要求,看看是否还有必要。

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

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

我找到了一些带有资源分叉的文件,并使用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系统上重新组装成一个带有资源分支的本机文件。