zip 不适用于大文件

zip 不适用于大文件

如果文件大小超过 4 GB,压缩文件的最佳方法是什么?

过去几个月我一直在使用以下产品。

mysqldump --all-databases | zip > mybackup.zip

今天我收到一个错误:

zip error: Entry too big to split, read, or write (file exceeds Zip's 4GB uncompressed size limit)

我正在考虑使用 bzip2。我的选择正确吗?

答案1

为什么不对这类东西使用行业标准:“gzip”?

mysqldump --all-databases | gzip > mybackup.gz

尺寸比较:

720K    mybackup.gz     (compressed)
2.6M    mybackup.sql    (same data, but uncompressed for comparison)

答案2

使用 xz:

mysqldump --all-databases | xz -9 -c > mybackup.xz

压缩率比 zip 高得多,只需确保观察内存使用情况即可。如果您在内存受限的环境中运行 xz,则可以使用下表来调整命令并避免分页:

Preset DictSize   CompCPU   CompMem   DecMem
-0     256 KiB       0        3 MiB    1 MiB
-1       1 MiB       1        9 MiB    2 MiB
-2       2 MiB       2       17 MiB    3 MiB
-3       4 MiB       3       32 MiB    5 MiB
-4       4 MiB       4       48 MiB    5 MiB
-5       8 MiB       5       94 MiB    9 MiB
-6       8 MiB       6       94 MiB    9 MiB
-7      16 MiB       6      186 MiB   17 MiB
-8      32 MiB       6      370 MiB   33 MiB
-9      64 MiB       6      674 MiB   65 MiB

xz 文件大小不受限制(取决于文件系统)。

答案3

至少升级zip到 3.0 版本才能支持 Zip64:

$ zip -v

This is Zip 3.0 (July 5th 2008), by Info-ZIP.

Zip special compilation options:
    LARGE_FILE_SUPPORT   (can read and write large files on file system)
    ZIP64_SUPPORT        (use Zip64 to store large files in archives)

或者使用不同的工具,例如:7z、pbzip2、...

您应该能够使用 pbzip2 压缩大于 4GB 的文件。

相关内容