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.
performance
tar
archive
supercheetah
fonte
fonte
zip
como capaz de lidar com diretórios: |tar
arquivos, e depois comprimir o pacote usando um compressor de ficheiros (comogzip
,pigz
, etc.). Você pode fazer isso em duas etapas, mas também em uma única etapa , pois eles podem trabalhar em fluxos de dados a partir de entrada / saída padrão. Os resultados são muito semelhanteszip
, mas mais versáteis.Respostas:
Eu acho que você está procurando pbzip2:
Dê uma olhada na página inicial do projeto ou verifique seu repositório de pacotes favorito.
fonte
pigz
epxz
para implementações paralelas degzip
exz
. Você pode compactar usando um comando comotar c dir | pigz -c > dir.tar.gz
e descomprimir usandopigz -cd dir.tar.gz | tar xf -
.tar -cf dir.tar.gz -I pigz dir
etar -xf dir.tar.gz -I pigz
. Tambémxz
está encadeado: useXZ_OPT=-T0 tar -cJf dir.tar.gz dir
eXZ_OPT=-T0 tar -xJf dir.tar.gz
.O 7zip pode ser executado em vários threads quando recebe o
-mmt
sinalizador, mas apenas ao compactar em 7z-archives, que oferecem grande compactação, mas geralmente são mais lentos que o zip para criar arquivos. Faça algo parecido com isto:fonte
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, será realmente 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 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.
fonte
substitua
pigz
pelo seu programa de compressão paralela favorito. O motivo para usartar
é porque ele pode armazenar permissões de proprietário, grupo, Esses metadados costumam ser úteis (por exemplo, restaurar uma árvore de diretórios em um sistema complexo).fonte
-I
opção, que é a mesma que--use-compress-program
. Assim, por exemplo,tar cvzf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo...."
pode ser aplicado à opção multiencadeada usandopigz
comotar -I pigz -cvf /some/dir/yournewarchive.tar.gz /directory/tobecompressed --exclude="/directo..."
. Esta é a melhor e mais adequada resposta, IMHO. Obrigado @uDude! :)O pigz é uma implementação paralela do gzip, mas só pode realmente usar vários processadores para compactação, não descompactação.
fonte
pigz
na verdade, parece capaz de usar vários threads também ao descompactar. Tente comparar a saída detime tar xf dir.tar.gz
e detime pigz -cd dir.tar.gz | tar xf -
(na minha CPU de 4 núcleos, leva um pouco menos da metade do tempo).time
em um pipeline cronometrará apenas o primeiro comando. A partir dapigz
documentação : "A descompressão não pode ser paralelizada, pelo menos não sem fluxos de esvaziamento especialmente preparados para esse fim. Como resultado, o pigz usa um único thread (o thread principal) para descompressão, mas criará outros três threads para leitura, escrever e verificar cálculos, o que pode acelerar a descompressão em algumas circunstâncias ".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 usopbzip2
para compactar os arquivos tar usados para backups do sistema com resultados muito bons.este comando deve fazer o truque.
pbzip2
pode ser substituída por um utilitário de compactação diferente, mas esteja avisado, a compactação LZMA (como pxz) usa uma tonelada de RAM ao compactar / descompactar arquivos grandes (tentei executar 8 threads com 8 GB de RAM e o pxz começou a trocar para o disco).fonte
Outro candidato é
lbzip2
. É bem parecido com o pbzip2fonte
No que diz respeito à compressão,
xz
uma vez que a versão 5.2 suporta a compressão paralela via-T
opção.fonte