Как лучше всего сжать файл, если его размер превышает 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.