InglêsFrancêsEspanhol

Executar servidores | Ubuntu > | Fedora > |


favicon do OnWorks

xz - Online na nuvem

Execute xz no provedor de hospedagem gratuita OnWorks no Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

Este é o comando xz que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS

PROGRAMA:

NOME


xz, unxz, xzcat, lzma, unlzma, lzcat - compactar ou descompactar arquivos .xz e .lzma

SINOPSE


xz [opção] ... [filete] ...

unxz é equivalente a xz --descomprimir.
xzcat é equivalente a xz --descomprimir --stdout.
lzma é equivalente a xz --format = lzma.
unlzma é equivalente a xz --format = lzma --descomprimir.
lzcat é equivalente a xz --format = lzma --descomprimir --stdout.

Ao escrever scripts que precisam descompactar arquivos, é recomendável sempre usar o
nome xz com argumentos apropriados (xz -d or xz -cc) em vez dos nomes unxz e xzcat.

DESCRIÇÃO


xz é uma ferramenta de compressão de dados de uso geral com sintaxe de linha de comando semelhante a gzip(1)
e bzip2(1). O formato de arquivo nativo é o .xz formato, mas o legado .lzma formato usado
por LZMA Utils e streams compactados brutos sem cabeçalhos de formato de contêiner também são
suportado.

xz comprime ou descomprime cada filete de acordo com o modo de operação selecionado. Se não
arquivos são dados ou filete is -, xz lê a entrada padrão e grava os dados processados
para a saída padrão. xz irá recusar (exibir um erro e pular o filete) escrever
dados compactados para saída padrão se for um terminal. De forma similar, xz vai se recusar a ler
dados compactados da entrada padrão se for um terminal.

A menos que --stdout é especificado, arquivos exceto - são gravados em um novo arquivo cujo nome é
derivado da fonte filete nome:

· Ao compactar, o sufixo do formato de arquivo de destino (.xz or .lzma) é anexado a
o nome do arquivo de origem para obter o nome do arquivo de destino.

· Ao descomprimir, o .xz or .lzma o sufixo é removido do nome do arquivo para obter o
nome do arquivo de destino. xz também reconhece os sufixos .txz e .tlz, e os substitui por
do .alcatrão sufixo.

Se o arquivo de destino já existe, um erro é exibido e o filete é ignorado.

A menos que seja escrito na saída padrão, xz irá exibir um aviso e pular o filete se algum de
o seguinte se aplica:

· Envie o não é um arquivo normal. Links simbólicos não são seguidos e, portanto, não são
considerados arquivos regulares.

· Envie o tem mais de um link físico.

· Envie o tem setuid, setgid ou sticky bit definido.

· O modo de operação é definido para comprimir e o filete já tem um sufixo do alvo
formato de arquivo (.xz or .txz ao comprimir para o .xz formato, e .lzma or .tlz quando
comprimindo para o .lzma formato).

· O modo de operação é definido para descompactar e o filete não tem um sufixo de nenhum de
os formatos de arquivo suportados (.xz, .txz, .lzmaou .tlz).

Depois de compactar ou descompactar com sucesso o filete, xz copia o proprietário, grupo,
permissões, tempo de acesso e hora de modificação da fonte filete para o arquivo de destino.
Se a cópia do grupo falhar, as permissões serão modificadas para que o arquivo de destino não
tornar-se acessível a usuários que não tinham permissão para acessar a fonte filete. xz
não suporta a cópia de outros metadados, como listas de controle de acesso ou atributos estendidos
ainda.

Uma vez que o arquivo de destino foi fechado com sucesso, a fonte filete é removido a menos que
--guarda foi especificado. A fonte filete nunca é removido se a saída for gravada em
saída padrão.

transmissão SIGINFO or SIGUSR1 ao xz processo faz com que ele imprima informações de progresso para
erro padrão. Isso tem uso limitado desde quando o erro padrão é um terminal, usando
--verbose exibirá um indicador de progresso de atualização automática.

Memória uso
O uso de memória de xz varia de algumas centenas de kilobytes a vários gigabytes, dependendo
nas configurações de compressão. As configurações usadas ao compactar um arquivo determinam o
requisitos de memória do descompressor. Normalmente, o descompressor precisa de 5% a 20% de
a quantidade de memória que o compressor precisou ao criar o arquivo. Por exemplo,
descompactar um arquivo criado com xz -9 atualmente requer 65 MiB de memória. Ainda assim é
possível ter .xz arquivos que requerem vários gigabytes de memória para descompactar.

Especialmente os usuários de sistemas mais antigos podem encontrar a possibilidade de uso de memória muito grande
irritante. Para evitar surpresas desagradáveis, xz tem um limitador de uso de memória embutido,
que está desabilitado por padrão. Embora alguns sistemas operacionais forneçam maneiras de limitar o
uso de memória de processos, confiar nele não foi considerado flexível o suficiente (por exemplo, usando
ulimit(1) limitar a memória virtual tende a incapacitar mmap(2)).

O limitador de uso de memória pode ser habilitado com a opção de linha de comando --memlimit =limitar.
Freqüentemente, é mais conveniente habilitar o limitador por padrão configurando o ambiente
variável XZ_DEFAULTS, por exemplo XZ_DEFAULTS = - memlimit = 150MiB. É possível definir o
limites separadamente para compressão e descompressão usando --memlimit-compress =limitar e
--memlimit-decompress =limitar. Usando essas duas opções fora XZ_DEFAULTS raramente é útil
porque uma única corrida de xz não pode fazer compressão e descompressão e
--memlimit =limitar ou -M limitar) é mais curto para digitar na linha de comando.

Se o limite de uso de memória especificado for excedido durante a descompactação, xz irá exibir um
erro e descompactar o arquivo falhará. Se o limite for excedido durante a compressão, xz
tentará reduzir as configurações para que o limite não seja mais excedido (exceto quando
utilização --format = raw or - sem ajuste) Desta forma, a operação não falhará a menos que o limite seja
muito pequeno. O dimensionamento das configurações é feito em etapas que não correspondem à compressão
predefinições de nível, por exemplo, se o limite for apenas um pouco menor do que a quantidade necessária para xz -9,
as configurações serão reduzidas apenas um pouco, não totalmente para xz -8.

Concatenação e acolchoamento com .xz arquivos
É possível concatenar .xz arquivos como estão. xz irá descomprimir tais arquivos como se eles
era um solteiro .xz arquivo.

É possível inserir preenchimento entre as partes concatenadas ou após a última parte.
O preenchimento deve consistir em bytes nulos e o tamanho do preenchimento deve ser um múltiplo de
quatro bytes. Isso pode ser útil, por exemplo, se o .xz arquivo é armazenado em uma mídia que mede
tamanhos de arquivo em blocos de 512 bytes.

Concatenação e preenchimento não são permitidos com .lzma arquivos ou fluxos brutos.

OPÇÕES


Número inteiro sufixos e especial valores
Na maioria dos lugares onde um argumento inteiro é esperado, um sufixo opcional é suportado para
indique facilmente números inteiros grandes. Não deve haver espaço entre o inteiro e o
sufixo.

KB Multiplique o número inteiro por 1,024 (2 ^ 10). Ki, k, kB, Ke KB são aceitos como
sinônimos para KB.

Eb Multiplique o número inteiro por 1,048,576 (2 ^ 20). Mi, m, Me MB são aceitos como
sinônimos para Eb.

GiB Multiplique o número inteiro por 1,073,741,824 (2 ^ 30). Gi, g, Ge GB são aceitos como
sinônimos para GiB.

O valor especial max pode ser usado para indicar o valor inteiro máximo suportado pelo
opção.

Operação modo
Se várias opções de modo de operação forem fornecidas, a última terá efeito.

-z, --comprimir
Comprimir. Este é o modo de operação padrão quando nenhuma opção de modo de operação é
especificado e nenhum outro modo de operação está implícito no nome do comando (para
exemplo, unxz implica --descomprimir).

