Existe um método de compactação que suporte compactação sólida e também adiciona dados ao arquivo compactado?

3

Eu tenho um grande arquivo compactado .tar.xz contendo arquivos de log. A taxa de compactação é muito boa - mas demora muito para compactar, e se eu quiser adicionar arquivos de log adicionais a ela, preciso extraí-la, adicionar o novo arquivo e recompactá-lo - o que demora ainda mais e consome muito espaço em disco.

Existe um método de compactação / compactação que me permite adicionar eficientemente um novo arquivo a um arquivo existente e, ao mesmo tempo, reter os benefícios da compactação sólida? (isto é, não compactar arquivos individualmente, que é o que o .zip faz).

    
por jl6 20.01.2016 / 18:17

1 resposta

4

Não é possível atualizar ou excluir arquivos de uma compactação sólida. Em uma compactação sólida, a compactação dos dados subsequentes depende da análise estatística de dados anteriores (que geralmente traz melhor ajuste fino da análise de entrada), portanto, a remoção de arquivos requer compactação e compactação de todo o arquivo contendo os arquivos.

Também é importante entender que a compactação sólida geralmente é usada onde você deseja salvar disco / largura de banda, mas não se importa com o tempo extra necessário para compactar ou descompactar e perder a flexibilidade de atualização ou edição. existem outras ferramentas que fornecem a capacidade de compactação / descompactação rápida, incluindo a atualização do arquivo existente, mas a taxa de compactação não é igual à compactação sólida.

A compactação sólida a que você está se referindo "tar.xz" é uma compactação sólida "emulada" "

In computing, solid compression refers to a method for data compression of multiple files, wherein all the uncompressed files are concatenated and treated as a single data block. Such an archive is called a solid archive. It is used natively in the 7z [1] and RAR [2] formats, as well as indirectly in tar-based formats such as .tar.gz and .tar.bz2. By contrast, the ZIP format is not solid because it stores separate compressed files (though solid compression can be emulated for small archives by combining the files into an uncompressed zip archive and then compressing the zip archive inside a second compressed zip file).

Deixe-me começar explicando como o método atualmente usado de tar.xz funciona.

tar

In computing, tar is a computer software utility for collecting many files into one archive file, often referred to as a tarball

Portanto, o Tar é basicamente um arquivo.

xz

xz is a lossless data compression program and file format which incorporates the LZMA/LZMA2 compression algorithms. it has a high compression ratio, however slow compression and decompression times.

Por isso, quando você combina os dois, você primeiro arquiva (tar) vários arquivos e, em seguida, compacta (xz) esse único arquivo.

Agora, na pergunta sobre como adicionar novos conteúdos / atualizar o arquivo compactado existente.

Se estiver usando tar.xz, você terá que descompactar o tar.xz, o que deixará você com um arquivo tar e poderá usar o seguinte para anexar o arquivo.

tar --append --file=archive.tar file_or_dir_to_add

e depois comprimi-lo novamente.

xz archive.tar

Ou, como alternativa, você pode usar ZIP.

zip -g archive.zip folder/file

ZIP is an archive file format that supports lossless data compression. A .ZIP file may contain one or more files or directories that may have been compressed. The .ZIP file format permits a number of compression algorithms, though DEFLATE is the most common.

    
por 20.01.2016 / 18:28