it-swarm-pt.com

Existe um arquivador de arquivos paralelo (como tar)?

Existe algo lá para arquivamento paralelo de arquivos?

O Tar é ótimo, mas eu não uso arquivos de fita, e é mais importante para mim que o arquivamento ocorra rapidamente (com compressão como bzip2), pois eu tenho o smp.

42
supercheetah

Eu acho que você está procurando pbzip2:

O PBZIP2 é uma implementação paralela do compressor de arquivos de classificação de blocos bzip2 que usa pthreads e atinge aceleração quase linear em máquinas SMP.

Dê uma olhada no página inicial do projeto ou verifique seu repositório de pacotes favorito.

36
echox

7Zip pode ser executado em vários threads quando recebe o -mmt flag, mas apenas ao compactar em arquivos 7z, que oferecem grande compactação, mas geralmente são mais lentos que o Zip para criar arquivos. Faça algo parecido com isto:

7z a -mmt foo.7z /opt/myhugefile.dat
21
fschmitt

O OP perguntou sobre arquivamento paralelo, não sobre compactação paralela.

Se o material de origem for proveniente de um sistema de arquivos em que diferentes diretórios/arquivos possam estar em discos diferentes, ou mesmo em um único disco rápido que exceda a velocidade de entrada da (s) ferramenta (s) de compactação, pode ser benéfico ter vários fluxos de entrada indo para as camadas de compressão.

A questão significativa se torna: como é a saída de um arquivo paralelo? Não é mais apenas um descritor de arquivo único/stdout, mas um descritor de arquivo por thread.

Um exemplo disso até agora é o modo de despejo paralelo do Postgresql pg_dump, em que despeja em um diretório, com threads trabalhando sobre o conjunto de tabelas para fazer backup (fila de trabalho com vários threads consumindo a fila).

Não tenho certeza de nenhum real arquivador paralelo que seja mainstream. Houve uma invasão do Solaris Tar para uso no ZFS: http://www.maier-komor.de/mtwrite.html

Existem algumas ferramentas de backup dedicadas que executam com êxito vários encadeamentos, mas muito mais que apenas divide a carga de trabalho por diretório em um nível alto.

16
robbat2
tar --use-compress-program=pigz  ....

substitua pigz pelo seu programa de compactação paralelo favorito. O motivo para usar tar é porque ele pode armazenar permissões de proprietário, grupo e grupo. Esses metadados costumam ser úteis (por exemplo, restaurar uma árvore de diretórios em um sistema complexo).

12
uDude

pigz é uma implementação paralela do gzip, mas só pode realmente usar vários processadores para compactação, não descompactação.

10
Jay Hacker

tar é simplesmente um formato de arquivo muito bom para duplicar exatamente os arquivos e preservar a árvore de diretórios e os atributos do arquivo original. O TAR é muito bom para fazer backups, porque tudo é preservado. Eu uso pbzip2 para compactar os arquivos tar usados ​​para backups do sistema com resultados muito bons.

este comando deve fazer o truque.

tar -cpS "infile" | pbzip2 > "outfile"

pbzip2 pode ser substituído por um utilitário de compactação diferente, mas esteja avisado, a compactação LZMA (como pxz) usa um TON de RAM ao compactar/descompactar arquivos grandes) (tentei executar 8 threads com 8GB de RAM e pxz começaram a trocar para o disco).

8
lovot

Outro candidato é lbzip2 . É bem parecido com o pbzip2

4
Felipe Alvarez

No que diz respeito à compressão, xz, já que a versão 5.2 suporta a compressão paralela via -T opção.

2
peterph