Páginas

domingo, 15 de maio de 2022

36. Backup Incremental com TAR

O programa GNU Tar tem muitas utilidades para arquivamento, desde um simples tarball sem compressão, até associação com compressores robustos como o XZ. O que pouca gente sabe é que dá pra usá-lo como ferramente de backup incremental.

Backup todo mundo sabe o que é: uma cópia de segurança de seus arquivos. O Backup Incremental surge para sanar os problemas oriundos de um backup completo. O maior deles é ter que fazer uma cópia completa do arquivo que, além de demorado, pode consumir muitos recursos computacionais.

O primeiro passo do backup incremental é realizar justamente o backup completo, a cópia completa de todos os arquivos. Depois disso, os backups subsequentes serão parciais: a instrução incremental verificará quais arquivos foram alterados, adicionados ou excluídos desde a última interação de backup e, em havendo alteração, ele realiza o backup contendo apenas o que foi alterado.

A principal vantagem é que o processo de cópia de backup é muito mais rápido que um backup completo. A desvantagem é que a restauração do backup pode ser muito lenta, pois é necessário começar pela restauração do último backup completo, e de todos os incrementos subsequentes.[fonte]

Ainda sim, me parece uma solução muito vantajosa ao backup convencional, principalmente para nós usuários domésticos.

Usando o TAR

Digamos que eu tenha uma pasta chamada Biblioteca, repleta de arquivos de PDF em sua maioria, com alguns ebooks, mobis e textos (odt, docx etc). E que essa pasta esteja localizada em /home/daniel/Biblioteca e eu queira fazer a cópia de backup em outra partição (ou HD), localizada e montada em /media/BackupHD.

Partindo do pressuposto que eu esteja no terminal, e esteja na pasta /home/daniel (não em /home/daniel/Biblioteca), eu digito o comando:

$ tar -cvv -g /media/BackupHD/Biblioteca.snar -f /media/BackupHD/Biblioteca_1.tar Biblioteca/

Isso vai criar dois arquivos em /media/BackupHD:

Biblioteca.snar
Biblioteca_1.tar

O primeiro, com extensão snar, significa snapshot tar. Ele contém as informações sobre as datas de modificação e lista de arquivos do backup e dos incrementos.

O segundo, com extensão tar, é o nosso backup completo propriamente dito. O número 1 é para indicar que ele é a primeira cópia, os incrementos podem receber números na sequência. O usuário é quem escolhe esse nome. Você pode optar por inserir a data e a hora, em vez de um número. Basta trocar o nome do arquivo de backup de:

Biblioteca_1.tar

para

Biblioteca_$(date +%y%m%d_%Hh%Mm).tar

É estranho, mas quando salvo, ele vai te dar o ano, mês e dia do backup, ficando algo como:

Biblioteca_220515_12h34m.tar

Vamos prosseguir com algumas explicações.

-c, --create
    Cria um novo arquivo-tar.
    
-v, --verbose
    Lista verbosamente os arquivos processados.
    O duplo (-vv) dá ainda mais detalhes.
    
-g, --listed-incremental=ARQUIVO
    Cria o arquivo de snapshot no caminho especificado.
    
-f, --file=ARQUIVO
    Cria o arquivo TAR no caminho especificado.
    
Biblioteca/
    É a pasta a ser copiada/backupeada.

Para fazer um segundo backup, isto é, o incremento, basta mudar o nome do arquivo de destino declarado em -f. Já o snapshot deve ser o mesmo:

$ tar -cvv -g /media/BackupHD/Biblioteca.snar -f /media/BackupHD/Biblioteca_2.tar Biblioteca/

Percebam que só mudei a numeração, de 1 pra 2. Teremos agora 3 arquivos:

Biblioteca.snar
Biblioteca_1.tar
Biblioteca_2.tar

Para listar o conteúdo de cada arquivo TAR:

$ tar -tvv -f Biblioteca_1.tar

Para restaurar um backup:

$ tar -xvv -g /dev/null -f Biblioteca_1.tar
$ tar -xvv -g /dev/null -f Biblioteca_2.tar

Você tem que restaurar todos os arquivos se quiser restaurar o backup mais atual. A não ser que você queira, intencionalmente, restaurar uma versão mais antiga.

DICA: faça uma cópia do arquivo snar antes de fazer um backup incremental, porque você vai cometer erros antes de aprender a usar essa ferramenta direito.

Acelerando o Backup com o PIGZ

PIGZ e UNPIGZ são ferramentas para compactar e descompactar arquivos em formato GZIP, mas usando multithreading (vários núcleos). Por padrão o TAR não tem suporte a multithreading, por isso é lento. Se sua máquina tiver vários núcleos ou threads, pode valer à pena compactar com GZIP usando o PIGZ pois, mesmo perdendo tempo compactando, o uso de vários threads permite acelerar em muito o processo de backup. Eu obtive ganhos de 23% na velocidade, embora isso dependa muito de quantos threads a CPU tenha, e de quão rápida ela é. Faça o teste você mesmo e decida-se.

Instale:

$ sudo apt install pigz

Para criar, basta acrescentar a opção -I pigz. Não esqueça a extensão .tar.gz:

$ tar -cvv -I "pigz --fast" -g /media/BackupHD/Biblioteca.snar -f /media/BackupHD/Biblioteca_1.tar.gz Biblioteca/

E, para restaurar, -I unpigz:

$ tar -xvv -I unpigz -g /dev/null -f Biblioteca_1.tar.gz

Nenhum comentário:

Postar um comentário