XZ Utils - XZ Utils
Autor (es) original (is) | Lasse Collin |
---|---|
Desenvolvedor (s) | O Projeto Tukaani |
Versão estável | 5.2.5 / 17 de março de 2020
|
Repositório | |
Escrito em | C |
Sistema operacional | Plataforma cruzada |
Modelo | Compressão de dados |
Licença | Domínio público . (mas veja os detalhes em Desenvolvimento e adoção ) |
Local na rede Internet | tukaani |
XZ Utils (anteriormente LZMA Utils ) é um conjunto de compactadores de dados sem perda de linha de comando de software livre , incluindo lzma e xz, para sistemas operacionais do tipo Unix e, da versão 5.0 em diante, Microsoft Windows .
Na maioria dos casos, xz atinge taxas de compactação mais altas do que alternativas como gzip e bzip2 . A velocidade de descompressão é mais rápida que bzip2, mas mais lenta que gzip. A compactação pode ser muito mais lenta do que o gzip e é mais lenta do que o bzip2 para altos níveis de compactação e é mais útil quando um arquivo compactado é usado muitas vezes.
XZ Utils consiste em dois componentes principais:
-
xz
, o compressor e descompressor de linha de comando (análogo ao gzip ) - liblzma , uma biblioteca de software com uma API semelhante a zlib
Existem vários atalhos de comando, como lzma
(para xz --format=lzma
), unxz
(para xz --decompress
; análogo a gunzip
) e xzcat
(para unxz --stdout
; análogo a zcat
)
O XZ Utils pode compactar e descompactar os formatos de arquivo xz e lzma , mas como o formato LZMA agora é legado , o XZ Utils é compactado por padrão em xz.
Uso
Tanto o comportamento do software quanto as propriedades do formato do arquivo foram projetados para funcionar de forma semelhante às ferramentas de compactação do Unix populares gzip e bzip2 . Ele consiste em uma porta Unix do LZMA- SDK de Igor Pavlov que foi adaptada para se encaixar perfeitamente em ambientes Unix e em sua estrutura e comportamento usuais.
xz oferece suporte à compactação multithread (com a -T
bandeira) desde 2014, versão 5.2.0 .; em 2019, a descompressão encadeada ainda não foi implementada. O número de threads pode ser menor do que o definido se o arquivo não for grande o suficiente para threading com as configurações fornecidas ou se o uso de mais threads exceder o limite de uso de memória.
Assim como gzip e bzip, xz e lzma só podem compactar arquivos únicos (ou fluxos de dados) como entrada. Eles não podem agrupar vários arquivos em um único arquivo - para fazer isso, um programa de arquivamento é usado primeiro, como o tar .
Compactando um arquivo:
xz my_archive.tar # results in my_archive.tar.xz lzma my_archive.tar # results in my_archive.tar.lzma
Descompactando o arquivo:
unxz my_archive.tar.xz # results in my_archive.tar unlzma my_archive.tar.lzma # results in my_archive.tar
A versão 1.22 ou superior da implementação GNU de tar tem suporte transparente para tarballs compactados com lzma e xz, usando os switches --xz
ou -J
para compactação xz e --lzma
para compactação LZMA.
Criando um arquivo e compactando-o:
tar -c --xz -f my_archive.tar.xz /some_directory # results in my_archive.tar.xz tar -c --lzma -f my_archive.tar.lzma /some_directory # results in my_archive.tar.lzma
Descompactando o arquivo e extraindo seu conteúdo:
tar -x --xz -f my_archive.tar.xz # results in /some_directory tar -x --lzma -f my_archive.tar.lzma # results in /some_directory
Exemplo de tar com uma única letra para arquivar com compactar e descompactar com extrair usando o sufixo curto :
tar cJf keep.txz keep # archive then compress the directory ./keep/ into the file ./keep.txz tar xJf keep.txz # decompress then extract the file ./keep.txz creating the directory ./keep/
O formato xz
O formato xz melhora o lzma, permitindo filtros de pré-processamento. Os filtros exatos usados são semelhantes aos usados no 7z , já que os filtros do 7z estão disponíveis no domínio público por meio do SDK do LZMA.
Desenvolvimento e adoção
O desenvolvimento do XZ Utils ocorreu dentro do Projeto Tukaani, liderado por Mike Kezner, por um pequeno grupo de desenvolvedores que antes mantinha uma distribuição Linux baseada no Slackware .
Todo o código-fonte de xz e liblzma foi lançado em domínio público . A distribuição de origem do XZ Utils inclui adicionalmente alguns scripts opcionais e um programa de exemplo que está sujeito a várias versões da GPL .
Especificamente, a lista completa de scripts GPL e fontes distribuídas com o software XZ Utils inclui:
- Uma implementação opcional de uma função libc comum, getopt ( GNU GPL v2 e GNU LGPL v2.1 )
- Um script m4 para detecção de pthread ( GNU GPL v3 )
- Alguns scripts de wrapper não essenciais (xzgrep, etc) ( GNU GPL v2 )
- E o programa de exemplo scanlzma, que não está integrado com o sistema de compilação
Os binários xz e liblzma de software resultantes são de domínio público, a menos que a implementação LGPL getopt opcional seja incorporada.
Binários estão disponíveis para FreeBSD , sistemas Linux , Microsoft Windows e FreeDOS . Várias distribuições de Linux , incluindo Fedora , Slackware , Ubuntu e Debian, usam xz para compactar seus pacotes de software. O Arch Linux usava anteriormente o xz para compactar pacotes, mas a partir de 27 de dezembro de 2019, os pacotes são compactados com compactação Zstandard . O arquivo GNU FTP também usa xz.