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.