-d, --descomprimir, --descompactar
Descomprimir.

-t, --teste
Teste a integridade do comprimido arquivos. Esta opção é equivalente a --descomprimir
--stdout exceto que os dados descompactados são descartados em vez de serem gravados
saída padrão. Nenhum arquivo é criado ou removido.

-l, --Lista
Imprimir informações sobre compactado arquivos. Nenhuma saída descompactada é produzida e
nenhum arquivo é criado ou removido. No modo de lista, o programa não pode ler o
dados compactados de entrada padrão ou de outras fontes não pesquisáveis.

A lista padrão mostra informações básicas sobre arquivos, um arquivo por linha. Para obter
informações mais detalhadas, use também o --verbose opção. Por ainda mais
informação, uso --verbose duas vezes, mas observe que isso pode ser lento, porque conseguir
todas as informações extras requerem muitas buscas. A largura da saída detalhada excede
80 caracteres, canalizando a saída para, por exemplo, menos -S pode ser conveniente se o
o terminal não é largo o suficiente.

A saída exata pode variar entre xz versões e diferentes localidades. Para máquina-
saída legível, --robô --Lista deve ser usado.

Operação modificadores
-k, --guarda
Não exclua os arquivos de entrada.

-f, --força
Esta opção tem vários efeitos:

· Se o arquivo de destino já existe, exclua-o antes de compactar ou
descomprimir.

· Compactar ou descompactar mesmo se a entrada for um link simbólico para um arquivo normal,
tem mais de um link físico ou tem setuid, setgid ou sticky bit definido. o
setuid, setgid e sticky bits não são copiados para o arquivo de destino.

· Quando usado com --descomprimir --stdout e xz não pode reconhecer o tipo de
arquivo de origem, copie o arquivo de origem como está para a saída padrão. Isso permite xzcat
--força para ser usado como gato(1) para arquivos que não foram compactados com xz.
Observe que, no futuro, xz pode suportar novos formatos de arquivo compactados, que podem
fazer xz descompacte mais tipos de arquivos em vez de copiá-los como estão no padrão
saída. --format =formato pode ser usado para restringir xz para descomprimir apenas um único
formato de arquivo.

-c, --stdout, --to-stdout
Grave os dados compactados ou descompactados na saída padrão em vez de em um arquivo.
Isso implica --guarda.

- single-stream
Descompacte apenas o primeiro .xz transmitir e ignorar silenciosamente a possível entrada restante
dados seguindo o fluxo. Normalmente, esse tipo de lixo faz xz exibir um
erro.

xz nunca descomprime mais de um fluxo de .lzma arquivos ou fluxos brutos, mas
esta opção ainda faz xz ignore os possíveis dados finais após o .lzma filete
ou fluxo bruto.

Esta opção não tem efeito se o modo de operação não for --descomprimir or --teste.

--não-esparso
Desative a criação de arquivos esparsos. Por padrão, se descompactando em um regular
arquivo, xz tenta tornar o arquivo esparso se os dados descompactados contiverem
sequências de zeros binários. Também funciona ao gravar na saída padrão, desde que
como a saída padrão é conectada a um arquivo regular e certas condições adicionais
são encontrados para torná-lo seguro. A criação de arquivos esparsos pode economizar espaço em disco e acelerar
a descompressão, reduzindo a quantidade de E / S de disco.

-S .suf, --suffix =.suf
Ao compactar, use .suf como o sufixo para o arquivo de destino em vez de .xz or
.lzma. Se não estiver gravando na saída padrão e o arquivo de origem já tiver o
sufixo .suf, um aviso é exibido e o arquivo é ignorado.

Ao descompactar, reconheça os arquivos com o sufixo .suf além de arquivos com
do .xz, .txz, .lzmaou .tlz sufixo. Se o arquivo de origem tiver o sufixo .suf,
o sufixo é removido para obter o nome do arquivo de destino.

Ao compactar ou descompactar fluxos brutos (--format = raw), o sufixo deve
sempre ser especificado, a menos que seja escrito na saída padrão, porque não há padrão
sufixo para fluxos brutos.

--arquivos[=filete]
Leia os nomes dos arquivos a serem processados filete; E se filete é omitido, os nomes dos arquivos são lidos
da entrada padrão. Os nomes de arquivos devem terminar com o caractere de nova linha. UMA
traço (-) é considerado um nome de arquivo regular; isso não significa entrada padrão. Se
nomes de arquivos são fornecidos também como argumentos de linha de comando, eles são processados ​​antes do
nomes de arquivos lidos de filete.

--files0[=filete]
Isso é idêntico a --arquivos[=filete] exceto que cada nome de arquivo deve ser encerrado
com o caractere nulo.

Basic filete formato e compressão opções
-F formato, --format =formato
Especifique o arquivo formato para comprimir ou descomprimir:

auto Este é o padrão. Ao compactar, auto é equivalente a xz. Quando
descompactando, o formato do arquivo de entrada é detectado automaticamente. Observação
que fluxos brutos (criados com --format = raw) não pode ser detectado automaticamente.

xz Comprimir para o .xz formato de arquivo ou aceitar apenas .xz arquivos quando
descomprimir.

lzma, sozinho
Comprima para o legado .lzma formato de arquivo ou aceitar apenas .lzma arquivos quando
descomprimir. O nome alternativo sozinho é fornecido para trás
compatibilidade com LZMA Utils.

cru Compacte ou descompacte um fluxo bruto (sem cabeçalhos). Isso se destina a
usuários avançados apenas. Para decodificar fluxos brutos, você precisa usar --format = raw e
especificar explicitamente a cadeia de filtros, que normalmente teria sido armazenada
nos cabeçalhos do contêiner.

-C verificar, --check =verificar
Especifique o tipo de verificação de integridade. A verificação é calculada a partir do
dados descompactados e armazenados no .xz Arquivo. Esta opção tem efeito apenas quando
comprimindo no .xz formato; a .lzma formato não suporta verificações de integridade.
A verificação de integridade (se houver) é verificada quando o .xz o arquivo é descompactado.

Suportado verificar tipos:

Nenhum Não calcule uma verificação de integridade. Isso geralmente é uma má ideia.
Isso pode ser útil quando a integridade dos dados é verificada por outros meios
de qualquer maneira.

crc32 Calcule CRC32 usando o polinômio de IEEE-802.3 (Ethernet).

crc64 Calcule CRC64 usando o polinômio de ECMA-182. Este é o padrão,
uma vez que é um pouco melhor do que CRC32 na detecção de arquivos danificados e o
a diferença de velocidade é insignificante.

sha256 Calcule SHA-256. Isso é um pouco mais lento do que CRC32 e CRC64.

Integridade do .xz cabeçalhos é sempre verificado com CRC32. Não é possível
altere ou desative-o.

-0 ... -9
Selecione um nível predefinido de compressão. O padrão é -6. Se vários níveis predefinidos
são especificados, o último entra em vigor. Se uma cadeia de filtro personalizado já era
especificado, definir um nível predefinido de compactação limpa a cadeia de filtros personalizados.

As diferenças entre as predefinições são mais significativas do que com gzip(1) e
bzip2(1). As configurações de compressão selecionadas determinam os requisitos de memória de
o descompressor, portanto, usar um nível predefinido muito alto pode tornar doloroso
descompacte o arquivo em um sistema antigo com pouca RAM. Especificamente, é não a
Bom estado, com sinais de uso idéia para cegamente usar -9 por tudo como geralmente é com gzip(1) e
bzip2(1).

-0 ... -3
Estas são predefinições um tanto rápidas. -0 às vezes é mais rápido do que gzip -9 enquanto
comprimindo muito melhor. Os mais altos costumam ter velocidade comparável a
bzip2(1) com taxa de compressão comparável ou melhor, embora os resultados
dependem muito do tipo de dados que estão sendo compactados.

