Если вам когда-либо приходилось сжимать большие объемы с помощью tar
, вы знаете, насколько это может быть сложно. Часто это происходит очень медленно, и вы нажимаете Ctrl+ C, чтобы завершить задачу и просто забыть о ней. Однако есть и другие инструменты, которые может использовать tar, и они являются отличным способом использовать современные многопоточные процессоры и ускорить архивирование tar. В этой статье показано, как заставить tar использовать все ядра при сжатии архивов в Linux.
Понимание и установка инструментов
Три основных инструмента, о которых идет речь, — pigz, pbzip2 и pxz. Между инструментами есть некоторые тонкие различия, но различия заключаются между gzip, bzip2 и xz. В этом порядке уровни сжатия увеличиваются, а это означает, что архив, сжатый с помощью gzip, будет больше, чем архив, сжатый с помощью xz, но gzip, естественно, займет
Contents
Понимание и установка инструментов
-то посередине.Буква «p», начинающаяся в названии каждого инструмента, означает «параллельный». Распараллеливание — это то, что с годами становится все более актуальным: насколько хорошо что-то охватывает все ядра ЦП. С такими процессорами, как линейки AMD Epyc и Threadripper, которые могут достигать 64 ядер и 128 потоков, важно понимать, какие приложения могут это использовать. Эти функции сжатия являются основными кандидатами.
Чтобы установить инструменты, вы можете просто обратиться к своим репозиториям.
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
В целях единообразия в этой статье основное внимание уделяется pxz. Вы можете посмотрите этот урок для pigz .
Сжатие архивов с помощью Tar
Синтаксис tar довольно прост. Чтобы просто сжать каталог, вы можете использовать такую команду:
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
Первый будет использовать gzip, второй — bzip2, а третий — xz. Имя файла и каталог будут различаться в зависимости от того, что вы делаете, но я перетащил ядро Linux с GitHub в свой каталог «/home» и буду использовать его. Итак, я начну эту команду с команды time
спереди, чтобы посмотреть, сколько времени это займет. Вы также можете видеть, что xz указан как занимающий самый высокий процент использования моего процессора в этой системе, но он закрепляет только одно ядро на 100 процентах.
И, как вы можете видеть, моим устаревшим i7-2600 потребовалось очень много времени, чтобы сжать Linux 5.10-rc3 (около 28 минут).
И здесь пригодятся инструменты параллельного сжатия. Если вы сжимаете большой файл и хотите сделать это быстрее, я не могу порекомендовать эти инструменты.
Использование инструментов параллельного сжатия с Tar
Вы можете либо указать tar использовать программу сжатия с опцией --use-compression-program
, либо использовать немного более простой командный флаг -I
. Пример синтаксиса любого из этих инструментов может быть таким:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
Давайте проверим это и посмотрим, сколько времени потребуется моей системе для сжатия ядра Linux с доступом ко всем восьми потокам моего процессора. Вы можете увидеть мои показания htop
, показывающие все темы, закрепленные со 100-процентным использованием из-за pxz.
Вы можете видеть, что сжатие этого архива заняло значительно меньше времени (около семи минут!), и это при многозадачности. У меня есть виртуальная машина, работающая в фоновом режиме, и в данный момент я просматриваю веб-страницы. Аппаратный планировщик ядра Linux предоставит вам все, что вам нужно для ваших личных задач, поэтому, если вы оставите команду pxz
запускаться без каких-либо других программ, работающих в вашей системе, вы сможете сделать это быстрее..
Регулировка уровня сжатия с помощью pigz, pbzip2 и pxz
Вы также можете передать в pxz уровни сжатия, чтобы сделать файл еще меньше. Это потребует больше оперативной пам
Использование инструментов параллельного сжатия с Tar
тельно нужно получить небольшой файл. Вот сравнение двух команд и их результатов.Сжатие не намного сильнее, и время не обязательно того стоит, но если каждый мегабайт имеет значение, это все равно отличный вариант.
Надеюсь, вам понравилось это руководство по использованию всех ядер для сжатия архивов с помощью tar. Обязательно ознакомьтесь с другим нашим контентом по Linux, например как собрать новый компьютер для Linux , освоить Apt и стать гуру Apt и как установить Arch Linux на Raspberry Pi .