Ускорение архивирования бэкапов

Создание бэкапов с помощью tar.gz начало занимать очень много времени, так как оно использует только одно ядро процессора. Чтобы ускорить этот процесс, можно воспользоваться архиватором pigz. Это многопоточная реализация gzip, как написано на сайте “полно-функциональная замена gzip”, что должно давать полную совместимость.

Допустим у нас есть некий bash скрипт (или иное) бэкапа, файлов, базы данных и другого на сервере. Чтобы работать с pigz, нужно для начала установить. Он есть в официальных репозиториях, дополнительно ничего подключать не нужно:

#Debian
apt-get install pigz

#Centos
yum install pigz

После установки достаточно заменить в скрипте (или в ином) архивации команду, например на следующую:

tar -cvzf - /var/ --exclude='/var/site2' | pigz -p4 -v > /home/backup.tar.gz 2>/home/log/error_tar.log

Мы указываем директорию /var/ для создания архива и исключаем подкаталог /var/site2, не хотим его включать в бэкап кроме всего остального. Далее явно указываем pigz использовать 4 ядра процессора, например из 8, чтобы не зависли другие процессы во время бэкапа. В конце я указал директорию /home/ где будет сохранён архив/бэкап и перенаправил вывод из консоли в файл /home/log/error_tar.log.

В моём случае pigz сократил время создание бэкапа на несколько часов, но также нужно не забывать, что время зависит ещё от самих накопителей на сервере. На HDD результат может быть куда ниже чем вы ожидали, чем на SSD или NVMe.