我正在开发一个应该存储压缩存档文件的网站,用于不同的平台(Mac和Windows)。
不幸的是,下载的Mac版本使用“资源分支”,我理解这是MacOS文件系统的特定于供应商的功能,它将额外的数据附加到文件标识符。以前,唯一的解决方案是在Mac上创建Mac存档(当时是.sit
存档),并手动上传两个版本。
我现在想让网站只接受Windows文件(可在任何文件系统上解压缩的常规.zip
),并自动生成带有资源分叉的Mac存档。基本上,我需要的是在Linux服务器上生成存档文件的某种方式(以任何可以支持资源分叉的合理通用格式;不确定.sit
是否仍然是最佳选项)将产生正确的文件结构在Mac上解压缩时。由于文件系统不支持分支,因此归档文件可能必须在内存中组装并写入磁盘,而不是使用任何本机压缩工具。
是否有某些软件可以执行此操作,或者至少有一些格式规范可以从头开始实现?
答案 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系统上重新组装成一个带有资源分支的本机文件。