Use o Xarchiver para criar backups criptografados

O Xarchiver é, antes de mais nada, um gerenciador/gestor de arquivos — que nem o Nautilus, do GNOME (presente no Ubuntu, Debian, Fedora etc.)
O seu destaque é a possibilidade de empacotar arquivos em diversos formatos, através de variados métodos ou algoritmos.

Já mostrei como compactar arquivos no Linux, usando o Xarchiver.
Aqui, vamos ver como adicionar senha, para impedir que o conteúdo dos arquivos seja visto por pessoas não autorizadas por você.

O Xarchiver tem os seguintes recursos, em relação aos formatos suportados:

  • tem suporte aos formatos mais usados de empacotamento: arj, rar, zip, bzip2, gzip, lha, lzma, 7z, tar, tar.bz2, tar.gz, tar.lzma, deb and rpm
  • leitura e criação de comentários nos arquivos arj, rar e zip.
  • quando o formato tem suporte a auto-extração, o Xarchiver também tem.
  • auto detecção de arquivos criptografados por senha, nos formatos arj, rar e zip. Tem suporte a criptografia 7z, mas não auto detecção.
  • tem suporte aos formatos mais usados de empacotamento: arj, rar, zip, bzip2, gzip, lha, lzma, 7z, tar, tar.bz2, tar.gz, tar.lzma, deb and rpm

Passo a passo para arquivar com senha

Vou usar como exemplo, o arquivo backup003.zip.
Com o arquivo aberto e seu conteúdo aparecendo na tela principal, selecione Ação/Adicionar (ou Ctrl + D)
como criptografar arquivos no Linux usando o xarchiver
Em seguida, na tela de seleção e inclusão de novos arquivos ao pacote, selecione a aba “Opções”.
como criptografar arquivos no Linux usando o xarchiver
No painel de opções, localize a caixa para ativar e digitar a senha.
como criptografar arquivos no Linux usando o xarchiver
Quando não há suporte a criptografia, a chave com senha ou a qualquer outra opção, as alternativas possíveis aparecem esmaecidas no painel.
como criptografar arquivos no Linux usando o xarchiver
Neste caso, resta procurar outra opção de compactação ou empacotamento, dentre as muitas que o aplicativo já oferece.
Note que, dentro do pacote, os arquivos são armazenados com seus nomes reais.
Isto quer dizer que o método de compressão age sobre o conteúdo e deixa os nomes dos arquivos intactos.
Ou seja, convém evitar usar nomes “chamativos” que, em tese, acabam “entregando mais do que o próprio conteúdo”:

  • como_eu_roubei_um_banco.txt
  • NotasFiscaisFriasDaMinhaEmpresa.odt
  • MinhaFotoMostrandoOQueNãoDeveria.jpg
  • etc.

Acho que deu pra entender… 😉

Como extrair arquivos empacotados com senha?

A extração é muito intuitiva.
Localize o pacote de arquivos, com o seu gerenciador de arquivos preferido (pode ser o Nautilus, para quem usa o GNOME).
Clique 2 vezes sobre ele.
como criptografar arquivos no Linux usando o xarchiver
Assim que você tentar fazer a leitura de algum arquivo, dentro do pacote, a senha será pedida.

Como comprimir arquivos no Linux, usando o comando gzip

O comando gzip oferece um dos meios mais eficientes de comprimir arquivos, no Linux.
O gzip faz uso do Lempel-Ziv ou lz77 que, além de ser eficaz na redução do pacote final, promove uma metodologia de compressão lossless, ou seja, sem perda de informações.
gzip oficial logo

O LZ77 e o LZ78 são dois algoritmos de compressão lossless, publicados por Abraham Lempel e Jacob Ziv, em 1977 e 1978.
São também conhecidos por LZ1 e LZ2, respectivamente. Ambos formam a base para outras variações, o que inclui os LZW, LZSS, LZMA etc.
Além da influência no meio acadêmico, estes algoritmos formaram a base de vários importantes e ubíquos esquemas de compressão, tais como o GIF (imagens) e o algoritmo deflacionário usado nas imagens PNG.

