如果文件大小超过 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 的文件。