我正在寻找将大文件夹压缩成多个 20Mb 文件的方法。我不想将 zip 文件拆分成较小的文件。相反,我想将一些子文件/文件夹分组,压缩后大小为 20Mb。
如果您知道如何做,请帮忙!
更新
我需要单独使用可以单独解压的较小的压缩文件。
我的目的是使用病毒总站扫描大文件夹。
答案1
在 winzip 中:通过启动 winzip 并添加或拖放到 winzip 中或右键单击文件并选择 winzip“添加到 zip...”将文件添加到 zip
然后在 winzip 中:
操作 - 在‘部分尺寸’底部拆分,选择‘其他尺寸’,然后输入 20 并选择 mb
完毕!
答案2
让 zip 帮您进行拆分会比您自己尝试拆分更容易实现自动化。如果您的目标是 20MB 的 zip 文件,则您必须在将每个文件添加到存档之前估算其压缩大小。您有什么理由不想让 zip 帮您进行拆分吗?以下是使用 gnu zip 进行拆分的方法:
zip -s 20m -r myzip.zip mydir
这将创建 20MB 的压缩文件,文件名中包含增量索引号。
答案3
你所提议的本质上是背包问题,但额外的变化是,由于文件压缩,你一开始并不知道每个物品会占用 20MB“背包”的多少空间。
当然,最简单的解决方案就是简单地单独压缩每个文件,但这并不能减少文件数量,所以我认为这不是一个令人满意的解决方案。
如果我遇到这个问题,我想我会先将每个文件单独压缩到临时位置(或内存中,而不将它们写入磁盘),这样我就可以得到每个文件的近似压缩大小。有了这些信息,就可以决定哪些文件应该按照背包问题的任何标准方法分组,并创建实际的 zip 文件。
假设您有一种可用的脚本语言并且知道如何使用它,我希望这种方法能够相当简单地实现自动化;如果您要处理的文件很多,那么手动执行操作会非常繁琐...
答案4
我担心这不是一个容易的前景。
我最近编写了一个脚本,将文件收集到不大于 4.3GB 的子目录中,以便于存储在 DVD 上,但所有这些都未压缩。
使用压缩来实现这一点——现在有一个挑战。你无法预测文件的大小后压缩 - 您所能做的就是继续按大小降序将文件添加到 zip 中,直到文件大小超过 20MB,然后删除最后一个文件,用较小的文件替换它,直到文件大小降至 20MB 以下。如果您用尽所有文件,文件大小仍然大于 20MB,那么只需删除最后一个文件并转到下一个 zip。
脚本编写相当棘手,并且过程相当缓慢、痛苦。