O gzip é um comando muito usado na compressão de arquivos e diretórios no Linux — diretamente ou dentro de scripts (de backup, por exemplo). Com toda certeza, vale a pena conhecer melhor o seu uso.
Ao final do artigo, há um link para o site data-compression, onde é possível obter mais informações sobre o algoritmo.
A animação, que segue, demonstra a aplicação do método LZ1/LZ2 de compressão:
lempelziv animation
Além disto, entre os programas de (de)compressão, este é padrão e costuma estar presente em quase todas as distribuições GNU/Linux.

Como usar o gzip, na linha de comando do Linux

Como comportamento padrão, quando comprimimos um arquivo ou pasta, usando o comando gzip, o resultado será um arquivo com o mesmo nome, acrescido da extensão .gz.
Para comprimir um simples arquivo, use o gzip na linha de comando, assim:

gzip arquivo

O mesmo vale para um arquivo do LibreOffice:

gzip documento.odt 
ls doc*

documento.odt.gz

Como você pode ver, no exemplo acima, o nome do arquivo foi acrescido da extensão .gz, logo após sua original .odt.
Alguns arquivos irão ter taxas de compressão melhores do que outros.
Documentos de texto, imagens bitmap, arquivos de áudio WAV e FLAC, entre outros, costumam alcançar boas taxas de compressão.
Por outro lado, arquivos de compressão lossy, que já sofreram perda de dados, como imagens JPEG e áudio MP3, terão péssimas taxas de compressão. Na verdade, o resultado final pode acabar sendo um arquivo maior — uma vez que passarão a carregar informações adicionadas pelo gzip.

Como descomprimir arquivos gzip

Se você tem um arquivo que já tenha sido comprimido via gzip, use o comando acompanhado da opção ‘-d’ (descomprimir) para reverter o processo anterior.
Veja um exemplo:

gzip -d documento.odt.gz 
ls doc*

documento.odt

Como forçar o gzip a comprimir um arquivo

Quando não houver ganho na compressão de algum arquivo, o gzip pode “se recusar” a fazer o serviço.
Se você pretende insistir na tarefa, use a opção ‘-f’ para forçar o gzip a prosseguir.
No exemplo, que segue, acompanhe o que é feito, através dos comentários, precedidos pelo símbolo #:

# Verificação do tamanho original do arquivo BackCover.jpg.gz
ls -l BackCover.jpg.gz 
-rw-r--r-- 1 justincase justincase 76646 Ago 29 18:22 BackCover.jpg.gz

# Ao tentar comprimir o arquivo o programa avisa que ele já tem a extensão .gz
gzip BackCover.jpg.gz 
gzip: BackCover.jpg.gz already has .gz suffix -- unchanged

# Para prosseguir, use a opção -f
gzip -f BackCover.jpg.gz 

# Note que o arquivo final passou a ter 50 bytes a mais
ls -l BackCover.jpg.gz.gz 
-rw-r--r-- 1 justincase justincase 76696 Ago 29 18:22 BackCover.jpg.gz.gz

Se quiser, faça suas próprias experiências, antes de prosseguir.

Como manter o arquivo original e aplicar a compressão a uma cópia

Para manter o arquivo original e criar um novo arquivo comprimido, use a opção ‘-k’:

gzip -k cartaz.jpg
ls -l cartaz.*
-rw-r--r-- 1 justincase justincase 76965 Ago 29 18:22 cartaz.jpg
-rw-r--r-- 1 justincase justincase 76643 Ago 29 18:22 cartaz.jpg.gz

Como obter estatísticas de compressão do gzip

O objetivo de se comprimir arquivos é economizar espaço de armazenamento e/ou obter transferências mais eficientes, na rede.
Seria interessante, portanto, obter algumas estatísticas sobre a eficiência de compressão sobre os arquivos.
Para ter uma idéia da eficiência da compressão de um arquivo, use a opção ‘-l’:

gzip -l cartaz.jpg.gz 

O que se vê, como resultado, é o tamanho original do arquivo, seu tamanho comprimido, a taxa de compressão obtida pelo gzip e, por fim, o nome original do arquivo:

         compressed        uncompressed  ratio uncompressed_name
              76643               76965   0.5% cartaz.jpg

Dá para comprimir pastas com o gzip?

Se você quiser comprimir uma pasta inteira, para dentro de um único pacote, o ideal é usar o comando tar — por que o gzip irá comprimir cada arquivo, individualmente, não a pasta inteira, como um pacote.
Além disto, ele não aceita compactar o diretório. Veja:

