Compactar uma pasta, mas não compactar tipos de arquivo específicos, mas incluí-los no arquivo gz

Compactar uma pasta, mas não compactar tipos de arquivo específicos, mas incluí-los no arquivo gz

Estou usando tar com pigz para compactar uma pasta e salvar um backup. Tamanho desta pasta ~250 GB ou mais. Esta pasta possui uma variedade de conteúdo, incluindo vários arquivos de texto e de log, ISOs e arquivos zip em muitas subpastas diferentes. A compactação completa desta pasta leva cerca de 1 hora (ou mais às vezes). Neste momento eu uso isso em um script.

tar -cf - <data_folder> | pigz -1 > <output_file>.tar.$

Quero reduzir o tempo de compactação excluindo a compactação em ISOs e arquivos zip. Quero que eles (ISOs e arquivos zip) sejam incluídos no arquivo gzip como tal (descompactado).

Minha pergunta é esta:É possível compactar arquivos seletivamente com base no tipo e ainda incluir arquivos descompactados na saída gzip? Como experimentar isso?

Responder1

Não, você não pode. Pelo menos não diretamente.

tarnão faz nenhuma compactação. Ele apenas lê parte do sistema de arquivos (virtual) e gera um fluxo coeso a partir dele. Esse fluxo é frequentemente passado para uma ferramenta/biblioteca de compactação, por exemplo gzip/libz. A parte de compactação não vê nem conhece arquivos individuais. Ele apenas compacta o fluxo gerado pelo tar. Portanto, você não pode adicionar compactação seletiva à sua abordagem atual.

O que você pode fazer é construir incrementalmente o arquivo tar, compactando cada arquivo individualmente e depois adicionando-o ao arquivo tar. Ao fazer isso, você pode optar por adicionar (por exemplo) imagens iso descompactadas ao arquivo. Observe, entretanto, que o arquivo tar em si não será compactado. Conseqüentemente, após descompactá-lo, você também terá que descompactar cada arquivo individualmente, quando apropriado.

Quanto tempo você realmente perde compactando arquivos isos e zip? Vendo como tar | pigz > <file>está o processamento de fluxo, acho que você não está perdendo tanto tempo. Existem blocos gravados no disco, enquanto os próximos blocos estão sendo compactados, enquanto o fluxo está sendo construído. Está acontecendo em paralelo.

Talvez você possa otimizar sua estratégia:

Você pode colocar todos os arquivos iso e zip em diretórios dedicados e então construir seu arquivo em três etapas: tar e compactar o resto, adicionar diretório iso, adicionar diretório zip. O arquivo resultante ainda precisa de um longo procedimento de extração para descompactar o arquivo externo e, em seguida, descompactar e descompactar o arquivo interno. No entanto, isso é mais viável do que descompactar cada arquivo individual.

Ou você ajusta os comandos: Tem que ser um arquivo tar de um sistema de arquivos ou você pode usar ddpara fazer backup de toda a partição? Fazer backup de toda a partição tem a vantagem de leituras contínuas do(s) disco(s), que podem ser mais rápidas do que trabalhar com o sistema de arquivos. Tenho certeza de que você pode ajustar pigzpara trabalhar com pedaços maiores, o que deve lhe dar uma aceleração, se os arquivos iso e zip forem o seu problema. Além disso, você pode adicionar algum buffer (por exemplo mbuffer), antes de gravar o resultado no disco para otimizar ainda mais o acesso à mídia.

informação relacionada