-4 ... -6
Compactação boa a muito boa, mantendo o uso da memória do descompressor
razoável mesmo para sistemas antigos. -6 é o padrão, que geralmente é um bom
escolha, por exemplo, para distribuir arquivos que precisam ser descomprimíveis mesmo em
sistemas com apenas 16 MiB RAM. (-5e or -6e pode valer a pena considerar também.
Vejo --extremo.)

-7 ... -9
Estes são como -6 mas com maior compressor e memória descompressora
requisitos. Eles são úteis apenas ao compactar arquivos maiores que
8 MiB, 16 MiB e 32 MiB, respectivamente.

No mesmo hardware, a velocidade de descompressão é aproximadamente um número constante de
bytes de dados compactados por segundo. Em outras palavras, quanto melhor a compressão,
mais rápida será a descompressão. Isso também significa que a quantidade de
a saída não compactada produzida por segundo pode variar muito.

A tabela a seguir resume os recursos das predefinições:

Preset DictSize CompCPU CompMem DecMem
-0 256 KiB 0 3 MiB 1 MiB
-1 1 MiB 1 9 MiB 2 MiB
-2 2 MiB 2 17 MiB 3 MiB
-3 4 MiB 3 32 MiB 5 MiB
-4 4 MiB 4 48 MiB 5 MiB
-5 8 MiB 5 94 MiB 9 MiB
-6 8 MiB 6 94 MiB 9 MiB
-7 16 MiB 6 186 MiB 17 MiB
-8 32 MiB 6 370 MiB 33 MiB
-9 64 MiB 6 674 MiB 65 MiB

Descrições das colunas:

· DictSize é o tamanho do dicionário LZMA2. É desperdício de memória usar um
dicionário maior que o tamanho do arquivo descompactado. É por isso que é
bom evitar o uso de predefinições -7 ... -9 quando não há necessidade real deles.
At -6 e menor, a quantidade de memória desperdiçada é geralmente baixa o suficiente para não
assunto.

· CompCPU é uma representação simplificada das configurações LZMA2 que afetam
velocidade de compressão. O tamanho do dicionário afeta a velocidade também, então, enquanto a CompCPU é
o mesmo para os níveis -6 ... -9, os níveis mais altos ainda tendem a ser um pouco mais lentos.
Para obter uma compressão ainda mais lenta e, portanto, possivelmente melhor, consulte --extremo.

· CompMem contém os requisitos de memória do compressor no modo single-threaded.
Pode variar ligeiramente entre xz versões. Requisitos de memória de alguns dos
os futuros modos multithread podem ser dramaticamente maiores do que os do single-
modo encadeado.

· DecMem contém os requisitos de memória do descompressor. Ou seja, a compressão
as configurações determinam os requisitos de memória do descompressor. O exato
o uso da memória do descompressor é um pouco maior do que o tamanho do dicionário LZMA2, mas
os valores na tabela foram arredondados para o próximo MiB completo.

-e, --extremo
Use uma variante mais lenta do nível de predefinição de compressão selecionado (-0 ... -9) A
espero obter uma taxa de compressão um pouco melhor, mas com azar, isso pode
também torná-lo pior. O uso da memória do descompressor não é afetado, mas o compressor
o uso de memória aumenta um pouco nos níveis predefinidos -0 ... -3.

Uma vez que existem duas predefinições com tamanhos de dicionário 4 MiB e 8 MiB, as predefinições -3e
e -5e usar configurações um pouco mais rápidas (menor CompCPU) do que -4e e -6e,
respectivamente. Dessa forma, não há dois presets idênticos.

Preset DictSize CompCPU CompMem DecMem
-0e 256 KiB 8 4 MiB 1 MiB
-1e 1 MiB 8 13 MiB 2 MiB
-2e 2 MiB 8 25 MiB 3 MiB
-3e 4 MiB 7 48 MiB 5 MiB
-4e 4 MiB 8 48 MiB 5 MiB
-5e 8 MiB 7 94 MiB 9 MiB
-6e 8 MiB 8 94 MiB 9 MiB
-7e 16 MiB 8 186 MiB 17 MiB
-8e 32 MiB 8 370 MiB 33 MiB
-9e 64 MiB 8 674 MiB 65 MiB

Por exemplo, há um total de quatro predefinições que usam um dicionário de 8 MiB, cujo
ordenar do mais rápido para o mais lento é -5, -6, -5ee -6e.

--velozes
--melhor Esses são apelidos um tanto enganosos para -0 e -9, respectivamente. Estes são
fornecido apenas para compatibilidade com versões anteriores com LZMA Utils. Evite usar estes
opções.

--block-size =tamanho
Ao compactar para o .xz formato, divida os dados de entrada em blocos de tamanho bytes.
Os blocos são compactados independentemente uns dos outros.

--memlimit-compress =limitar
Defina um limite de uso de memória para compactação. Se esta opção for especificada, vários
vezes, o último entra em vigor.

Se as configurações de compressão excederem o limitar, xz irá ajustar as configurações para baixo
para que o limite não seja mais excedido e exibir um aviso que automático
ajuste foi feito. Esses ajustes não são feitos ao comprimir com
--format = raw ou se - sem ajuste foi especificado. Nesses casos, um erro é
e exibida xz sairá com o status de saída 1.

A limitar pode ser especificado de várias maneiras:

· O limitar pode ser um valor absoluto em bytes. Usando um sufixo inteiro como Eb
pode ser útil. Exemplo: --memlimit-compress = 80 MiB

· O limitar pode ser especificado como uma porcentagem da memória física total (RAM). Esse
pode ser útil, especialmente ao definir o XZ_DEFAULTS variável de ambiente em um
script de inicialização do shell que é compartilhado entre diferentes computadores. Este
maneira que o limite é automaticamente maior em sistemas com mais memória. Exemplo:
--memlimit-compress = 70%

· O limitar pode ser redefinido para seu valor padrão, definindo-o para 0. Isto é
atualmente equivalente a definir o limitar para max (sem limite de uso de memória). Uma vez
suporte multithreading foi implementado, pode haver uma diferença entre 0
e max para o caso multithread, por isso é recomendado usar 0 em vez de max
até que os detalhes sejam decididos.

Veja também a seção Memória uso.

--memlimit-decompress =limitar
Defina um limite de uso de memória para descompressão. Isso também afeta o --Lista modo. Se
a operação não é possível sem exceder o limitar, xz irá mostrar um erro
e descompactar o arquivo falhará. Ver --memlimit-compress =limitar para possivel
maneiras de especificar o limitar.

-M limitar, --memlimit =limitar, --memory =limitar
Isso é equivalente a especificar --memlimit-compress =limitar
--memlimit-decompress =limitar.

- sem ajuste
Exibir um erro e sair se as configurações de compressão excederem o uso de memória
limite. O padrão é ajustar as configurações para baixo para que o uso de memória
limite não é excedido. O ajuste automático está sempre desabilitado ao criar raw
córregos (--format = raw).

-T tópicos, --threads =tópicos
Especifique o número de threads de trabalho a serem usados. O número real de threads pode ser
menos que tópicos se usar mais encadeamentos excederá o limite de uso de memória.

Multithread compressão e descompressão são não implementado Ainda, so isto opção
tem não efeito por !

As of escrita (2010/09/27), it não tem sido decidido if tópicos precisarão be usava by
omissão on multicore sistemas uma vez ajuda por segmentação tem sido implementado.
Comentários são bem vinda. O fator complicador é que o uso de muitos threads irá
aumentar drasticamente o uso de memória. Observe que se multithreading será o
padrão, provavelmente será feito para que os modos single-threaded e multithread
produzir a mesma saída, então a taxa de compressão não será significativamente afetada se
o encadeamento será habilitado por padrão.

personalizadas compressor filtro correntes
Uma cadeia de filtros personalizados permite especificar as configurações de compressão em detalhes, em vez de
contando com as configurações associadas aos níveis predefinidos. Quando uma cadeia de filtros personalizados é
especificado, as opções de nível de compressão predefinida (-0 ... -9 e --extremo) são silenciosos
ignorado.

