
Чтокомпрессионные инструментыдоступны в Ubuntu, которые могут извлечь выгоду из многоядерного процессора.
решение1
Ну, ключевое слово былопараллельный. После поиска всех инструментов сжатия, которые также былипараллельныйЯ нашел следующее:
ПХЗ- Parallel XZ — это утилита сжатия, которая использует преимущества выполнения сжатия LZMA различных частей входного файла на нескольких ядрах и процессорах одновременно. Ее основная цель — использовать все ресурсы для ускорения времени сжатия с минимальным возможным влиянием на степень сжатия.
sudo apt-get install pxz
ПЛЗИП- Lzip — это компрессор данных без потерь, основанный на алгоритме LZMA, с очень безопасной проверкой целостности и пользовательским интерфейсом, похожим на интерфейс gzip или bzip2. Lzip распаковывает почти так же быстро, как gzip, и сжимает лучше, чем bzip2, что делает его хорошо подходящим для распространения программного обеспечения и архивирования данных.
Plzip — это массивно-параллельная (многопоточная) версия lzip, использующая формат файла lzip; файлы, создаваемые plzip, полностью совместимы с lzip.
Plzip предназначен для более быстрого сжатия/распаковки больших файлов на многопроцессорных машинах, что делает его особенно подходящим для распространения больших файлов программного обеспечения и крупномасштабного архивирования данных. Для достаточно больших файлов plzip может использовать сотни процессоров.
sudo apt-get install plzip
ПИЦЗ- pigz (Parallel Implementation of GZip) — это полнофункциональная замена gzip, которая использует преимущества нескольких процессоров и нескольких ядер при сжатии данных.
sudo apt-get install pigz
PBZIP2- pbzip2 - это параллельная реализация bzip2-блок-сортирующего файлового компрессора, который использует pthreads и достигает почти линейного ускорения на SMP-машинах. Выход этой версии полностью совместим с bzip2 v1.0.2 (т.е. все, что сжато с помощью pbzip2, может быть распаковано с помощью bzip2).
sudo apt-get install pbzip2
ЛРЗИП- Многопоточная программа сжатия, которая может достигать очень высоких коэффициентов сжатия и скорости при использовании с большими файлами. Она использует комбинированные алгоритмы сжатия zpaq и lzma для максимального сжатия, lzo для максимальной скорости и дальнее снижение избыточности rzip. Она разработана для масштабирования с увеличением размера ОЗУ, что еще больше улучшает сжатие. Выбор оптимизации размера или скорости позволяет либо получить лучшее сжатие, чем может обеспечить lzma, либо лучшую скорость, чем gzip, но с уровнями сжатия размера bzip2.
sudo apt-get install lrzip
Небольшой тест сжатия (с использованием теста, созданного Оли):
ОРИГИНАЛЬНЫЙ РАЗМЕР ФАЙЛА - 100 МБ
PBZIP2 - 101 МБ (на 1% больше)
PXZ - 101 МБ (на 1% больше)
PLZIP - 102 МБ (на 1% больше)
LRZIP - 101 МБ (на 1% больше)
PIGZ - 101 МБ (на 1% больше)
Небольшой тест сжатия (с использованием текстового файла):
ОРИГИНАЛЬНЫЙ РАЗМЕР ФАЙЛА - 70 КБ Текстовый файл
PBZIP2 - 16,1 КБ (23%)
PXZ - 15,4 КБ (22%)
PLZIP - 15,5 КБ (22,1%)
LRZIP - 15,3 КБ (21,8%)
PIGZ - 17,4 КБ (24,8%)
решение2
Есть два основных инструмента. lbzip2
и pbzip2
. По сути, это разные реализации компрессоров bzip2. Я сравнил их (вывод — это упорядоченная версия, но вы должны иметь возможность запускать команды)
cd /dev/shm # we do all of this in RAM!
dd if=/dev/urandom of=bigfile bs=1024 count=102400
$ lbzip2 -zk bigfile
Time: 0m3.596s
Size: 105335428
$ pbzip2 -zk bigfile
Time: 0m5.738s6
Size: 10532460
lbzip2
Кажется, это победитель на случайных данных. Он немного менее сжат, но гораздо быстрее. YMMV.
решение3
Обновлять:
XZ Utilsподдерживает многопоточное сжатие с версии 5.2.0, первоначально оно ошибочно документировалось как многопоточная распаковка.
Например:tar -cf - source | xz --threads=0 > destination.tar.xz
решение4
Zстандартподдерживает многопоточность сверсия 1.2.0¹. Это очень быстрый компрессор и декомпрессор, призванный заменить gzip, и он также может сжимать так же эффективно (если не лучше), как LZMA2/XZ на самых высоких уровнях.
Вам нужно использоватьодин из этих релизов, или скомпилируйте последнюю версию из исходников, чтобы получить эти преимущества. К счастью, это не тянет за собой много зависимостей.
В версии zstd 1.1.0 также был сторонний pzstd.