Какой лучше использовать тип архива gz или bz2?

Хочу сделать бекап системы (Debian 10)
Что лучше использовать, чтобы сохранялись права и т.д.?
  • Вопрос задан
  • 1769 просмотров
Пригласить эксперта
Ответы на вопрос 6
@rPman
В linux исторически сложилось для архивации использовать tar, это наверное самый многофункциональный инструмент, позволит сохранить все плюс даже то что не нужно.

* для сохранения прав нужен ключ -p
* для сохранения extended attributes нужен ключ --xattrs
* для обнаружения и сохранения информации о дырявых файлах sparse ключ -S
* символические ссылки будут сохранены как ссылки по умолчанию, поведение можно по разному менять опциями (например хранить как файл или к примеру при распаковке пробовать создать hardlink вместо symlink и т.п.)

Упаковывать можно потом полученный tar архив или лучше в процессе, ключ -a автоматически определит архиватор по расширению, чем угодно. Никто не мешает тебе создать архив без его сохранения просто отправляя его в момент создания в никуда:
tar -cjf /dev/stdout . | wc -c
будет сжимать bzip2 (ключ j) текущий каталог с подкаталогами и отправлять его в команду wc, которая просто посчитает его размер в байтах и выведет на экран. Повтори команду поменяв ключ j на J (это xz), z (это gzip) и т.п. и сравнивай полученные размеры (советую попробовать zstd)

p.s. как альтернатива, можно архивировать не файлы а весь раздел, с помощью набора утилит partclone (поддерживает все даже что то типа ntfs) можно создать копию раздела, в котором не будут сохранены сектора, помеченные как свободные, при этом скорость работы утилиты сравнима с dd (а это вообще просто посекторное копирование) и в большинстве случаев позволяет менять размер раздела, на который будет все это восстанавливаться (с ntfs редко но могут возникнуть проблемы при уменьшении)

p.p.s. еще есть фичи-инструменты файловых систем, например у btrfs есть возможность получить в качестве файла разницу между указанными снапшотами, созданными в разное время, и применить его позже, хоть на другой машине... тоже можно считать инструментом для бакапа
Ответ написан
dyuriev
@dyuriev
A posteriori
В данном кейсе (полные бэкапы) gzip и bzip2 жмут tar файл, который уже из себя представляет несжатый "архив" ваших файлов со всем атрибутами (смотря как флаги зададите)
Так что в плане прав и атрибутов файлов они абсолютно идентичны

Субъективно лучше gzip

Почему можно считать лучше bzip2
  1. bzip2 выигрывает у gzip пару процентов по степени сжатия, да, безусловно


Почему можно считать лучше gzip
  1. Он быстрее на сжатие (в 4-6 раз на синтетический тестах на смешанном контенте
  2. На скорость распаковки степень сжатия не влияет практически никак, есть даже обратная зависимость - чем сильнее сжатие, тем быстрее распаковка. Быстрее bzip2 на распаковку в 6-10 раз.
  3. Можно увеличить скорость сжатия/распаковки кратно количеству ядер используя вместо gzip его полностью совместимый многопоточный "форк" - pigz (на самом деле не форк, но на выходе получаете полностью совместимый gzip-архив).
  4. Можно ускорить еще в 2-3 раза сжатие/распаковку если запариться и собрать pigz с zlib-ng/zlib-cf/zlib-intel вместо ванильного zlib 1.2.*


Да, bzip2 тоже есть многопоточный, а так же xz в последних версиях из коробки потоки поддерживает, но скорость распаковки у них ужасная, а когда бэкап надо развернуть срочно - перематеритесь и проклянете все и вся

PS: я вот доигрался с "эффективными" средствами сжатия и в данную минуту жду, пока распакуется архив с 200гб инфы, чтобы вытащить один единственный файл, так что воистину по больному и актуальному своим вопросом прошлись
Ответ написан
justhabrauser
@justhabrauser
IT specialist
Ну, в общем, итого:
1.1. gzip жмет быстрее, bz2 жмет сильнее (все - по-умолчанию). Но надо выбрать что-то одно.
1.2. xz жмет сильнее всех, но можно не дождаться до пенсии.
1.3.. zstd жмет примерно как gzip (и скорость и сжатие), но разжимает на порядок быстрее gzip. Но не везде есть.
2. что такое "лучше" в характеристика компрессоров отсутствует как класс (хотя слово best в манах присутствует).
3. к правам компрессоры отношения не имеют никакого.
Ответ написан
smorman
@smorman
When In Rome do as The Romans do...
Lynn
@Lynn
nginx, js, css
Ни то ни другое не сохранит права и всё такое
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
для сохранения прав можно запрячь rsync или tar а для сжатия лучше xz
как пример https://wiki.archlinux.org/title/Rsync#Full_system...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы