A Importância de programas que sabem usar a entrada/saída padrão: Solução do desafio

No último post deixei um desafio (que foi rapidamente resolvido já nos comentários) que era fazer uma cópia de um arquivo (que tinha sido compactado e depois dividido) para um disco com espaço suficiente para apenas uma cópia desse arquivo, ou seja, não poderíamos juntar as partes para só depois descompactar.

Nesse post vamos apresentar uma solução para o problema proposto.

O problema é simples. Temos um arquivo de 10GB dividido em 5 partes de 2GB. Precisamos juntar essas 5 partes, depois descompactar o resultado e só aí teremos o conteúdo original e mãos.

Eis o nosso suposto arquivo (apenas em proporções menores):

Agora precisamos dividi-lo em pates:

 

Arquivo já dividido

Agora estamos prontos para aplicar a solução. O que vamos fazer é juntar as partes, que vai nos trazer de volta o arquivo original e depois descompactá-lo. O grande desafio é fazer isso sem usar arquvos temporários, ou seja, sem precisar de espaço adicional no disco.

E é aqui que entra o ponto mais importante: O uso do pipe (|) e da entrada/saída padrão. Usaremos o comando cat para juntar os arquivos e o bunzip para descompactar o resultado da junção anterior. Então vejamos:

 

Comando completo

Nesse caso direcionamos o resultado final para arquivo2 apenas para não sobrescrevermos o arquivo original, que vamos descompactar para podermos conferir se o arquivo gerado pelo comando acima é exatamente igual ao arquivo original:

 

Listagem contendo o arquivo original (descompactado) e o novo arquivo gerado

Agora já temos o arquivo original (descompactado) e o arquivo que geramos com o comando proposto para a solução, precisamos apenas conferir se são iguais:

 

md5sum dos dois arquivos

Com o cálculo do MD5 vemos que eles são exatamente iguais e isso prova que nosso comando funciona.

  1. Deixe um comentário

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: