Articles

Manuseamento de arquivos RAR e 7-Zip em Linux

Os formatos de compressão de ficheiros RAR e 7-Zip tiveram origem no Windows, por isso o suporte para eles em Linux não é tão automático como para os antigos holdovers Unix como Gzip e TAR. Mas com o software certo, pode manusear estes ficheiros comprimidos sem grandes problemas.

First, um pouco de fundo. RAR – abreviatura de Roshal Archive – é um formato proprietário de compressão de ficheiros desenvolvido por Eugene Roshal. Roshal vende um utilitário comercial para Windows chamado WinRAR, mas também oferece clientes sem compressão para uma série de sistemas operativos sem custos.

7-Zip é uma aplicação Windows concebida para lidar com o maior número possível de formatos de compressão. O seu formato nativo é 7z, que utiliza uma versão moderna do algoritmo de compressão LZ77. A aplicação 7-Zip do Windows e um kit de desenvolvimento de software 7z estão disponíveis sob a LGPL.

Bambos os formatos pretendem alcançar melhores rácios de compressão para tipos de dados comuns do que os algoritmos mais antigos. Também suportam a divisão de grandes arquivos em vários pequenos volumes para facilitar a mobilidade e a recuperação de erros. A combinação destas duas características tornou-as escolhas populares para a distribuição online de ficheiros extremamente grandes, tais como imagens ISO.

7z e Linux

A aplicação 7-Zip é de código aberto, mas permanece apenas para Windows. Para utilizadores de Linux, o projecto liga-se a um pacote cliente de linha de comando chamado p7zip que fornece dois executáveis, o 7z e o 7za. Os dois têm a mesma sintaxe e opções, diferindo apenas no facto de o 7za ser uma aplicação autónoma compilada apenas para utilização com os formatos 7z e Unix essenciais (tar, gzip, bzip2, etc.), enquanto o 7z utiliza uma arquitectura de plugin que lhe permite suportar muitos formatos de compressão adicionais.

A sintaxe básica é 7z function options filename.7z. Para descomprimir um arquivo, usar 7z x myfile.7z. Pode-se extrair ficheiros de um arquivo com 7z e myotherfile.7z, mas utilizando a função e extrai todos os ficheiros para o directório de trabalho actual, enquanto x preserva os seus caminhos.

RAR e Linux

A situação RAR é um pouco mais complicada, devido ao esquema de compressão proprietário do formato do ficheiro. O site RARLAB fornece um cliente proprietário sem custos de compressão apenas para Linux chamado unrar, concebido para distros Intel de 32-bit tanto em pacotes RPM como Slackware, e como binários autónomos para sistemas PowerPC, 64-bit Intel, e ARM Linux. Uma vez que o programa unrar da RARLAB não é software livre nem código aberto, é pouco provável que o encontre com muitas distribuições de Linux. Pode descarregar um tarball de código fonte a partir do RARLAB, mas a licença em anexo proíbe-o explicitamente de utilizar o código fonte para desenvolver qualquer forma de codificador RAR.

p>Outra opção é uma ferramenta de linha de comando com licença GPLv2 desenvolvida pelo projecto Gna! Confuso o suficiente, o descodificador RAR de código aberto é também denominado unrar. Gna! unrar foi concebido como um invólucro em torno de unrarlib, uma biblioteca de descodificação RAR de código aberto desenvolvida por Christian Scheurer e Johannes Winkelmann – que não fazem parte do Gna!.

Scheurer e Winkelmann desenvolveram unrarlib a partir do código fonte original RARLAB, mas pediram e obtiveram permissão de Eugene Roshal para lançar o seu trabalho como software livre. Assim, o unrarlib está disponível sob a GPLv2 e sob a licença proprietária original do RARLAB.

Esse acordo de licenciamento pareceria abrir um caminho para as partes interessadas fazerem uma execução final em torno do RARLAB e criarem um codificador RAR concorrente a partir do código-fonte original, mas isso ainda não aconteceu. O próprio Scheurer não está interessado em prossegui-lo, dizendo que prefere utilizar formatos de código aberto para fazer arquivos. “Nem sempre se pode escolher em que formato se obtêm os dados, por isso é bom ter uma forma aberta de acesso aos mesmos. Mas pode escolher a forma de criar um arquivo. Se não quiser ferramentas de compressão de fonte fechada, existem boas alternativas”

O unrar proprietário utiliza a mesma sintaxe básica do 7z e 7za. Para descomprimir e arquivar e preservar caminhos de ficheiros, digite unrar x myarchive.rar. No unrar GPL, basta adicionar um hífen antes do x: unrar -x myotherarchive.rar.

Hoje, unrarlib suporta apenas até à versão 2 do formato de ficheiro RAR. Scheurer diz estar a trabalhar na adição de suporte para o formato mais recente RAR3 ao unrarlib, mas diz não ter a certeza de qual a reacção a esperar de RARLAB.

suporte GUI

Se fizer a maior parte do seu trabalho a partir de um gestor de janelas Linux, está com sorte. Tanto o GNOME como o KDE têm gestores de arquivos gráficos – File Roller for GNOME e Ark for KDE. Versões recentes de ambos usam plugins para suportar uma grande variedade de formatos de arquivo, e confiam no p7zip para suporte 7z e no Gna! unrar para suporte RAR. Devido à incompatibilidade de ficheiros RAR3 mais recentes, no entanto, pode ainda precisar de instalar o unrar proprietário também no seu sistema.

Como mencionei no início, tanto o suporte 7z como o RAR dividem os ficheiros grandes em pedaços mais pequenos. No entanto, nos meus testes, nem File Roller nem Ark reconheceram que um directório cheio de ficheiros numerados sequencialmente myfile.7z.001, myfile.7z.002, myfile.7z.003, e assim por diante constituía um ficheiro 7z dividido em pedaços do tamanho de uma mordida.

Assim, para obter os dados no interior, precisava de voltar a juntar os ficheiros divididos em um na linha de comando usando o comando cat. cat myfile.7z.001 myfile.7z.002 myfile.7z.003 > myfile.7z colará de novo os ficheiros parciais por ordem, nomeando o resultado myfile.7z. Nesse momento, poderia abrir o arquivo 7z em File Roller ou Ark, mas desde que já esteja na linha de comando, é muito mais rápido apenas escrever 7z x myfile.7z, e voilà – dados, belos dados, mesmo na ponta dos seus dedos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *