如何将大文件夹压缩成限制为 20Mb 的小文件?

如何将大文件夹压缩成限制为 20Mb 的小文件?

我正在寻找将大文件夹压缩成多个 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。

脚本编写相当棘手,并且过程相当缓慢、痛苦。

相关内容