Pesquisa de site

zstd - Um algoritmo de compactação rápida de dados usado pelo Facebook


Zstandard (também conhecido como zstd) é um programa gratuito de compactação de dados em tempo real, de código aberto e rápido, com melhores taxas de compactação, desenvolvido pelo Facebook. É um algoritmo de compressão sem perdas escrito em C (há uma reimplementação em Java) – portanto, é um programa nativo do Linux.

Leia também: 10 exemplos de comandos 7zip (compressão de dados) no Linux

Quando necessário, ele pode trocar a velocidade de compactação por taxas de compactação mais fortes (a compensação entre velocidade de compactação e taxa de compactação pode ser configurada em pequenos incrementos), vice-versa. Ele possui um modo especial para compactação de pequenos dados, conhecido como compactação de dicionário, e pode construir dicionários a partir de qualquer conjunto de amostras fornecido. Ele vem com um utilitário de linha de comando para criar e decodificar .zst, .gz, .xz e .lz4 arquivos.

É importante ressaltar que Zstandard possui uma rica coleção de APIs, suporta quase todas as linguagens de programação populares, incluindo Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft e muito mais.

Ele é usado ativamente para compactar grandes volumes de dados em vários formatos e casos de uso no Facebook; serviços como armazenamento de dados do Amazon Redshift; bancos de dados como Hadoop e Redis; a rede Tor e muitos outros aplicativos, incluindo jogos.

Os resultados a seguir são obtidos fazendo vários testes de algoritmos de compactação rápida em um servidor executando Linux Debian usando lzbench, uma ferramenta de benchmark de código aberto na memória.

Como instalar a ferramenta de compactação Zstandard no Linux

Para instalar o Zstandard em uma distribuição Linux, você precisa compilá-lo a partir dos fontes, mas antes disso primeiro você precisa instalar as ferramentas de desenvolvimento necessárias em seu sistema usando o gerenciador de pacotes de distribuição, conforme mostrado.

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+

Depois que todas as ferramentas de desenvolvimento necessárias estiverem instaladas, agora você pode baixar o pacote fonte, ir para o diretório de repositório local, construir o binário e instalá-lo conforme mostrado.

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

Uma vez instalado o Zstandard, agora podemos avançar para aprender alguns exemplos de uso básico dos comandos Zstd na seção a seguir.

Aprenda 10 exemplos de uso do comando Zstd no Linux

A sintaxe da linha de comando do Zstd é geralmente semelhante à das ferramentas gzip e xz, com algumas diferenças.

1. Para criar um arquivo de compactação .zst, basta fornecer um nome de arquivo para compactá-lo ou usar o sinalizador -z que também significa compactar, que é a ação padrão.

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

2. Para descompactar um arquivo de compactação .zst, use o sinalizador -d ou o utilitário unzstd conforme mostrado.

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

3. Para remover o arquivo de origem após uma operação, por padrão, o arquivo de origem não é excluído após compactação ou descompactação bem-sucedida. Para excluí-lo, use a opção --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. Para definir um nível de compactação, o zstd possui vários modificadores de operação, por exemplo, você pode especificar um nível de compactação como -6(um número de 1 a 19, o padrão é 3) conforme mostrado.

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

5. Para definir uma velocidade de compactação, o zstd tem uma taxa de velocidade de compactação 1-10, a velocidade de compactação padrão é 1. Você pode trocar a taxa de compactação pela velocidade de compactação com a opção --fast, quanto maior o número, mais rápida será a velocidade de compactação.

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

6. Para exibir informações sobre um arquivo compactado, use o sinalizador -l, que é usado para exibir informações sobre um arquivo compactado, por exemplo.

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

7. Para testar a integridade de arquivos compactados, use o sinalizador -t conforme mostrado.

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

8. Para ativar o modo detalhado, use a opção -v.

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

9. Para usar outros formatos de compactação ou descompactação de arquivos, como gzip, xz, lzma e lz4, usando --format=FORMAT conforme mostrado.

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

10. Para definir uma prioridade de processo zstd para tempo real, você pode usar a opção –priority=rt conforme mostrado.

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

O sinalizador -r instrui o zstd a operar recursivamente em dicionários. Você pode encontrar muitas opções úteis e avançadas sobre como ler ou criar dicionários consultando a página de manual do zstd.

man zstd

Repositório Github Zstandard: https://github.com/facebook/zstd

Zstandard é um algoritmo e ferramenta de compactação de dados rápido e sem perdas, em tempo real, que oferece altas taxas de compactação. Experimente e compartilhe sua opinião ou faça perguntas por meio do formulário de feedback abaixo.