Uma cadeia de filtros é comparável à tubulação na linha de comando. Ao compactar, o
entrada descompactada vai para o primeiro filtro, cuja saída vai para o próximo filtro (se
algum). A saída do último filtro é gravada no arquivo compactado. O máximo
número de filtros na cadeia é quatro, mas normalmente uma cadeia de filtros tem apenas um ou dois
filtros.

Muitos filtros têm limitações sobre onde eles podem estar na cadeia de filtros: alguns filtros podem
funcionam apenas como o último filtro na cadeia, alguns apenas como um filtro não-último e alguns funcionam
em qualquer posição da corrente. Dependendo do filtro, essa limitação é inerente
ao design do filtro ou existe para evitar problemas de segurança.

Uma cadeia de filtros personalizados é especificada usando uma ou mais opções de filtro na ordem em que
são desejados na cadeia de filtros. Ou seja, a ordem das opções de filtro é significativa!
Ao decodificar fluxos brutos (--format = raw), a cadeia de filtros é especificada na mesma ordem
como foi especificado durante a compactação.

Filtros usam filtros específicos opções como uma lista separada por vírgulas. Vírgulas extras em opções
são ignorados. Cada opção tem um valor padrão, então você precisa especificar apenas aqueles que deseja
a mudar.

--lzma1[=opções]
--lzma2[=opções]
Adicione o filtro LZMA1 ou LZMA2 à cadeia de filtros. Esses filtros podem ser usados ​​apenas como
o último filtro da cadeia.

LZMA1 é um filtro legado, que é suportado quase exclusivamente devido ao legado .lzma
formato de arquivo, que suporta apenas LZMA1. LZMA2 é uma versão atualizada do LZMA1 para
corrigir alguns problemas práticos de LZMA1. o .xz formato usa LZMA2 e não suporta
LZMA1 em tudo. A velocidade de compressão e as taxas de LZMA1 e LZMA2 são praticamente as
mesmo.

LZMA1 e LZMA2 compartilham o mesmo conjunto de opções:

preset =predefinido
Reinicializar todos os LZMA1 ou LZMA2 opções para predefinido. predefinido consistem em um inteiro,
que pode ser seguido por modificadores predefinidos de uma única letra. O inteiro pode ser
desde 0 para 9, correspondendo às opções de linha de comando -0 ... -9. O único
o modificador suportado é atualmente e, que corresponde --extremo. O padrão
predefinido is 6, a partir do qual os valores padrão para o resto do LZMA1 ou
LZMA2 opções são levados.

dict =tamanho
Dicionário (buffer de histórico) tamanho indica quantos bytes do recentemente
os dados descompactados processados ​​são mantidos na memória. O algoritmo tenta encontrar
repetir sequências de bytes (correspondências) nos dados descompactados e substituir
com referências aos dados atualmente no dicionário. O maior
o dicionário, maior é a chance de encontrar uma correspondência. Assim, aumentando
dicionário tamanho geralmente melhora a taxa de compressão, mas um dicionário maior
do que o arquivo descompactado é um desperdício de memória.

Dicionário típico tamanho é de 64 KiB a 64 MiB. O mínimo é 4 KiB.
O máximo para compactação é atualmente 1.5 GiB (1536 MiB). o
descompressor já suporta dicionários de até um byte a menos de 4 GiB,
que é o máximo para os formatos de fluxo LZMA1 e LZMA2.

Dicionário tamanho e localizador de correspondências (mf) juntos determinam o uso de memória de
o codificador LZMA1 ou LZMA2. O mesmo (ou maior) dicionário tamanho is
necessário para descompactar que foi usado durante a compactação, portanto, a memória
o uso do decodificador é determinado pelo tamanho do dicionário usado quando
compressão. o .xz cabeçalhos armazenam o dicionário tamanho tanto como 2 ^n ou 2 ^n
+ 2 ^ (n-1), então estes tamanhos são preferidos para compressão. De outros
tamanhos será arredondado quando armazenado no .xz cabeçalhos.

lc =lc Especifique o número de bits de contexto literal. O mínimo é 0 e o
o máximo é 4; o padrão é 3. Além disso, a soma de lc e lp não deve
exceder 4.

Todos os bytes que não podem ser codificados como correspondências são codificados como literais. Este
ou seja, literais são simplesmente bytes de 8 bits que são codificados um de cada vez.

A codificação literal pressupõe que a maior lc pedaços de
o byte não compactado anterior se correlaciona com o próximo byte. Por exemplo, em típico
Texto em inglês, uma letra maiúscula geralmente é seguida por uma letra minúscula,
e uma letra minúscula geralmente é seguida por outra letra minúscula.
No conjunto de caracteres US-ASCII, os três bits mais altos são 010 para maiúsculas
letras e 011 para letras minúsculas. Quando lc é pelo menos 3, o literal
a codificação pode tirar vantagem dessa propriedade nos dados descompactados.

O valor padrão (3) geralmente é bom. Se você quiser compressão máxima,
teste lc = 4. Às vezes ajuda um pouco, e às vezes torna a compressão
pior. Se piorar, teste, por exemplo lc = 2 demasiado.

lp =lp Especifique o número de bits de posição literal. O mínimo é 0 e o
o máximo é 4; o padrão é 0.

Lp afeta que tipo de alinhamento nos dados não compactados é assumido quando
literais de codificação. Ver pb abaixo para obter mais informações sobre o alinhamento.

pb =pb Especifique o número de bits de posição. O mínimo é 0 e o máximo é 4;
o padrão é 2.

Pb afeta que tipo de alinhamento nos dados não compactados é assumido em
em geral. O padrão significa alinhamento de quatro bytes (2 ^pb= 2 ^ 2 = 4), que costuma ser
uma boa escolha quando não há adivinhação melhor.

Quando o alinhamento é conhecido, a configuração pb consequentemente, pode reduzir o tamanho do arquivo
um pouco. Por exemplo, com arquivos de texto com alinhamento de um byte (US-ASCII,
ISO-8859- *, UTF-8), configuração pb = 0 pode melhorar ligeiramente a compressão. Para
Texto UTF-16, pb = 1 é uma boa escolha. Se o alinhamento for um número ímpar, como
3 bytes, pb = 0 pode ser a melhor escolha.

Mesmo que o alinhamento assumido possa ser ajustado com pb e lp, LZMA1 e
LZMA2 ainda favorece ligeiramente o alinhamento de 16 bytes. Pode valer a pena levar em
conta ao projetar formatos de arquivo que provavelmente serão compactados com frequência
com LZMA1 ou LZMA2.

mf =mf O localizador de correspondências tem um grande efeito na velocidade do codificador, no uso de memória e
taxa de compressão. Normalmente, os localizadores de correspondência da cadeia de hash são mais rápidos do que os binários
Localizadores de fósforos de árvore. O padrão depende do predefinido: 0 usos hc3, 1-3 uso
hc4, e o resto usa bt4.

Os seguintes localizadores de correspondência são suportados. As fórmulas de uso de memória abaixo
são aproximações grosseiras, que estão mais próximas da realidade quando ditar é uma
potência de dois.

hc3 Cadeia de hash com hashing de 2 e 3 bytes
Valor mínimo para agradável 3
Uso de memória:
ditar * 7.5 (se ditar <= 16 MiB);
ditar * 5.5 + 64 MiB (se ditar > 16 MiB)

hc4 Cadeia de hash com hashing de 2, 3 e 4 bytes
Valor mínimo para agradável 4
Uso de memória:
ditar * 7.5 (se ditar <= 32 MiB);
ditar * 6.5 (se ditar > 32 MiB)

bt2 Árvore binária com hashing de 2 bytes
Valor mínimo para agradável 2
Uso de memória: ditar * 9.5

bt3 Árvore binária com hashing de 2 e 3 bytes
Valor mínimo para agradável 3
Uso de memória:
ditar * 11.5 (se ditar <= 16 MiB);
ditar * 9.5 + 64 MiB (se ditar > 16 MiB)

bt4 Árvore binária com hashing de 2, 3 e 4 bytes
Valor mínimo para agradável 4
Uso de memória:
ditar * 11.5 (se ditar <= 32 MiB);
ditar * 10.5 (se ditar > 32 MiB)

modo =modo
Compressão modo especifica o método para analisar os dados produzidos pelo
localizador de fósforos. Suportado modos são rápido e normal. O padrão é rápido por
presets 0-3 e normal por presets 4-9.

Geralmente rápido é usado com localizadores de correspondência Hash Chain e normal com binário
Localizadores de fósforos de árvore. Isso também é o que presets fazer.

legal =agradável
Especifique o que é considerado um bom comprimento para uma correspondência. Uma vez que uma partida de
finalmente agradável bytes for encontrado, o algoritmo para de procurar, possivelmente
melhores correspondências.

agradável pode ter 2-273 bytes. Valores mais altos tendem a dar melhor compressão
proporção em detrimento da velocidade. O padrão depende do predefinido.

profundidade =profundidade
Especifique a profundidade máxima de pesquisa no localizador de correspondências. O padrão é o
valor especial de 0, o que faz o compressor determinar um razoável profundidade
desde mf e agradável.

Razoável profundidade para Cadeias de Hash é 4-100 e 16-1000 para Árvores Binárias.
Usando valores muito altos para profundidade pode tornar o codificador extremamente lento com
alguns arquivos. Evite definir o profundidade mais de 1000, a menos que você esteja preparado para
interrompa a compressão caso esteja demorando muito.

Ao decodificar fluxos brutos (--format = raw), LZMA2 precisa apenas do dicionário tamanho.
LZMA1 também precisa lc, lpe pb.

--x86[=opções]
--powerpc[=opções]
--ia64[=opções]
--braço[=opções]
--polegar[=opções]
--sparc[=opções]
Adicione um filtro branch / call / jump (BCJ) à cadeia de filtros. Esses filtros podem ser usados
apenas como um filtro não-último na cadeia de filtros.

Um filtro BCJ converte endereços relativos no código de máquina em seus absolutos
homólogos. Isso não muda o tamanho dos dados, mas aumenta
redundância, o que pode ajudar LZMA2 a produzir 0-15% menor .xz Arquivo. O BCJ
filtros são sempre reversíveis, portanto, usar um filtro BCJ para o tipo errado de dados não
causar qualquer perda de dados, embora possa tornar a taxa de compressão um pouco pior.

Não há problema em aplicar um filtro BCJ a um executável inteiro; não há necessidade de aplicá-lo
apenas na seção executável. Aplicando um filtro BCJ em um arquivo que contém
arquivos executáveis ​​e não executáveis ​​podem ou não dar bons resultados, por isso
geralmente não é bom aplicar cegamente um filtro BCJ ao compactar pacotes binários
para distribuição.

Esses filtros BCJ são muito rápidos e usam uma quantidade insignificante de memória. Se um BCJ
filtro melhora a taxa de compressão de um arquivo, pode melhorar a velocidade de descompressão em
o mesmo tempo. Isso ocorre porque, no mesmo hardware, a velocidade de descompressão do
LZMA2 é aproximadamente um número fixo de bytes de dados compactados por segundo.

Esses filtros BCJ têm problemas conhecidos relacionados à taxa de compressão:

· Alguns tipos de arquivos que contêm código executável (por exemplo, arquivos-objeto, estáticos
bibliotecas e módulos do kernel do Linux) têm os endereços nas instruções
preenchido com valores de preenchimento. Esses filtros BCJ ainda farão o endereço
conversão, o que tornará a compactação pior com esses arquivos.

· A aplicação de um filtro BCJ em um arquivo contendo vários executáveis ​​semelhantes pode
tornar a taxa de compressão pior do que não usar um filtro BCJ. Isto é porque
o filtro BCJ não detecta os limites dos arquivos executáveis, e
não zera o contador de conversão de endereço para cada executável.

Ambos os problemas acima serão corrigidos no futuro em um novo filtro. O velho
Os filtros BCJ ainda serão úteis em sistemas embarcados, porque o decodificador do
o novo filtro será maior e usará mais memória.

Diferentes conjuntos de instruções têm diferentes alinhamentos:

Notas de alinhamento do filtro
x86 1 x32 de 64 bits ou 86 bits
PowerPC 4 Big endian apenas
ARM 4 Little endian apenas
ARM-Thumb 2 Little endian apenas
IA-64 16 Big ou little endian
SPARC 4 Big ou Little Endian

Uma vez que os dados filtrados por BCJ são geralmente compactados com LZMA2, a taxa de compactação
pode ser melhorado ligeiramente se as opções LZMA2 forem definidas para corresponder ao alinhamento do
filtro BCJ selecionado. Por exemplo, com o filtro IA-64, é bom definir pb = 4
com LZMA2 (2 ^ 4 = 16). O filtro x86 é uma exceção; geralmente é bom seguir
Alinhamento de quatro bytes padrão do LZMA2 ao compactar executáveis ​​x86.

Todos os filtros BCJ suportam o mesmo opções:

start =compensar
Especifique o início compensar que é usado ao converter entre relativo e
endereços absolutos. o compensar deve ser um múltiplo do alinhamento do
filtro (veja a tabela acima). O padrão é zero. Na prática, o
o padrão é bom; especificando um costume compensar quase nunca é útil.

--delta[=opções]
Adicione o filtro Delta à cadeia de filtros. O filtro Delta só pode ser usado como um
filtro não último na cadeia de filtros.

Atualmente, apenas o cálculo delta de byte simples é suportado. Pode ser útil
ao compactar, por exemplo, imagens bitmap não compactadas ou áudio PCM não compactado.
No entanto, algoritmos de propósito especial podem fornecer resultados significativamente melhores do que
Delta + LZMA2. Isso é verdade especialmente com áudio, que comprime mais rápido e
melhor, por exemplo, com flac(1).

Suportado opções:

dist =distância
Especifique o distância do cálculo delta em bytes. distância devemos ser
1-256. O padrão é 1.

Por exemplo, com dist = 2 e entrada de oito bytes A1 B1 A2 B3 A3 B5 A4 B7, o
a saída será A1 B1 01 02 01 02 01 02.

Outros opções
-q, --quieto
Suprima avisos e notificações. Especifique isso duas vezes para suprimir erros também. Esse
opção não tem efeito no status de saída. Ou seja, mesmo que um aviso fosse
suprimido, o status de saída para indicar que um aviso ainda é usado.

-v, --verbose
Seja prolixo. Se o erro padrão estiver conectado a um terminal, xz exibirá um
indicador de progresso. Especificando --verbose duas vezes fornecerá uma saída ainda mais detalhada.

O indicador de progresso mostra as seguintes informações:

· A porcentagem de conclusão é mostrada se o tamanho do arquivo de entrada for conhecido. Isso é,
a porcentagem não pode ser mostrada em tubos.

· Quantidade de dados compactados produzidos (compactando) ou consumidos (descompactando).

· Quantidade de dados descompactados consumidos (compactando) ou produzidos (descompactando).

· Taxa de compressão, que é calculada dividindo a quantidade de dados compactados
processados ​​até agora pela quantidade de dados descompactados processados ​​até agora.

· Velocidade de compressão ou descompressão. Isso é medido como a quantidade de
dados descompactados consumidos (compactação) ou produzidos (descompactação) por segundo.
É mostrado após alguns segundos desde xz começou a processar o
arquivo.

· Tempo decorrido no formato M: SS ou H: MM: SS.

· O tempo restante estimado é mostrado apenas quando o tamanho do arquivo de entrada é conhecido
e alguns segundos já se passaram desde xz começou a processar o
Arquivo. A hora é mostrada em um formato menos preciso que nunca tem dois pontos,
por exemplo, 2 min 30 s.

