Как вы архивируете ветку с помощью 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
".