Назад | Перейти на главную страницу

zip не работает для больших файлов

Как лучше всего сжать файл, если его размер превышает 4 ГБ?

Последние несколько месяцев я использую следующее.

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. Мой выбор правильный?

Почему бы не использовать отраслевой стандарт для такого рода материалов: gzip?

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

Сравнение размеров:

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

Используйте 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 размер файла не ограничен (зависит от файловой системы).

Либо обновить 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, ...

Вы должны иметь возможность сжимать файлы размером более 4 ГБ с помощью pbzip2.