Como conecto o Tar com o BASH?

5

Long Story Short

Estou trabalhando com arquivos Tar que contêm imagens PNG na codificação base64. Eu gostaria de usar BASH (ou qualquer outra coisa funciona) para ligar a função de extração de Tar para decodificar imagens PNG de codificação base64 para codificação PNG padrão depois que os arquivos são descompactados. Um simples cat $input_file | base64 -d >$output_file decodificará as imagens com sucesso.

Existe uma maneira que eu possa ligar ao tar -xf para que os usuários não precisem fazer nenhum (ou mínimo) trabalho extra para decodificar as imagens?

Na documentação do GNU Tar , descobri que existem variáveis de fato reservado para manter os nomes das funções que desejo ser ligado em vários momentos na execução do programa Tar. No entanto, a documentação explica que essas variáveis, junto com outras variáveis que podem ser definidas para configurar o Tar, estão localizadas em um arquivo denominado backup-specs. Infelizmente, o caminho para este arquivo não é fornecido. Além disso, executando sudo find / -name backup-specs me diz que este arquivo não está presente no meu sistema Ubuntu versão 13.04.

Informações básicas não incluídas no Long Story Short

Eu tenho trabalhado em um aplicativo de criação de efeito de partículas baseado em navegador (WebGL) ( link ), ( link ), ( link ). Eu comecei a escrever uma solução do lado do cliente apenas para salvar e carregar dados de efeito como um arquivo tar. No entanto, como o JavaScript do lado do cliente tem capacidade limitada para processar dados binários, as imagens usadas como texturas no efeito são salvas com a codificação base64. Consegui implementar salvar dados de efeito como um arquivo Tar (ainda não o enviei para o Github). No entanto, as imagens presentes no referido arquivo Tar não podem ser manipuladas a menos que sejam decodificadas a partir da codificação base64.

    
por orb 22.10.2013 / 01:12

1 resposta

3

Você deseja usar a opção --to-command de tar :

tar xf tarfile.tar --to-command='sh -c "mkdir -p $(dirname $TAR_FILENAME) && base64 -d > $TAR_FILENAME"'

Isso é descrito no manual aqui .

backup-specs é parte do sistema de backup, as declarações manuais são distribuídas com tar , mas meu sistema não tem isso e eu não acho que realmente use, pelo menos não mais.

    
por 22.10.2013 / 02:03