Eu tenho cerca de 2 milhões (60GiB) de arquivos pequenos compactados em gzip e gostaria de criar um arquivo compactado contendo todos eles em uma versão descompactada. Infelizmente, não posso simplesmente descompactá-los todos e criar o arquivo compactado, pois tenho apenas 70GiB de espaço livre em disco. Em outras palavras, como posso fazer um equivalente tar --file-filter="zcat" zcf file.tar.gz directory
se a opção de linha de comando --file-filter
não existe no tar GNU?
tar
disk-usage
compression
large-files
d33tah
fonte
fonte
gzip
? A combinação e a compactação economizam espaço, mas você ganharia muito mais se comprimir em umxz
arquivo tar ed. Isso é uma opção?Respostas:
Uma opção poderia ser usar
avfs
(aqui assumindo um sistema GNU):fonte
Observe que isso é frágil quando se trata de nomes de arquivos desagradáveis.
Os arquivos são descompactados temporariamente em
$tmpdir
, transferidos paracpio
então assim que são adicionados ao arquivo, removidos.fonte
pigz
como uma alternativa para gzip :)Aqui está o que eu tentei até agora - parece funcionar, mas é terrivelmente lento, mesmo com o PyPy:
Uso:
find . | script.py | gzip > file.tar.gz
fonte
|gzip
e o arquivo não compactado não tocou basicamente no disco rígido, então IMHO não deve ser tão lento.tar
o arquivo gzip como objeto.