如何在 Linux 上创建包含 FAT 格式文件的 zip 文件

如何在 Linux 上创建包含 FAT 格式文件的 zip 文件

我必须创建一个 zip 文件(不压缩)。我希望 zip 中的文件为 FAT 格式。也就是说,如果我使用邮编信息命令,我应该得到以下内容:

...
    -rw-a--     2.0 fat     3739 b- stor 25-Feb-11 16:46 part0/0072.png
    -rw-a--     2.0 fat     3703 b- stor 25-Feb-11 16:46 part0/0073.png
    -rw-a--     2.0 fat     3751 b- stor 25-Feb-11 16:46 part0/0074.png
    -rw-a--     2.0 fat     3688 b- stor 25-Feb-11 16:46 part0/0075.png
    -rw-a--     2.0 fat     3705 b- stor 25-Feb-11 16:46 part0/0076.png
...

为此,我使用压缩命令

zip -0 -r <archive>.zip <folder>

但是我得到了以下信息(当我使用 zipinfo 看到时)

...
    -rw-r--r--  3.0 unx   250847 bx stor  7-Apr-15 01:14 part0/00059.png
    -rw-r--r--  3.0 unx   216029 bx stor  7-Apr-15 01:14 part0/00060.png
    -rw-r--r--  3.0 unx   236572 bx stor  7-Apr-15 01:14 part0/00061.png
    -rw-r--r--  3.0 unx   247082 bx stor  7-Apr-15 01:14 part0/00062.png
    -rw-r--r--  3.0 unx   256374 bx stor  7-Apr-15 01:14 part0/00063.png
...

有没有办法使用命令行来做到这一点?

答案1

您可以将-k选项添加到命令行:

-k
--DOS 名称

尝试转换名称和路径以符合 MSDOS,仅存储 MSDOS 属性(仅是来自 Unix 的用户写入属性),并将条目标记为在 MSDOS 下创建(即使事实并非如此);为了与 MSDOS 下的 PKUNZIP 兼容,后者无法处理某些名称,例如带有两个点的名称。

zipinfo命令将显示你胖的并不是联合国
你会发现有趣的甚至选择-ll-S

-ll
--from-crlf

将 MSDOS 行尾 CR LF 翻译为 Unix LF。此选项不应用于二进制文件。如果 zip 文件用于在 Unix 下解压,则可以在 MSDOS 上使用此选项...
(全部阅读)

-S
--系统隐藏

[MSDOS、OS/2、WIN32 和 ATARI] 包括系统文件和隐藏文件。

笔记:

  • 在 Linux 中创建的 zip 文件与 Windows 兼容:所以您可能不需要这样做。
  • 短名称的格式DOS可能会强制尝试创建多个具有相同名称的路径/文件,从而产生错误:

    zip 错误:无效的命令参数(不能在 zip 文件中重复名称)

答案2

zip 文件应该与 Windows 兼容。ZIP 文件实际上不是 FAT 格式(一种磁盘格式),但 Linux 的文件属性比 Windows 多。例如,Windows 没有可执行位。

也许您的问题出在其他方面。请检查:http://usefulmix.com/creating-a-zip-archive-under-linux-that-is-windows-compatible/

答案3

7zip去救援……

#!/bin/sh

# create zip archive with "fat" filesystem on linux

set -e

# download 7z.exe
# https://www.7-zip.org/download.html
_7z_version=2401
wget https://www.7-zip.org/a/7z$_7z_version-x64.exe
7z x 7z$_7z_version-x64.exe -o7zip_exe

wine64 7zip_exe/7z.exe a -tzip output.zip input1.txt input2.txt

...但就我而言,zipinfo仍然显示出差异

-  -rw-a--     6.3 fat   162918 bx defN 15-Jul-11 21:43 backend.js
+  -rw----     2.0 fat   162918 bl defN 15-Jul-11 22:43 backend.js

文件a属性表示“存档位”

6.32.0zip 版本

bx意味着 7z 增加了一个“额外字段”。似乎没有7z --no-extra

man zipinfo

如果有扩展本地标头但没有额外字段,则为“l”;如果相反,则为“x”

文件时间也差了 1 小时

限制:这对于重现精确的 zip 档案没有帮助,因为 7zip 不公开 zip 格式的低级选项

也可以看看

相关内容