Поиск по сайту:

zstd — алгоритм быстрого сжатия данных, используемый Facebook


Zstandard (также известная как zstd) — это бесплатная программа с открытым исходным кодом, обеспечивающая быстрое сжатие данных в реальном времени и улучшенную степень сжатия, разработанная Facebook. Это алгоритм сжатия без потерь, написанный на C (есть повторная реализация на Java) – таким образом, это собственная программа для Linux.

Читайте также: 10 примеров команд 7zip (сжатие данных) в Linux

При необходимости он может менять скорость сжатия на более высокую степень сжатия (компромисс скорости сжатия и степени сжатия можно настроить с небольшими приращениями) и наоборот. Он имеет специальный режим для сжатия небольших данных, известный как сжатие словаря, и может создавать словари из любого предоставленного набора образцов. Он поставляется с утилитой командной строки для создания и декодирования .zst, .gz, .xz и .lz4. файлы.

Важно отметить, что Zstandard имеет богатую коллекцию API и поддерживает практически все популярные языки программирования, включая Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft и многие другие.

Он активно используется для сжатия больших объемов данных в различных форматах и вариантах использования в Facebook; такие сервисы, как хранилище данных Amazon Redshift; базы данных, такие как Hadoop и Redis; сеть Tor и многие другие приложения, включая игры.

Следующие результаты получены путем выполнения нескольких тестов алгоритмов быстрого сжатия на сервере под управлением Linux Debian с использованием lzbench, инструмента для тестирования производительности в памяти с открытым исходным кодом.

Как установить инструмент сжатия Zstandard в Linux

Чтобы установить Zstandard в дистрибутив Linux, вам необходимо скомпилировать его из исходных кодов, но перед этим сначала вам необходимо установить необходимые инструменты разработки в вашей системе с помощью менеджера пакетов дистрибутива, как показано.

sudo apt update && sudo apt install build-essential		#Ubuntu/Debian
yum group install "Development Tools" 			#CentOS/REHL
dnf groupinstall "C Development Tools and Libraries"		#Fedora 22+

После установки всех необходимых инструментов разработки вы можете загрузить исходный пакет, перейти в локальный каталог репозитория, собрать двоичный файл и установить его, как показано.

cd ~/Downloads
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install 

После установки Zstandard мы можем двигаться дальше и изучать базовые примеры использования команд Zstd в следующем разделе.

Изучите 10 примеров использования команд Zstd в Linux

Синтаксис командной строки Zstd в целом аналогичен синтаксису инструментов gzip и xz, с некоторыми отличиями.

1. Чтобы создать файл сжатия .zst, просто укажите имя файла для его сжатия или используйте флаг -z, который также означает сжатие, что действие по умолчанию.

zstd etcher-1.3.1-x86_64.AppImage 
OR
zstd -z etcher-1.3.1-x86_64.AppImage 

2. Чтобы распаковать сжатый файл .zst, используйте флаг -d или утилиту unzstd, как показано.

zstd -d etcher-1.3.1-x86_64.AppImage.zst 
OR
unzstd etcher-1.3.1-x86_64.AppImage.zst 

3. Чтобы удалить исходный файл после операции, по умолчанию исходный файл не удаляется после успешного сжатия или распаковки. Чтобы удалить его, используйте параметр --rm.

ls etcher-1.3.1-x86_64.AppImage
zstd --rm  etcher-1.3.1-x86_64.AppImage
ls etcher-1.3.1-x86_64.AppImage

4. Чтобы установить уровень сжатия, zstd имеет ряд модификаторов операций, например, вы можете указать уровень сжатия как -6 (число 1–19, по умолчанию — 3), как показано.

zstd -6 --rm etcher-1.3.1-x86_64.AppImage

5. Чтобы установить скорость сжатия, zstd имеет коэффициент скорости сжатия 1–10, скорость сжатия по умолчанию — 1. Вы можете обменять степень сжатия на скорость сжатия с помощью опции --fast: чем выше число, тем выше скорость сжатия.

zstd --fast=10 etcher-1.3.1-x86_64.AppImage

6. Чтобы отобразить информацию о сжатом файле, используйте флаг -l, который используется, например, для отображения информации о сжатом файле.

zstd -l etcher-1.3.1-x86_64.AppImage.zst

7. Чтобы проверить целостность сжатых файлов, используйте флаг -t, как показано.

zstd -t etcher-1.3.1-x86_64.AppImage.zst

8. Чтобы включить подробный режим, используйте параметр -v.

zstd -v -5 etcher-1.3.1-x86_64.AppImage

9. Чтобы использовать другие форматы сжатия или распаковки файлов, такие как gzip, xz, lzma и lz4, используйте --format=FORMAT, как показано.

zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage
zstd -v --format=xz  etcher-1.3.1-x86_64.AppImage

10. Чтобы установить приоритет процесса zstd в режиме реального времени, вы можете использовать опцию –priority=rt, как показано.

$zstd --priority=rt etcher-1.3.1-x86_64.AppImage

Флаг -r указывает zstd рекурсивно работать со словарями. Вы можете найти множество полезных и расширенных опций, как читать или создавать словари, посетив справочную страницу zstd.

man zstd

Репозиторий Zstandard Github: https://github.com/facebook/zstd

Zstandard — это быстрый алгоритм сжатия данных без потерь в реальном времени и инструмент сжатия, обеспечивающий высокую степень сжатия. Попробуйте и поделитесь своими мыслями об этом или задайте вопросы через форму обратной связи ниже.