Como realizar backup incremental no Linux, usando o comando tar

O comando tar está ligado às tarefas de gestão de backups desde sua origem.
O nome do utilitário se refere ao dispositivo de gravação/leitura em fitas (tape drives), muito usado, ainda hoje, por sua confiabilidade e capacidade de armazenamento.
backup tape drive
Tar é abreviatura para tape archiver.

Apesar do nome, nunca foi restrito a qualquer tipo de mídia de gravação.
Backups feitos com o tar podem ser armazenados aonde você achar melhor.

Neste post, vamos abordar alguns usos do programa para, no final, montar um pequeno script, que você pode alterar para criar seu próprio backup automatizado ou integrar a outro script mais complexo.
Se tiver alguma dúvida, por favor, clique nos links presentes no texto para obter mais informações.
Não esqueça de dar uma olhada também na tag backup deste site e nos links da sessão de referências.

Os desafios de fazer backups eficientes

Fazer cópias de segurança de um grande volume de dados, pode tomar muito tempo.
Consome tanto tempo, que muita gente deixa de ter este cuidado — e pode se arrepender amargamente por isso.
O ideal é automatizar o processo de backup.
O processo de cópia e compressão de uma grande quantidade de arquivos também consome tempo de processamento — todo o sistema pode ficar significativamente mais lento durante a realização da tarefa.

Para não ser uma “coisa chata” na sua vida, contudo, o backup eficiente precisa ser automático e rodar em background, ou seja, ser executado nos bastidores — de preferência, em um horário em que você não esteja usando (muito) o computador.

fita cartuchos dell ultrium
O backup incremental é demorado na primeira vez em que é executado, mas é rápido nas outras execuções.
Isto ocorre por que consiste em apenas adicionar arquivos novos ou que foram alterados, desde a última vez em que foi feito. O resto é ignorado.

Como fazer o backup incremental com o comando tar

Se você tiver algum dúvida extra, leia o post “9 exemplos de uso do comando tar“.
Para realizar um backup simples de um diretório no sistema rode o tar, seguido do nome desejado para o arquivo de backup e do nome do diretório a ser copiado:

tar cvf justincase-backup-2afeira.tar /home/justincase

No comando acima:

  • a opção ‘c’ indica que você deseja comprimir/copiar os arquivos do diretório para dentro de um só arquivo de backup.
  • a opção ‘v’ indica que você deseja ter feedback sobre a execução da tarefa. Você pode usar ‘vv’ ou ‘vvv’ e tornar o comando ainda mais verboso.
  • a opção ‘f’ deve preceder o nome do arquivo que vai abrigar o backup.

Há outras formas de usar este mesmo comando. As opções, por exemplo, podem ser dadas separadamente:

tar -c -v -f justincase-backup-2afeira.tar /home/justincase

Para listar os arquivos incrementais, durante o processo, inclua a opção ‘-g’ à linha de comando.
É uma boa prática acrescentar a opção de compressão ao seu comando de backup com o tar:

  • você pode usar a opção ‘a’ para determinar automaticamente qual o programa/sistema de compressão será usado sobre o arquivo — baseado na sua extensão. Portanto se o arquivo tiver a extensão .tar.bz, o tar irá entender que deve usar o bzip para comprimí-lo.
  • você pode indicar manualmente o nome do programa de compressão com a opção ‘I’.
  • as opções de compressão mais comuns são ‘j’ (bzip2), ‘z’ (gzip), ‘Z’ (compress) e ‘J’ (xz). A primeira tem uma taxa de compressão melhor.
  • outras opções possíveis, são ‘–lzip’, ‘–lzop’ e ‘–lzma’.

Lembre-se que arquivos MP3, MPEG, JPEG – entre outros tipos de arquivos de mídia – já estão compactados e, com eles, não é possível obter uma taxa de compressão significativa.

Arquivos comprimidos são transferidos mais rápido pela rede ou para dentro da mídia de backup.
Por outro lado, o processo de compressão/descompressão pode sobrecarregar temporariamente o sistema.

