我必须创建一个 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.3
是2.0
zip 版本
bx
意味着 7z 增加了一个“额外字段”。似乎没有7z --no-extra
man zipinfo
如果有扩展本地标头但没有额外字段,则为“l”;如果相反,则为“x”
文件时间也差了 1 小时
限制:这对于重现精确的 zip 档案没有帮助,因为 7zip 不公开 zip 格式的低级选项
也可以看看