gzip textos/
gzip: textos/ is a directory -- ignored

Para compactar os arquivos dentro do diretório – recursivamente, portanto –, é necessário usar a opção ‘-r’:

gzip -r textos/

O resultado é o que segue:

ls -l textos/
total 20
-rw-r--r-- 1 justincase justincase 145 Ago 30 11:18 texto1.txt.gz
-rw-r--r-- 1 justincase justincase 145 Ago 30 11:20 texto2.txt.gz
-rw-r--r-- 1 justincase justincase 145 Ago 30 11:20 texto3.txt.gz
-rw-r--r-- 1 justincase justincase 145 Ago 30 11:20 texto4.txt.gz
-rw-r--r-- 1 justincase justincase 145 Ago 30 11:20 texto5.txt.gz

Como verificar se o gzip obteve sucesso no procedimento

Se você usa o gzip, dentro de um processo de backup, pode verificar a integridade de cada arquivo comprimido com a opção ‘-t’:

gzip -tv textos/*
textos/texto1.txt.gz:    OK
textos/texto2.txt.gz:    OK
textos/texto3.txt.gz:    OK
textos/texto4.txt.gz:    OK
textos/texto5.txt.gz:    OK

Note que adicionei o ‘v’ às opções do comando. Do contrário, ele não retornaria resultados, a menos que houvesse erros. Isto seria útil dentro de um script.
Por fim, é possível controlar a taxa de compressão, adicionando um valor númerico, como opção — de 1 a 9.
Para obter a taxa de compressão máxima, use o valor 9.
Na “brincadeira”, abaixo, o arquivo foi compactado com a opção ‘-1’, primeiro (que é a taxa de compressão mais baixa) e depois, com a taxa de compressão mais alta. Enquanto isto, foi verificada a estatística de compressão de cada um, com a opção ‘-l’:

# compactando com a taxa mais baixa
gzip -1 documento.odt 
# obtendo estatísticas
gzip -l documento.odt.gz 
         compressed        uncompressed  ratio uncompressed_name
                159                 685  81.5% documento.odt

# descomprimindo o arquivo
gzip -d documento.odt.gz 
# compactando com a taxa mais alta
gzip -9 documento.odt 
# obtendo estatísticas
gzip -l documento.odt.gz 
         compressed        uncompressed  ratio uncompressed_name
                158                 685  81.6% documento.odt


Não use o programa gzip com arquivos ZIP. Para este tipo de arquivo, existem aplicativos apropriados: o zip e o unzip, por exemplo.

Referências

https://en.wikipedia.org/wiki/LZ77_and_LZ78.
http://www.data-compression.com/lempelziv.html.
http://linux.about.com/od/commands/fl/Example-Uses-Of-The-Linux-gzip-Command.htm?utm_content=7489444&utm_medium=email&utm_source=exp_nl&utm_campaign=list_linux&utm_term=.

O comando tar em 9 exemplos.

O comando tar é uma ferramenta eficiente e que tem sido muito usada, por muito tempo para compactar arquivos, diretórios, discos inteiros etc. — muitas vezes com o objetivo de fazer volumosos backups. Sim. Ele aguenta trabalho pesado.
Neste post, vou mostrar, através de alguns exemplos, como realizar algumas operações com o comando tar.
E, quando falamos nele, nos referimos tanto a um formato de arquivo quanto a um programa — presente no UNIX desde seus primeiros dias e desenvolvido, inicialmente, para gravar dados em dispositivos sequencias (gravadores de fitas).
O mundo mudou, os dispositivos de gravação evoluíram e o tar continua sendo muito utilizado – predominantemente como meio de comprimir múltiplos arquivos.

Como criar um arquivo tar simples

Um arquivo tar é comumente chamado, em inglês, tarball (bola tar) e pode ser facilmente criada a partir de um diretório. No exemplo, abaixo, vou mostrar a criação de arquivos_temporarios.tar, a partir do conteúdo do meu diretório temp/:

tar -cvf arquivos_temporarios.tar temp/
temp/
temp/portuguese_brazil.zip
temp/portuguese_brazil.lng

As opções usadas na declaração tar -cvf têm os seguintes efeitos:

  • c – (create) cria uma novo arquivo .tar
  • v – (verbose) torna a execução do comando mais “verbosa”, ou seja, ele vai “contando” o que está fazendo
  • f – indica que o resultado será do tipo arquivo (file)

Você pode experimentar usar -vv em substituição ao -v para ver o comando ser executado com mais verbosidade.

Como criar um arquivo .tar.gz

Um arquivo .tar.gz nada mais é que um arquivo .tar comprimido através do gzip – é por isto que ele tem o .gz na sua extensão. Para atingir este objetivo, use a opção -z, em conjunto com as anteriores. Veja:

tar -cvzf arquivos_temporarios.tar.gz temp/

Note que acrescentei o z e alterei o nome do arquivo de saída para temporarios.tar.gz

bash shell logo on keyboard

Como criar um arquivo bz2

bzip2 bzip logoArquivos bz2, são arquivos bzip2 – um compressor de dados que usa o algoritmo Burrows-Wheeler e pode reduzir o espaço ocupado por um arquivo em até 10% do seu volume original.
Em função da maior capacidade de compressão, eu recomendo usar sempre o bzip. A desvantagem do seu uso está na maior demora para comprimir ou descomprimir arquivos.
Veja como usar o bzip2, no lugar do gzip, na compressão de arquivos tar:

tar -cvjf arquivos_temporarios.tar.bz2 temp/

Note que substituí a opção z por j, no exemplo acima. A extensão também foi alterada para bz2

A extensão dos arquivos

Antes de seguir, gostaria de falar rapidamente sobre as extensões dos arquivos.
Você é livre para escolher a extensão que quiser. O arquivo de saída, do exemplo anterior, poderia se chamar temporarios.fofinhos – o conteúdo continuaria sendo exatamente o mesmo.
Mas o objetivo da extensão de um arquivo não é “ser fofa” ou bonita. Antes, ela deve ser informativa e ajudar os usuários a entender de que tipo se trata aquele arquivo, de forma que se possa usar o comando certo em relação a ele. Mais a frente, vamos ver que os comandos para descompressão dos arquivos variam em função de ter sido usado bzip (ou bzip2) ou gzip na sua compressão.

Extensões comuns ao usar o tar

Já que estamos falando no assunto, há alguns padrões bastante difundidos:

  • arquivos tar, comprimidos com gzip, usam extensões .tar.gz ou .tgz
  • arquivos tar, comprimidos com bzip2, usam predominantemente extensões .tar.bz ou .tbz ou .bz2

Como extrair arquivos tar

Para extrair o conteúdo de um arquivo tar, usamos a opção -x. Veja como funciona:

tar -xvf icones.tar

Se o arquivo estiver comprimido com o gzip:

tar -xvfz icones.tar.gz

Se estiver comprimido com bzip2:

tar -xvfj icones.tar.bz

Nota: O arquivo será sempre descomprimido no diretório atual. Use o comando pwd, caso não saiba em que diretório você se encontra.
Se quiser indicar outro diretório para descompactar o arquivo, use a opção -C acompanhada do diretório de destino. No exemplo abaixo, vou direcionar a extração do conteúdo do arquivo icones.tar.bz pro diretório ~/meus_icones/:

tar -xvfj icones.tar.bz -C ~/meus_icones/

Notou que usei a opção -C antes do diretório destino?

Como listar o conteúdo de um arquivo tar

A opção -t é a que permite listar o conteúdo de arquivos tar. Veja como funciona:

tar -tvf icones.tar
drwxr-xr-x root/root         0 2013-11-19 01:22 opt/icons/
-rw-r--r-- root/root     68458 2013-11-13 00:42 komodo128.png
-rw-r--r-- root/root     12053 2013-11-13 00:42 komodo48.png
-rw-r--r-- root/root      2349 2013-11-13 00:42 komodo16.xpm
-rw-r--r-- root/root     87697 2013-11-13 00:42 komodo128.xpm

Como listar o conteúdo de arquivos tar.gz ou tar.bz

Nestes casos o comando permanece o mesmo. Tome apenas o cuidado de indicar corretamente os nomes dos arquivos cujo conteúdo você deseja listar.
Para listar um arquivo .tar.gz:

tar -tvf icones.tar.gz

Para listar um arquivo .tar.bz:

tar -tvf icones.tar.bz

Como extrair apenas um arquivo de dentro do arquivo tar

Neste exemplo, vou extrair o arquivo komodo128.png de dentro do arquivo icones.tar:

tar -xvf icones.tar komodo128.png

Para remover um arquivo com o mesmo nome de dentro de um arquivo tar.gz, acrescente a opção -z:

tar -zxvf icones.tar.gz komodo128.png

Se o arquivo comprimido for um tar.bz, use a opção -j:

tar -jxvf icones.tar.bz komodo128.png

Como extrair vários arquivos de um arquivo tar, tar.gz ou tar.bz

Neste caso, listamos os diversos arquivos, usando aspas. Observe os exemplos:

tar -xvf icones.tar "komodo128.png" "komodo64.png"
tar -zxvf icones.tar.gz "komodo128.png" "komodo64.png"
tar -jxvf icones.tar.bz "komodo128.png" "komodo64.png"

Como extrair vários arquivos de um arquivo .tar, .tar.gz ou .tar.bz usando coringas

Através de coringas, podemos indicar um grupo de arquivos sobre o qual desejamos efetuar uma ação. Vou mostrar como extrair um grupo separado de arquivos de dentro de arquivo tar, tar.gz e tar.bz com o uso de coringas, ainda usando o exemplo do tópico anterior:

tar -xvf icones.tar --wildcards *.xpm
tar -zxvf icones.tar.gz --wildcards *.xpm
tar -jxvf icones.tar.bz --wildcards *.xpm

Como adicionar arquivos ou diretórios a arquivos tar já existentes

Esta possibilidade é especialmente útil para quem deseja acrescentar mais arquivos ou diretórios a um arquivo tar de backup preexistente.
No exemplo que segue, vou acrescentar o arquivo komodo32b.png ao arquivo tareado icones.tar. Para isto, vou usar a opção -r (append):

tar -rvf icones.tar komodo32b.png

Ou um diretório inteiro:

tar -rvf backup-sql-2014-15-02.tar sql/

Como adicionar arquivos ou diretórios a arquivos tar.gz ou tar.bz

Neste caso, a solução é recriar o arquivo, já incluindo estes novos na sua nova bola tar – o tar não tem como acrescentar arquivos a arquivos tar compactados com bzip2 ou gzip.

Como verificar arquivos tar

Arquivos de backup precisam ser checados sempre.
Seria desolador, após um desastre (toc, toc, toc), descobrir que as cópias de segurança não funcionam.
Novamente, não é possível aplicar a solução a arquivos tar.gz e tar.bz diretamente, com o comando tar – qualquer que seja a extensão, arquivos compactados, seja com bzip2 ou gzip.
Por isto, os scripts de backup, costumam tarear primeiro os arquivos, verificá-los e, se tudo estiver certo, compactá-los.
Veja um exemplo de verificação, com o seu resultado:

tar -cvWf backup-2014-02-11.tar

A solução para testar se o arquivo final tar.gz ou tar.bz está bom é usar o utilitário gzip ou o bzip2, com a opção ‘-t’:

gzip -tv backup.tar.gz 
backup.tar.gz:	 OK

ou

bzip2 -tv backup.tar.bz 
backup.tar.bz:	 OK

Conclusão

Para concluir, segue uma pequena tabela com as opções abordadas neste texto, para ajudar a lembrar;

  • c — para criar um arquivo do tipo arquivo;
  • x — para extrair arquivos de dentro do arquivo tar
  • v — mostra o processo na tela. A opção -vv exibe mais detalhes ainda;
  • f — determina o nome do arquivo tar;
  • t — exibe o conteúdo;
  • j — compacta ou descompacta os arquivos via bzip2
  • z — compacta ou descompacta os arquivos via gzip;
  • r — adiciona arquivos ao tar;
  • W — verifica a integridade do arquivo tar;
  • wildcards — permite trabalhar com coringas.

Por enquanto é só, pessoal!Por enquanto, é só! Espero que este breve tutorial tenha sido suficiente para sanar suas dúvidas. Use o man tar no terminal para ver outras opções de uso do comando tar e, caso eu tenha esquecido alguma coisa, no texto, por favor comente ali embaixo.