我需要为所有 Windows 用户访问者提供一个 zip 文件,所以我天真地使用 Unix zip 命令生成了一个 zip 文件(我们称之为 madeinlinux.zip)。
它使用 WinRar 或 Winzip 成功打开,但我的那些使用标准 Windows zip 文件处理的用户在尝试解压缩时遇到失败。(Windows XP)
我使用 Windows 内置的 zip 机制压缩了相同的数据,从 Linux 的角度来看,我看不到文件类型的任何差异:
$ file madeinlinux.zip : Zip archive data, at least v2.0 to extract
$ file madeinwindows.zip : Zip archive data, at least v2.0 to extract
Run Code Online (Sandbox Code Playgroud)
它们必须特定于 Windows 兼容的 zip 文件。
有谁知道什么?
Igo*_*bia 35
尝试:
zip -9 -y -r -q file.zip folder/
Run Code Online (Sandbox Code Playgroud)
-9 表示最慢压缩速度(最佳压缩,忽略后缀列表)-y 在 zip 存档中存储符号链接,而不是压缩和存储链接引用的文件-r 递归遍历目录结构-q 静音模式zip -Z设置压缩选项。-Z store是最微不足道的,因为它根本不压缩。当您将其zip用作 的替代方案tar或进行故障排除时,这很有用。在这种情况下,您应该尝试查看未压缩的存档是否可以从 Windows 使用。如果可以使用,您就知道必须选择非默认压缩选项。
唯一看起来相关的是这个
-k - Attempt to convert the names and paths to conform to MSDOS, store only the MSDOS attribute (just the user write attribute from UNIX), and mark the entry as made under
MSDOS (even though it was not); for compatibility with PKUNZIP under MSDOS which cannot handle certain names such as those with two dots.
Run Code Online (Sandbox Code Playgroud)
但是在去其他任何地方之前,请务必在您的系统上阅读“man zip”...
小智 5
除了其他人的建议之外,重要的是要注意您的文件和目录名称,因为 Windows 不一定喜欢 Linux 文件路径和名称。有时在压缩时也会以不同的方式转义它们。示例有很多,但最重要的是点文件(. 和 ..)、仅大小写差异的文件(name.txt 和 NAME.txt)、绝对文件路径(/tmp/file.txt)。当使用 Windows 资源管理器打开文件时,Windows 上的文件名中允许使用的其他一些字符可能会导致问题。就我而言,“:”字符是破坏交易的因素,但需要做很多工作才能找到这一点。
因此,在您继续使用大量参数之前,我建议遵循一个简单的过程:
找到文件夹或归档您的压缩文件。
运行: zip -9 -r -k zip-modified-names.zip /path/to/your/folder
如果这有效,您最好从文件/目录名称中删除已被 -k 选项删除的字符,然后尝试正常压缩。 请注意,某些参数(例如 -k)具有副作用。 在这种情况下,-k 与 -q 选项(对于符号链接)矛盾。
另外 -k 选项可能会使您的文件名不可读。就我而言,我的文件是根据创建时间命名的(例如 10:55:39.pdf),以便于从档案中轻松找到所需的记录,但 -k 选项将其转换为 105539.pdf,这对用户来说不容易阅读。因此,我将名称更改为 10_55_39.pdf,该文件在 Windows 上打开而无需使用 -k 选项,但仍然可读。
| 归档时间: |
|
| 查看次数: |
86822 次 |
| 最近记录: |