gpt4 book ai didi

linux - 在非 HFS 文件系统上使用资源分支处理文件

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:59 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

(3) 资源分支使用命名约定转换为非本地文件系统。例如,假设文件 Chart.jpg 有一个资源分支。当 macOS 将其写入不支持命名 fork 的文件系统时,它会创建两个文件:Chart.jpg._Chart.jpg,后者包含资源 fork 和元数据。通常,.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 系统上重新组装成一个带有资源分支的 native 文件。

关于linux - 在非 HFS 文件系统上使用资源分支处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48525242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com