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

Nam*_* VU 12 zip windows-7

我正在寻找将一个大文件夹压缩成许多 20Mb 文件的方法。我不想将 zip 文件拆分为较小的文件。相反,我想将一些子文件/文件夹分组到压缩时为 20Mb 的组中。

如果你知道怎么做,请帮忙!

更新

我需要单独使用较小的压缩文件,这些文件可以单独解压缩。

我的意图是使用virustotal.com来扫描一个大文件夹。

ado*_*lic 11

在winzip中:通过启动winzip并添加或拖放到winzip或右键单击文件并winzip“添加到zip ...”,将文件添加到zip

然后在winzip中:

操作 - 在“零件尺寸”底部拆分,选择“其他尺寸”,然后输入 20 并选择 mb

完毕!

  • 保持自由的一面也 7zip 工作得很好:) (7认同)
  • 这将拆分 zip 文件,我们不能单独使用拆分的部分。 (3认同)

小智 6

让 zip 为您进行拆分比尝试自己解决要容易得多。如果您的目标是 20MB 的 zip 文件,则必须在将每个文件添加到存档之前估计每个文件的压缩大小。您是否有理由不想让 zip 为您进行拆分?以下是使用 gnu zip 执行此操作的方法:

zip -s 20m -r myzip.zip mydir
Run Code Online (Sandbox Code Playgroud)

这将创建 20MB 的压缩文件,文件名中包含增量索引号。

  • 根据 OP 对另一个答案的评论,听起来他不希望 zip 自动拆分它,因为那样您会得到一个要求所有文件正常运行的单一存档,但他希望每个部分都是完整的、可用的存档、独立的其他人。 (4认同)

Dav*_*man 6

您所提议的本质上是 Knapsack Problem 的一个变体,增加了一些扭曲,即由于文件压缩,您一开始不知道每个项目将占用多少 20MB“背包”。

当然,简单的解决方案是简单地独立压缩每个文件,但这并不能减少文件数量,所以我怀疑这不是一个令人满意的解决方案。

如果遇到这个问题,我想我会首先将每个文件单独压缩到一个临时位置(或在内存中,而不将它们写入磁盘),这样我就可以获得每个文件的近似压缩大小。有了这些信息,就可以决定哪些文件应该通过解决背包问题的任何标准方法组合在一起并创建实际的 zip 文件。

假设您有可用的脚本语言并且知道如何使用它,我希望这种方法可以非常简单地实现自动化;如果您有多个文件要处理,手动操作会非常乏味......


Maj*_*nko 3

恐怕这不是一个容易的前景。

我最近编写了一个脚本,将文件收集到不大于 4.3GB 的子目录中,以便轻松存储在 DVD 上,但这都是未压缩的。

通过压缩来做到这一点——现在挑战来了。您无法预测压缩后文件的大小- 您所能做的就是继续按大小降序将文件添加到 zip 中,直到它超过 20MB,然后删除最后一个文件,用较小的文件替换它,直到它降至 20MB 以下。如果您用完所有文件后仍然大于 20MB,则只需删除最后一个文件并继续处理下一个 zip。

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