Сжатие данных в реальном времени без потерь с помощью Zstandard (zstd)
Хорошо организованное сжатие данных является важным компонентом эффективного управления данными. Это позволяет нам экономить дисковое пространство, сокращать время передачи данных и повышать общую эффективность данных. Среди многочисленных утилит сжатия данных, которые с каждым годом набирают популярность, -zstd выделяется как высокопроизводительный вариант. Zstd — это программное обеспечение с открытым исходным кодом, разработанное Яном Коллетом, которое обеспечивает впечатляющую степень сжатия, сохраняя при этом высокую скорость распаковки.
Zstd — это гибкая и адаптируемая утилита сжатия данных, подходящая для сжатия различных типов данных, таких как текст, изображения, аудио и видео и других. Более того, он совместим с несколькими платформами, включая Linux, Windows, MacOS и FreeBSD, что делает его надежным и доступным инструментом для разных пользователей. Кроме того, гибкость zstd распространяется на его интерфейс командной строки, который удобен для пользователя и содержит множество опций и функций.
В этой статье мы предоставим подробное объяснение zstd, рассмотрим, как он работает и как его установить. Кроме того, мы предложим практические примеры того, как сжимать и распаковывать файлы с помощью zstd, и продемонстрируем некоторые из его расширенных возможностей, таких как многопоточность, изучение словаря и уровни сжатия и другие. К концу этой статьи вы получите полное представление о zstd и о том, как его можно использовать для удовлетворения ваших потребностей в сжатии данных.
Установка Zstandard в Linux
Zstandard доступен в официальных репозиториях большинства дистрибутивов Linux, что упрощает его установку с помощью менеджера пакетов. Для его установки в Ubuntu используются несколько команд, упомянутых ниже —
Введите команду для установки Zstandard
sudo apt-get update
sudo apt-get install zstd
Вывод предоставит всю информацию об обновлении и установке Zstandard
user@ubuntu:~$ sudo apt-get update
[sudo] password for user:
Get:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB]
Hit:2 http://us.archive.ubuntu.com/ubuntu focal InRelease
Get:3 http://us.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1,341 kB]
Get:6 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages [784 kB]
Get:7 http://security.ubuntu.com/ubuntu focal-security/main Translation-en [236 kB]
Get:8 http://security.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [44.7 kB]
Get:9 http://security.ubuntu.com/ubuntu focal-security/restricted Translation-en [11.6 kB]
Get:10 http://security.ubuntu.com/ubuntu focal-security/universe amd64 Packages [959 kB]
Get:11 http://security.ubuntu.com/ubuntu focal-security/universe Translation-en [172 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu focal-updates/main Translation-en [341 kB]
Get:13 http://us.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [70.1 kB]
Get:14 http://us.archive.ubuntu.com/ubuntu focal-updates/restricted Translation-en [12.9 kB]
Get:15 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [900 kB]
Get:16 http://us.archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [197 kB]
Get:17 http://us.archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [8,680 B]
Get:18 http://us.archive.ubuntu.com/ubuntu focal-backports/main Translation-en [4,156 B]
Fetched 5,297 kB in 5s (1,163 kB/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
user@ubuntu:~$ sudo apt-get install zstd
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
zstd
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 249 kB of archives.
After this operation, 1,120 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 zstd amd64 1.4.5+dfsg-4 [249 kB]
Fetched 249 kB in 1s (177 kB/s)
Selecting previously unselected package zstd.
(Reading database ... 233077 files and directories currently installed.)
Preparing to unpack .../archives/zstd_1.4.5+dfsg-4_amd64.deb ...
Unpacking zstd (1.4.5+dfsg-4) ...
Setting up zstd (1.4.5+dfsg-4) ...
Processing triggers for man-db (2.9.1-1) ...
user@ubuntu:~$
После успешной установки Zstandard мы можем перейти к изучению некоторых базовых примеров использования команд Zstd в следующем разделе.
Список различных примеров использования команды «Zstd» в Linux
1. Сжать файл
Чтобы сжать файл с помощью Zstd, используйте команду «zstd filename». Уровень сжатия по умолчанию — 3, но мы можем настроить его с помощью «-# (число)». Zstd отлично подходит для больших файлов, уменьшая их размер для упрощения хранения и передачи. Он также имеет высокую скорость декомпрессии для легкого восстановления без потери эффективности. Zstd — это простой, но мощный инструмент для улучшения управления данными в системах Linux.
Ввод команды для сжатия файла
zstd example.txt
Вывод команды zstd
user@ubuntu:~$ zstd example.txt
user@ubuntu:~$
2. Распаковать файл
Если вы хотите распаковать файл, сжатый с помощью Zstd, используйте команду «zstd -d», за которой следует имя сжатого файла. Например, «zstd -d example.txt.zst» восстановит сжатый файл в исходный формат. Высокая степень сжатия Zstd и высокая скорость распаковки делают его надежным и эффективным способом управления большими файлами в Linux.
Команда для распаковки файла
zstd -d example.txt.zst
3. Сжать каталог
Сжать целые каталоги с помощью команды Zstd очень просто. Все, что нам нужно сделать, это использовать команду «tar cf - имя_каталога/ | zstd > имя_сжатого_файла.tar.zst». Например, предположим, что у нас есть каталог с именем «example», который мы хотим сжать, и создайте сжатый файл с именем «example.tar.zst». Нам нужно запустить эту команду в терминале «tar cf - example/ | zstd > example.tar.zst». Это сожмет весь каталог в один файл, поэтому вы можете использовать эту команду.
Ввод команды для сжатия каталога
tar cf - example/ | zstd > example.tar.zst
4. Распаковать каталог
Чтобы распаковать каталог, сжатый Zstd, в Linux вы можете использовать команду «zstd -d example.tar.zst | tar xvf -». Укажите имя сжатого файла с опцией «-d». Команда «tar» извлекает содержимое архивного файла с помощью опции «-xvf». Не забудьте сделать резервную копию сжатого каталога перед его распаковкой, чтобы избежать перезаписи существующих каталогов с тем же именем.
Ввод для распаковки каталога
zstd -d example.tar.zst | tar xvf -
Вывод команды «zstd -d»
$ zstd -d example.tar.zst | tar xvf -
example/
example/file1.txt
example/file2.txt
example/file3.txt
5. Многопоточное сжатие
Если у вас большой файл, который необходимо быстро сжать, мы можем использовать Zstd, инструмент быстрого сжатия, который использует несколько ядер ЦП для повышения скорости сжатия. Написав эту команду «zstd -T0 example.txt», вы можете активировать многопоточное сжатие с числом потоков, равным 0, что позволит Zstd использовать все доступные ядра ЦП для сжатия файла «example.txt». Таким образом, , вы можете активировать многопоточное сжатие в Linux.
Команда ввода для многопоточного сжатия
zstd -T0 example.txt
Вывод этой команды может выглядеть следующим образом
zstd -T0 example.txt
example.txt : 100% [==================================================================================================] 10.00 MiB/s 2.20:1
6. Установите уровень сжатия.
Zstd имеет 22 уровня сжатия с различными компромиссами между степенью сжатия и скоростью. Используйте команду «zstd -
Команда ввода для установки уровня сжатия
zstd -3 example.txt
Вывод уровня сжатия zstd
example.txt : 10.00 MB
--
example.txt : 3.55 MB (35.45%) (x3.18)
--
Заключение
В заключение отметим, что Zstandard — ценный инструмент сжатия, который может сэкономить дисковое пространство и ускорить передачу данных. Установка zstd в Linux — это простой процесс, и использовать его для сжатия и распаковки файлов очень просто. Мы уверены, что эта статья помогла вам начать работу с zstd и научила вас использовать его для повышения требований к сжатию данных.