Quando o erro padrão não é um terminal, --verbose vai fazer xz imprima o nome do arquivo,
tamanho comprimido, tamanho não comprimido, taxa de compressão e possivelmente também a velocidade
e o tempo decorrido em uma única linha até o erro padrão após a compactação ou
descompactando o arquivo. A velocidade e o tempo decorrido são incluídos apenas quando o
operação demorou pelo menos alguns segundos. Se a operação não terminar, por exemplo, devido a
interrupção do usuário, também a porcentagem de conclusão é impressa se o tamanho do
arquivo de entrada é conhecido.

-Q, --não avisar
Não defina o status de saída para 2, mesmo se uma condição que vale a pena um aviso for detectada.
Esta opção não afeta o nível de detalhamento, portanto, ambos --quieto e --não avisar
deve ser usado para não exibir avisos e para não alterar o status de saída.

--robô
Imprima mensagens em um formato analisável por máquina. O objetivo é facilitar a escrita
frontends que desejam usar xz em vez de liblzma, que pode ser o caso com
vários scripts. A saída com esta opção habilitada deve ser estável em
xz lançamentos. Veja a seção ROBÔ MODA para obter detalhes.

--info-memória
Exibir, em formato legível por humanos, a quantidade de memória física (RAM) xz acha que o
sistema tem e os limites de uso de memória para compressão e descompressão e saída
com sucesso.

-h, --Socorro
Exibe uma mensagem de ajuda descrevendo as opções mais comumente usadas e sai
com sucesso.

-H, --longa ajuda
Exibir uma mensagem de ajuda descrevendo todos os recursos do xz, e saia com sucesso

-V, --versão
Mostra o número da versão de xz e liblzma em formato legível por humanos. Para obter
saída analisável por máquina, especifique --robô antes --versão.

ROBÔ MODA


O modo de robô é ativado com o --robô opção. Faz a saída de xz mais facil de
analisar por outros programas. Atualmente --robô é compatível apenas com --versão,
--info-memóriae --Lista. Será compatível com compressão e descompressão normais
no futuro.

Versão
xz --robô --versão irá imprimir o número da versão de xz e liblzma no seguinte
formato:

XZ_VERSION =XYYYZZZS
LIBLZMA_VERSION =XYYYZZZS

X Versão principal.

AAAA Versão secundária. Mesmo os números são estáveis. Os números ímpares são versões alfa ou beta.

ZZZ Nível de patch para versões estáveis ​​ou apenas um contador para versões de desenvolvimento.

S Estabilidade. 0 é alfa, 1 é beta e 2 é estável. S deve ser sempre 2 quando AAAA
é mesmo.

XYYYZZZS são iguais em ambas as linhas se xz e liblzma são da mesma versão do XZ Utils.

Exemplos: 4.999.9beta é 49990091 e 5.0.0 é 50000002.

Memória limitar informação
xz --robô --info-memória imprime uma única linha com três colunas separadas por tabulação:

1. Quantidade total de memória física (RAM) em bytes

2. Limite de uso de memória para compactação em bytes. Um valor especial de zero indica o
configuração padrão, que para o modo de thread único é o mesmo que sem limite.

3. Limite de uso de memória para descompressão em bytes. Um valor especial de zero indica o
configuração padrão, que para o modo de thread único é o mesmo que sem limite.

No futuro, a produção de xz --robô --info-memória pode ter mais colunas, mas nunca
mais do que uma única linha.

Lista modo
xz --robô --Lista usa saída separada por tabulação. A primeira coluna de cada linha tem uma string
que indica o tipo de informação encontrada nessa linha:

nome Esta é sempre a primeira linha ao começar a listar um arquivo. A segunda coluna em
a linha é o nome do arquivo.

filete Esta linha contém informações gerais sobre o .xz Arquivo. Esta linha é sempre
impresso após o nome linha.

transmitir canais Este tipo de linha é usado apenas quando --verbose foi especificado. São tantos transmitir canais
linhas, pois há fluxos no .xz arquivo.

quadra Este tipo de linha é usado apenas quando --verbose foi especificado. São tantos quadra
linhas, pois há blocos no .xz Arquivo. o quadra linhas são mostradas depois de todos os
transmitir canais linhas; diferentes tipos de linha não são intercalados.

resumo
Este tipo de linha é usado apenas quando --verbose foi especificado duas vezes. Esta linha é
afinal impresso quadra linhas. Como o filete linha, o resumo linha contém
informações gerais sobre o .xz arquivo.

totais Esta linha é sempre a última linha da saída da lista. Mostra o total
contagens e tamanhos.

As colunas do filete linhas:
2. Número de streams no arquivo
3. Número total de blocos no (s) fluxo (s)
4. Tamanho compactado do arquivo
5. Tamanho não compactado do arquivo
6. Taxa de compressão, por exemplo 0.123. Se a proporção for superior a 9.999, três traços
(---) são exibidos em vez da proporção.
7. Lista separada por vírgulas de nomes de verificação de integridade. As seguintes strings são usadas
para os tipos de cheques conhecidos: nenhum, CRC32, CRC64e SHA-256. Para verificação desconhecida
tipos, Desconhecido-N é usado, onde N é o ID do cheque como um número decimal (um ou
dois dígitos).
8. Tamanho total do preenchimento do fluxo no arquivo

As colunas do transmitir canais linhas:
2. Número da transmissão (a primeira transmissão é 1)
3. Número de blocos no fluxo
4. Deslocamento inicial comprimido
5. Deslocamento inicial não comprimido
6. Tamanho compactado (não inclui preenchimento de fluxo)
7. Tamanho não comprimido
8. Taxa de compressão
9. Nome da verificação de integridade
10. Tamanho do preenchimento do fluxo

As colunas do quadra linhas:
2. Número do fluxo que contém este bloco
3. Número do bloco em relação ao início do fluxo (o primeiro bloco é 1)
4. Número do bloco relativo ao início do arquivo
5. Deslocamento inicial compactado em relação ao início do arquivo
6. Deslocamento inicial não compactado em relação ao início do arquivo
7. Tamanho total compactado do bloco (inclui cabeçalhos)
8. Tamanho não comprimido
9. Taxa de compressão
10. Nome da verificação de integridade

If --verbose foi especificado duas vezes, colunas adicionais são incluídas no quadra Linhas.
Eles não são exibidos com um único --verbose, porque obter essas informações requer
muitas buscas e, portanto, podem ser lentas:
11. Valor da verificação de integridade em hexadecimal
12. Tamanho do cabeçalho do bloco
13. Sinalizadores de bloqueio: c indica que o tamanho compactado está presente, e u indica que
tamanho não compactado está presente. Se o sinalizador não estiver definido, um traço (-) é mostrado
em vez disso, para manter o comprimento da corda fixo. Novos sinalizadores podem ser adicionados ao final de
a string no futuro.
14. Tamanho dos dados compactados reais no bloco (isso exclui o bloco
cabeçalho, preenchimento de bloco e campos de verificação)
15. Quantidade de memória (em bytes) necessária para descomprimir este bloco com este xz
versão
16. Cadeia de filtro. Observe que a maioria das opções usadas no momento da compressão não pode ser
conhecido, porque apenas as opções que são necessárias para a descompressão são armazenadas em
do .xz cabeçalhos.

As colunas do resumo linhas:
2. Quantidade de memória (em bytes) necessária para descompactar este arquivo com este xz
versão
3. sim or não indicando se todos os cabeçalhos de bloco têm tamanho compactado e
tamanho não compactado armazenado neles
Como xz 5.1.2 alfa:
4. Mínimo xz versão necessária para descompactar o arquivo

As colunas do totais linha:
2. Número de streams
3. Número de blocos
4. Tamanho comprimido
5. Tamanho não comprimido
6. Taxa de compressão média
7. Lista separada por vírgulas de nomes de verificação de integridade que estavam presentes nos arquivos
8. Tamanho de preenchimento do fluxo
9. Número de arquivos. Isto serve para manter a ordem das colunas anteriores,
o mesmo que em filete Linhas.

If --verbose foi especificado duas vezes, colunas adicionais são incluídas no totais linha:
10. Quantidade máxima de memória (em bytes) necessária para descompactar os arquivos com este
xz versão
11. sim or não indicando se todos os cabeçalhos de bloco têm tamanho compactado e
tamanho não compactado armazenado neles
Como xz 5.1.2 alfa:
12. Mínimo xz versão necessária para descompactar o arquivo

Versões futuras podem adicionar novos tipos de linha e novas colunas podem ser adicionadas à linha existente
tipos, mas as colunas existentes não serão alteradas.

SAIR STATUS


0 Tudo está bem.

1 Ocorreu um erro.

2 Algo que merece um aviso ocorreu, mas nenhum erro real ocorreu.

Avisos (não avisos ou erros) impressos no erro padrão não afetam o status de saída.

MEIO AMBIENTE


xz analisa listas de opções separadas por espaço das variáveis ​​de ambiente XZ_DEFAULTS e
XZ_OPT, nesta ordem, antes de analisar as opções da linha de comando. Observe que apenas
as opções são analisadas a partir das variáveis ​​de ambiente; todas as não opções são silenciosamente ignoradas.
A análise é feita com getopt_long(3) que também é usado para os argumentos da linha de comando.

XZ_DEFAULTS
Opções padrão específicas do usuário ou do sistema. Normalmente, isso é definido em um shell
script de inicialização para habilitar xzo limitador de uso de memória por padrão. Excluindo
scripts de inicialização de shell e casos especiais semelhantes, os scripts nunca devem ser definidos ou
não definido XZ_DEFAULTS.

XZ_OPT Isto é para passar opções para xz quando não é possível definir as opções
diretamente no xz linha de comando. Este é o caso, por exemplo, quando xz é executado por um script
ou ferramenta, por exemplo, GNU alcatrão(1)

XZ_OPT = -2v tar caf foo.tar.xz foo

Scripts podem usar XZ_OPT por exemplo, para definir opções de compactação padrão específicas do script. Isto
ainda é recomendado para permitir que os usuários substituam XZ_OPT se isso for razoável, por exemplo
in sh(1) scripts que podem ser usados ​​como este:

XZ_OPT = $ {XZ_OPT - "- 7e"}
exportar XZ_OPT

LZMA ÚTIL COMPATIBILIDADE


A sintaxe da linha de comando de xz é praticamente um superconjunto de lzma, unlzmae lzcat as
encontrado em LZMA Utils 4.32.x. Na maioria dos casos, é possível substituir LZMA Utils por XZ
Utils sem quebrar os scripts existentes. No entanto, existem algumas incompatibilidades, que
às vezes pode causar problemas.

Compressão predefinido níveis
A numeração das predefinições de nível de compressão não é idêntica em xz e LZMA Utils. o
a diferença mais importante é como os tamanhos do dicionário são mapeados para diferentes predefinições.
O tamanho do dicionário é aproximadamente igual ao uso da memória do descompressor.

Nível xz LZMA Utils
-0 256 KiB N / A
-1 1 MiB 64 KiB
-2 2 MiB 1 MiB
-3 4 MiB 512 KiB
-4 4 MiB 1 MiB
-5 8 MiB 2 MiB
-6 8 MiB 4 MiB
-7 16 MiB 8 MiB
-8 32 MiB 16 MiB
-9 64 MiB 32 MiB

As diferenças de tamanho do dicionário afetam o uso de memória do compressor também, mas existem alguns
outras diferenças entre LZMA Utils e XZ Utils, que tornam a diferença ainda maior:

Nível xz LZMA Utils 4.32.x
-0 3 MiB N / A
-1 9 MiB 2 MiB
-2 17 MiB 12 MiB
-3 32 MiB 12 MiB
-4 48 MiB 16 MiB
-5 94 MiB 26 MiB
-6 94 MiB 45 MiB
-7 186 MiB 83 MiB
-8 370 MiB 159 MiB
-9 674 MiB 311 MiB

O nível predefinido padrão no LZMA Utils é -7 enquanto no XZ Utils é -6, então ambos usam um 8
Dicionário MiB por padrão.

fluídas vs não transmitido .lzma arquivos
O tamanho descompactado do arquivo pode ser armazenado no .lzma cabeçalho. LZMA Utils faz isso
ao compactar arquivos regulares. A alternativa é marcar que o tamanho não compactado é
desconhecido e usar o marcador de fim de carga para indicar onde o descompressor deve parar.
LZMA Utils usa este método quando o tamanho descompactado não é conhecido, que é o caso de
exemplo em tubos.

xz suporta descompactação .lzma arquivos com ou sem marcador de fim de carga útil, mas todos .lzma
arquivos criados por xz usará o marcador de fim de carga útil e terá o tamanho descompactado marcado como
desconhecido no .lzma cabeçalho. Isso pode ser um problema em algumas situações incomuns. Para
exemplo, um .lzma descompressor em um dispositivo embutido pode funcionar apenas com arquivos que têm
tamanho não compactado conhecido. Se você encontrou este problema, você precisa usar LZMA Utils ou LZMA SDK
para criar .lzma arquivos com tamanho descompactado conhecido.

Não suportado .lzma arquivos
A .lzma formato permite lc valores até 8, e lp valores até 4. LZMA Utils podem
descompacte arquivos com qualquer lc e lp, mas sempre cria arquivos com lc = 3 e lp = 0.
Criação de arquivos com outros lc e lp é possível com xz e com LZMA SDK.

A implementação do filtro LZMA1 em liblzma requer que a soma de lc e lp devo
não exceda 4. Assim, .lzma arquivos, que excedem esta limitação, não podem ser descompactados
com xz.

LZMA Utils cria apenas .lzma arquivos que têm um tamanho de dicionário de 2 ^n (uma potência de 2), mas
aceita arquivos com qualquer tamanho de dicionário. liblzma aceita apenas .lzma arquivos que têm um
tamanho do dicionário de 2 ^n ou 2 ^n + 2 ^ (n-1). Isso é para diminuir falsos positivos quando
detecção .lzma arquivos.

Essas limitações não devem ser um problema na prática, uma vez que praticamente todos .lzma arquivos
foram compactados com configurações que o liblzma aceitará.

Trailing lixo
Ao descompactar, LZMA Utils ignora silenciosamente tudo após o primeiro .lzma stream.
Na maioria das situações, isso é um bug. Isso também significa que LZMA Utils não suporta
descompactando concatenado .lzma arquivos.

Se houver dados restantes após o primeiro .lzma corrente, xz considera o arquivo corrompido
a menos que - single-stream foi usado. Isso pode quebrar scripts obscuros que assumiram que
o lixo residual é ignorado.

NOTAS


Comprimido saída pode variar
A saída compactada exata produzida a partir do mesmo arquivo de entrada descompactado pode variar
entre as versões do XZ Utils, mesmo se as opções de compactação forem idênticas. Isso ocorre porque o
o codificador pode ser aprimorado (compressão mais rápida ou melhor) sem afetar o formato do arquivo.
A saída pode variar até mesmo entre diferentes compilações da mesma versão do XZ Utils, se
diferentes opções de construção são usadas.

Acima significa que implementar --rsyncable para criar rsyncable .xz os arquivos não vão
acontecer sem congelar uma parte da implementação do codificador, que pode então ser usada
com --rsyncable.

Incorporado .xz descompressores
Incorporado .xz implementações de descompressor como XZ Embedded não suportam necessariamente arquivos
criado com integridade verificar tipos diferentes de Nenhum e crc32. Uma vez que o padrão é
--check = crc64, você deve usar --check = nenhum or --check = crc32 ao criar arquivos para embutidos
sistemas.

