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 — это быстрый алгоритм сжатия данных без потерь в реальном времени и инструмент сжатия, обеспечивающий высокую степень сжатия. Попробуйте и поделитесь своими мыслями об этом или задайте вопросы через форму обратной связи ниже.