归档数千个文件和 7zip 限制

发布于 2024-10-08 13:41:56 字数 186 浏览 2 评论 0原文

我的应用程序要求每天运行一个任务,其中需要压缩 100,000 多个 PDF(每个约 50kb)文件。目前,我正在使用 7-zip 并调用 7za.exe(带有 7-zip 的命令行工具)来压缩每个文件(文件位于许多不同的文件夹中)。

这种方法有哪些局限性以及如何解决? 7zip 存档是否有文件大小或文件数量限制?

My application requires that a task is run everyday in which 100,000+ PDF (~ 50kb each) files need to be zipped. Currently, I'm using 7-zip and calling 7za.exe (the command line tool with 7-zip) to zip each file (files are located in many different folders).

What are the limitations in this approach and how can they be solved? Is there a file size or file count limit for a 7zip archive?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

千纸鹤 2024-10-15 13:41:56

文件大小限制为 16 艾字节,即 16000000000 GB。

文件数量没有硬性限制,但管理文件头的方式有实际限制。确切的限制取决于路径长度,但在 32 位系统上,您将遇到大约一百万个文件的限制。

我不确定是否还有其他格式支持更多。普通拉链的限制要小得多。

http://en.wikipedia.org/wiki/7-Zip

7-Zip 的一个显着限制是,虽然它支持最大 16 艾字节的文件大小,但除了执行实际压缩所需的内存之外,它在为文件分配内存方面的开销异常高。

每个文件大约需要 1 KB(如果路径名很长则需要更多),并且仅文件列表就可以增长到比实际压缩所需的内存大一个数量级。在现实世界中,这意味着 32 位系统无法在一个存档中压缩超过一百万个左右的文件,因为内存要求超过 2 GB 进程限制。

64 位系统不会受到相同的进程大小限制,但仍需要几 GB RAM 来克服此限制。然而,在此类系统上创建的存档在内存较少的计算机上将无法使用。

The limit on file size is 16 exabytes, or 16000000000 GB.

There is no hard limit on the number of files, but there is a practical limit in how it manages the headers for the files. The exact limit depends on the path lengths but on a 32-bit system you'll run into limits somewhere around a million files.

I'm not sure if any other format supports more. Regular zip has far smaller limits.

http://en.wikipedia.org/wiki/7-Zip

One notable limitation of 7-Zip is that, while it supports file sizes of up to 16 exabytes, it has an unusually high overhead allocating memory for files, on top of the memory requirements for performing the actual compression.

Approximately 1 kilobyte is required per file (More if the pathname is very long) and the file listing alone can grow to an order of magnitude greater than the memory required to do the actual compression. In real world terms, this means 32-bit systems cannot compress more than a million or so files in one archive as the memory requirements exceed the 2 GB process limit.

64-bit systems do not suffer from the same process size limitation, but still require several gigabytes of RAM to overcome this limitation. Archives created on such systems would be unusable on machines with less memory however.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文