Sistemas embarcados externos, todos .xz descompressores de formato suportam todos os verificar tipos, ou em
menos são capazes de descompactar o arquivo sem verificar a verificação de integridade se o
particular verificar não é suportado.

O XZ Embedded oferece suporte a filtros BCJ, mas apenas com o deslocamento de início padrão.

EXEMPLOS


fundamentos básicos
Compacte o arquivo Foo para dentro foo.xz usando o nível de compressão padrão (-6) e remova Foo
se a compressão for bem-sucedida:

xz foo

Descomprimir bar.xz para dentro Barra e não remova bar.xz mesmo se a descompressão for bem-sucedida:

xz -dk bar.xz

Create baz.tar.xz com a predefinição -4e (-4 --extremo), que é mais lento do que, por exemplo, o
omissão -6, mas precisa de menos memória para compressão e descompressão (48 MiB e 5 MiB,
respectivamente):

tar cf - baz | xz -4e> baz.tar.xz

Uma mistura de arquivos compactados e descompactados pode ser descompactada para a saída padrão com um
comando único:

xz -dcf a.txt b.txt.xz c.txt d.txt.lzma> abcd.txt

Paralelo compressão of muitos arquivos
No GNU e * BSD, find(1) e xargs(1) pode ser usado para paralelizar a compressão de muitos
arquivos:

achar . -tipo f \! -name '* .xz' -print0 \
| xargs -0r -P4 -n16 xz -T1

A -P opção para xargs(1) define o número de paralelos xz processos. O melhor valor para
do -n a opção depende de quantos arquivos devem ser compactados. Se houver apenas um
alguns arquivos, o valor provavelmente deve ser 1; com dezenas de milhares de arquivos, 100 ou
ainda mais pode ser apropriado para reduzir o número de xz processos que xargs(1) vai
eventualmente criar.

A opção -T1 por xz existe para forçá-lo para o modo de thread único, porque xargs(1) é
usado para controlar a quantidade de paralelização.

Robô modo
Calcule quantos bytes foram salvos no total após compactar vários arquivos:

xz --robot --list * .xz | awk '/ ^ totals / {imprimir $ 5- $ 4}'

Um script pode querer saber se está usando algo novo o suficiente xz. Os seguintes sh(1) roteiro
verifica se o número da versão do xz ferramenta é pelo menos 5.0.0. Este método é
compatível com versões beta antigas, que não suportavam o --robô opção:

E se ! eval "$ (xz --robot --version 2> / dev / null)" ||
["$ XZ_VERSION" -lt 50000002]; então
echo "Seu xz é muito antigo."
fi
remover XZ_VERSION LIBLZMA_VERSION

Defina um limite de uso de memória para descompressão usando XZ_OPT, mas se um limite já foi
definir, não aumente:

NEWLIM = $ ((123 << 20)) # 123 MiB
OLDLIM = $ (xz --robot --info-memory | cut -f3)
if [$ OLDLIM -eq 0 -o $ OLDLIM -gt $ NEWLIM]; então
XZ_OPT = "$ XZ_OPT --memlimit-decompress = $ NEWLIM"
exportar XZ_OPT
fi

personalizadas compressor filtro correntes
O uso mais simples para cadeias de filtro personalizadas é personalizar uma predefinição LZMA2. Isso pode ser
útil, porque as predefinições cobrem apenas um subconjunto das combinações potencialmente úteis de
configurações de compressão.

As colunas CompCPU das tabelas a partir das descrições das opções -0 ... -9 e
--extremo são úteis ao personalizar predefinições LZMA2. Aqui estão as partes relevantes
coletados dessas duas tabelas:

CompCPU predefinido
-0 0
-1 1
-2 2
-3 3
-4 4
-5 5
-6 6
-5e 7
-6e 8

Se você sabe que um arquivo requer um dicionário um tanto grande (por exemplo, 32 MiB) para compactar bem,
mas você quer compactá-lo mais rápido do que xz -8 faria, uma predefinição com um valor de CompCPU baixo
(por exemplo, 1) pode ser modificado para usar um dicionário maior:

xz --lzma2 = preset = 1, dict = 32 MiB foo.tar

Com certos arquivos, o comando acima pode ser mais rápido do que xz -6 enquanto comprime
significativamente melhor. No entanto, deve ser enfatizado que apenas alguns arquivos se beneficiam de um
grande dicionário, mantendo o valor CompCPU baixo. A situação mais óbvia, onde um
grande dicionário pode ajudar muito, é um arquivo contendo arquivos muito semelhantes de pelo menos um
alguns megabytes cada. O tamanho do dicionário deve ser significativamente maior do que qualquer
arquivo individual para permitir que o LZMA2 aproveite ao máximo as semelhanças entre
arquivos consecutivos.

Se o uso de memória de compactador e descompressor muito alto estiver bom, e o arquivo sendo
compactado tem pelo menos várias centenas de megabytes, pode ser útil usar um ainda maior
dicionário do que o 64 MiB que xz -9 usaria:

xz -vv --lzma2 = dict = 192MiB big_foo.tar

utilização -vv (--verbose --verbose) como no exemplo acima pode ser útil para ver a memória
requisitos do compressor e descompressor. Lembre-se de que usar um dicionário maior
do que o tamanho do arquivo descompactado é um desperdício de memória, então o comando acima não é
útil para arquivos pequenos.

Às vezes, o tempo de compressão não importa, mas o uso da memória do descompressor deve ser
mantido baixo, por exemplo, para possibilitar a descompactação do arquivo em um sistema embarcado. o
o seguinte comando usa -6e (-6 --extremo) como base e define o dicionário para apenas
64 KiB. O arquivo resultante pode ser descompactado com XZ Embedded (é por isso que há
--check = crc32) usando cerca de 100 KiB de memória.

xz --check = crc32 --lzma2 = preset = 6e, dict = 64 KiB foo

Se você quiser espremer tantos bytes quanto possível, ajustando o número de literais
bits de contexto (lc) e número de bits de posição (pb) às vezes pode ajudar. Ajustando o
número de bits de posição literal (lp) também pode ajudar, mas geralmente lc e pb são mais
importante. Por exemplo, um arquivo de código-fonte contém principalmente texto US-ASCII, algo como
o seguinte pode resultar em um arquivo ligeiramente (como 0.1%) menor do que xz -6e (tente também sem
lc = 4):

xz --lzma2 = preset = 6e, pb = 0, lc = 4 source_code.tar

Usar outro filtro junto com LZMA2 pode melhorar a compactação com certos tipos de arquivo.
Por exemplo, para compactar uma biblioteca compartilhada x86-32 ou x86-64 usando o filtro x86 BCJ:

xz --x86 --lzma2 libfoo.so

Observe que a ordem das opções de filtro é significativa. Se --x86 é especificado após
--lzma2, xz vai dar um erro, porque não pode haver nenhum filtro após LZMA2, e também
porque o filtro x86 BCJ não pode ser usado como o último filtro na cadeia.

O filtro Delta junto com LZMA2 pode fornecer bons resultados com imagens bitmap. Deveria
geralmente supera o PNG, que tem alguns filtros mais avançados do que o delta simples, mas usa Deflate
para a compressão real.

A imagem deve ser salva em formato não compactado, por exemplo, TIFF não compactado. A distancia
O parâmetro do filtro Delta é definido para corresponder ao número de bytes por pixel na imagem.
Por exemplo, necessidades de bitmap RGB de 24 bits dist = 3e também é bom passar pb = 0 para LZMA2 para
acomodar o alinhamento de três bytes:

xz --delta = dist = 3 --lzma2 = pb = 0 foo.tiff

Se várias imagens foram colocadas em um único arquivo (por exemplo .alcatrão), o filtro Delta irá
trabalhe nisso também, desde que todas as imagens tenham o mesmo número de bytes por pixel.

Use xz online usando serviços onworks.net


Ad


Ad