ibm flash backup drive
Para ver o conteúdo do arquivo, use a opção ‘t’:

tar tvf meubackup.tar.bz

Para recuperar o backup use a opção ‘x’ (extract). Neste caso, é importante informar ao tar sobre o método/programa usado para realizar a compressão:

tar xvjf meubackup.tar.bz

No exemplo acima, sei que preciso usar a opção ‘j’, por que a extensão do arquivo indica que ele foi comprimido com o bzip.
Ler a extensão de um arquivo, não é um meio muito confiável para determinar os padrões de compressão utilizados — por que a pessoa que realizou o backup é livre para escolher a extensão que ela quiser.
Você pode usar a opção ‘a’ ou nada, para permitir que o próprio tar descubra o método de compressão utilizado:

tar xvaf meubackup.tar.bz

ou

tar xvf meubackup.tar.bz

Como testar e obter informações de arquivos comprimidos com o tar

Você pode usar o comando file para tentar determinar o método de compressão utilizado em um arquivo:

file --brief ../backup-scripts.tar.bz 

bzip2 compressed data, block size = 900k

Ou, ainda,

file --uncompress --brief --mime backup-scripts.tar.bz 

application/x-tar; charset=binary compressed-encoding=application/x-bzip2; charset=binary

Pode também testar o arquivo com as opções já dadas:

tar -tvf meubackup.tbz

A extensão tbz, usada no exemplo acima, também é muito comum em arquivos tareados, comprimidos com o bzip2.
Testar os seus backups é tão importante quanto fazê-los.
Seria muito ruim descobrir que o backup não funcionou ou teve problemas, justo na hora em que você vai precisar dele.
hdd storage backup

A melhor hora para testar seus backups é quando você não precisa deles.
Assim, é possível analisar a situação com calma e determinar exatamente o que é que não está funcionando neste processo — e corrigir os problemas.

Como criar um script de backup

O script, que segue, reúne basicamente o que foi visto até aqui, neste artigo.
Entendo que você possa necessitar de algo mais complexo, para atender às suas necessidades particulares ou profissionais. Neste caso, ele pode servir como um ponto de partida para chegar aonde quer.
Não esqueça de alterar as variáveis de ambiente e os nomes de diretórios e arquivos, para refletir a sua realidade.

Script de backup


#!/bin/bash
# Descrição = Realiza cópia de segurança de arquivos importantes
# Criado em 20 de Abril de 2017
# Autor: Elias Praciano
# Version 1.0
# 
## cria as variáveis para compor o nome arquivo de backup
# atribui à variável DATA os valores de
# data e hora atuais, para usar
# na composição do nome do arquivo
DATA=$(date +'%d-%m-%Y')
#  Define o nome do arquivo de backup
ARQUIVO=backup-$DATA.tar.gz
# cria a variável contendo o local de origem dos arquivos
ORGDIR=scripts
# cria a variável contendo o local de destino
DESDIR=backup
# comando de criação do backup
tar -cvvjf $DESDIR/$ARQUIVO $ORGDIR

Leia sobre como adicionar uma data ao nome do seu arquivo, se quiser ter mais flexibilidade nesta escolha, dentro do script
Antes de poder ser executado, o script precisa obter permissão de execução. Veja como fazer isto:

chmod +x ./nome-do-script-de-backup.sh

Agora, que ele já está pronto para rodar, teste-o:

./nome-do-script-de-backup.sh

Leia também por que usamos ./ na frente de alguns arquivos executáveis no Linux.

Referências

http://broexperts.com/how-to-perform-incremental-backup-in-linux-using-tar-utility/.

Publicado por

Elias Praciano

Autor de tecnologia (livre, de preferência), apaixonado por programação e astronomia. Fã de séries, como "Rick and Morty" e "BoJack Horseman". Me siga no Twitter e vamos trocar ideias!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *