
Preciso criar arquivos compactados de arquivos e poder extrair rapidamente arquivos/diretórios individuais deles.
O problema é, por exemplo, tar.bz2 parece não ser a melhor escolha para tal tarefa - extrair um único arquivo de 4kb de um arquivo de 200Mb (50.000 arquivos) leva 17 segundos na minha máquina.
Existe algum formato de arquivo que forneça exportação rápida de arquivos individuais do arquivo (e funcione no Linux)?
Responder1
pixzé uma versão paralela de indexação de xz.
# Compress:
tar -I pixz -cf foo.tar.xz ./foo
# Decompress:
tar -I pixz -xf foo.tar.xz
# Very quickly list the contents of the compressed tarball:
pixz -l foo.tar.xz
# Very quickly extract a single file:
pixz -x dir/file < foo.tar.xz | tar x
Responder2
O formato Zip compacta cada arquivo separadamente e depois os combina (com um diretório de conteúdo do arquivo) em um único arquivo.
Responder3
Além do formato zip já mencionado, os utilitários dar
e dump
também são bons para lidar com isso e, diferentemente do zip, retêm as permissões unix. Pois dar
você deseja evitar o uso da opção de arquivo sólido, pois isso remete ao método tar/gzip de compactar tudo de uma vez, o que oferece melhor compactação, mas faz com que a extração de arquivos individuais demore mais, pois o arquivo inteiro deve ser descompactado até o arquivo desejado é encontrado. dump
lida muito bem com grandes conjuntos de arquivos pequenos (dezenas de milhares) e pode fazer compactação multithread, mas lê apenas sistemas de arquivos ext[234].
Responder4
.tar.gz
tem uma velocidade de descompressão mais rápida, mas a desvantagem é o pior tamanho de compressão. editar: Ignacio Vazquez-Abrams me ninja.