Как вы архивируете ветку с помощью gzip с самым высоким уровнем сжатия?

Я пытаюсь архивировать ветку с помощью gzip с максимальным уровнем сжатия (9), но на этом уровне он не сжимается. Вот моя команда:

git -C /home/user/example.com/ archive --format tar -o /home/user/site_backups/develop-`date +%Y-%m-%dT%H%M`.tar develop | gzip -9

Он создает файл tar, но его размер превышает 100 МБ по сравнению с zip-файлом, сжатым на 86 МБ с помощью этой команды:

git -C /home/user/example.com/ archive --format zip -o /home/user/site_backups/develop-`date +%Y-%m-%dT%H%M`.zip develop

Можно ли сжать выходной файл больше? Что я делаю неправильно?

0 ответов

В настоящее время (4 года спустя) команда будет такой:

git -C /home/user/example.com/ archive --format tgz -19 -o /home/user/site_backups/develop-`date +%Y-%m-%dT%H%M`.tar develop

С Git 2.30 (первый квартал 2021 г.) " git archive"( man) теперь допускает уровень сжатия выше"-9"при генерации вывода tar.gz.

См. Commit cde8ea9 (09 ноября 2020 г.) Рене Шарфе (rscharfe).
(Слияние Junio ​​C Hamano - gitster- в коммите ede4d63, 18 ноя 2020)

archive: поддержка уровней сжатия выше 9

Подписано: Рене Шарфе

Программы сжатия, такие как zip, gzip, bzip2 и xz позволяют регулировать компромисс между стоимостью процессора и увеличением размера с помощью числовых параметров из -1 для быстрого сжатия и -9для высокой степени сжатия.
zip также принимает -0 для дословного хранения файлов.
git archive(man) напрямую поддерживает эти однозначные уровни сжатия для вывода ZIP и передает их фильтрам, таким как gzip.

Zstandard дополнительно поддерживает параметры уровня сжатия -10 к -19, или до -22 с участием --ultra.
Это, кажется, работать с git archive(man) в большинстве случаев, например, он создаст архив с -19 без жалоб, но поскольку он поддерживает только однозначные параметры уровня сжатия, это то же самое, что -1 -9 и поэтому -9.

Позволять git archive(man) принимать многозначные уровни сжатия для поддержки полного диапазона, поддерживаемого zstd.
Явно отклоните их для формата ZIP, иначе deflateInit2() просто потерпит неудачу с несколько загадочным "stream consistency error".

Другие вопросы по тегам