Desmistificando alternativas de restauração e backup em distros Linux

 Por Ciro Mota |  21, Outubro 2021 |  Tempo de leitura aproximadamente 11 minutos.
 Edições: Adição da ferramenta Brtfs-Assistant. Em 7, Agosto 2022.

Olá galerinha, como vocês estão? Espero que todos estejam muito bem.

Acredito que quem ainda não passou, um dia irá passar por perrengues relacionados a backup. As velhas máximas e ditos populares fazem todo o sentido quanto se tratam deles: “Quem tem dois, tem um. Quem tem um, não tem nenhum”. Dentre tantos outros.

E tudo isso porque você esqueceu aquele arquivo maroto muito importante na área de trabalhou e o sistema deu pau e você não teve tempo de recuperar ou gerar cópias.

Você sabia que somente o fato de copiar no bom e velho Ctrl C + Ctrl V um desses arquivos importante em seu HD e copiá-lo em um pendrive, já pode ser considerado um backup? Idem se você utiliza serviços de nuvem como Google Drive, OneDrive e outros copiando os arquivos para dentro deles. E tudo isso te poupará de muitas dores de cabeça se seu sistema morrer seja lá por um problema ou outro.

Neste artigo não venho te dar uma receita para um backup perfeito, isso porque existem inúmeras formas. Venho te aproximar de algumas alternativas que já estão ou podem estar integradas na sua distro e que você ainda não tira o devido proveito delas. Seja para backups e/ou snapshots (pontos de recuperação) o backup não é o “bicho de sete cabeças” que ele aparenta ser.

Feito é melhor que perfeito

Sabia que é possível automatizar rotinas para backups com um shell script simples? Você consegue fazer isso com maestria. Veja nesse vídeo como pode ser uma tarefa muito simples que você pode implementar no seu dia a dia, até mesmo incrementar funções a ele.

Timeshift

O Timeshift não é exatamente um utilitário de backup mas por ser bem versátil e poderoso podemos até tratá-lo como tal. Creio que o mais notório em termos de visibilidade que ele tem é no Linux Mint, em que na tela de boas vindas o próprio sistema já te encoraja a configurá-lo. E que hoje tem o seu desenvolvimento mantido pela equipe do próprio Mint.

Tela de boas vindas do Mint

Ainda dentro do Linux Mint no Gerenciador de Atualizações você terá a opção de Snapshots do sistema, onde será encaminhado também para o Timeshift e suas configurações. Eles possuem função semelhante (pra não dizer igual), ao que a Restauração do Sistema teria no Windows Update por exemplo e inclusive podemos tirar ainda mais proveito dessa opção. Falaremos disso logo mais abaixo.

Não há segredos, mas se quiser dar uma olhada em algum vídeo, aqui tem um.

Você deve criar agendamentos para que a Timeshift funcione de forma transparente e sem interações, mas se você mesmo quiser rodá-la sob demanda, com uma linha de comando simples o seu snapshot, de qualquer pasta, poderá ser realizado:

sudo timeshift --create --target /home/teste --comments "A new day backup" --tags O

Neste caso eu estou fazendo um backup da pasta home inteira do meu usuário com um comentário qualquer e com uma tag "O" que representa “Outros” de acordo com a documentação. Outras tags podem ser utilizadas, “B,H,D,W,M” para “Weekly, Daily, Monthly, Boot, Hourly”. Se prefere personalizar um comando e adicioná-lo ao crontab, você também terá essa opção.

A Timeshift está presente em todas as distros incluindo versões server, a funcionalidade é a mesma em todas elas exceto a parte gráfica além de possível de controlá-la por linha de comando conforme vimos logo acima. Recomendo você conhece-la, ler a sua documentação e adotá-la.

rdiff-backup com RClone

rdiff com RClone podem formar uma dupla poderosa para backups. O que a primeira ferramenta faz é gerar um backup espelho e incremental de pastas para uma unidade de rede ou armazenamento local (desde que não seja no mesmo disco e isso em si não seria um backup, obviamente). E com a segunda você tem a possibilidade de montar uma unidade de rede no PC, de serviços de cloud como Google Drive, OneDrive, Amazon S3 entre outros.

O que você precisa para executar a rdiff-backup é somente definir a origem e o destino. Algo como:

rdiff-backup wallpapers/ bak/

Neste caso acima estou sendo chato e criando um backup local de uma suposta pasta de wallpapers (muita gente ainda leva isso muito a sério). Caso seja um diretório de rede aqui podemos utilizar uma sintaxe muitíssimo parecida com a que usamos para cópias entre hosts diferentes via scp.

Consulte estes exemplos e a documentação e verá como ela é simples de lidar. Adapte-a para sua necessidade.

Já para que a Rclone execute você precisará definir as suas credenciais de acesso aos serviços através de um prompt. Não é tão necessário que você defina todos os itens do assistente exceto se sua necessidade requerer assim. Caso precise de um guia aqui você terá um bem ilustrado. Com a Rclone é possível criar transferências criptografadas, deste modo o seu backup estará seguro desde a origem até o destino.

Unindo os dois mundos, teríamos algo como linha a linha:

rclone mkdir Google-Enc:enc/bak
rclone sync /home/teste/bak/ Google-Enc:enc/bak/
rdiff-backup wallpapers/ bak/
rclone lsf Google-Enc:enc/bak
  • Na primeira linha crio uma pasta na minha conta Google (nome-da-conta-local:nome-remoto) com o nome de bak. Assemelhando-se ao diretório local.
  • Na segunda linha habilito o sync da pasta local para a pasta remota.
  • Na terceira linha tem-se a execução da ferramenta rdiff-backup seguindo o mesmo exemplo de logo acima.
  • Na última linha temos a visualização do conteúdo da pasta remota.

Visão da estrutura de arquivos e comparação entre pasta local e remota

Devido a opção de criptografia essa é uma opção que poderá atender a muitos públicos. Você pode tentar adotar isso, automatizando inclusive.

BorgBackup

A (ou o) Borg suporta backups diários com deduplicação, compressão e encriptação e o melhor de tudo é que trata-se de uma ferramenta open source e disponível em quase todas as plataformas do mundo nix. Ela possui uma documentação bem densa mas verá que não requer uma curva de aprendizado tão grande assim pra tirar proveito do que ela tem pra oferecer.

Em novamente meu exemplo hipotético resolvi utilizar a ferramenta para backup da minha suposta pasta de wallpapers. O que nós precisamos é:

borg init --encryption=none /home/teste/borg/
borg create --progress /home/teste/borg::bkp1 /home/teste/wallpapers/

Na primeira linha estou definindo o diretório borg como o diretório final dos backups. Na segunda linha é o backup propriamente dito onde a sintaxe é caminho/para/o/diretório/de/backup::nome_do_backup /caminho/da/origem/do/backup (sim, exigido os dois dois pontos).

Ao final nós podemos executar o comando borg list /home/teste/borg/ para visualizar os backups contidos naquele diretório.

Visão da execução dos comandos com a ferramenta Borg

A ferramenta também suporta backups para unidade de rede, permitindo inclusive que ela mesma monte essa unidade em seu PC. Se liga só nesses demais exemplos simples. Te convido também a se aprofundar da documentação.

Vorta

A Vorta é um front-end para a BorgBackup que citamos imediatamente acima além de open source. Ela pode prover tanto interação por GUI quanto por linha de comando, é o seu uso que vai dizer o modo de utilização.

Na primeira guia e para iniciar a configuração para novos backups você precisará definir um repositório local ou remoto que é como a ferramenta trata o local para salvamento. Em adição a isso uma senha de mais que nove caracteres é exigida para segurança. Nesse caso em específico e hipotético estou adicionando um repositório na minha própria pasta /home.

Adição de repositório local na ferramenta Vorta

Em seguida na segunda guia você deve definir a origem do backup que deseja efetuar. Novamente no meu exemplo escolhi a pasta de “Documentos” mas você também poderia escolher arquivos individuais.

Adição de pasta ou documento de origem para backup com a ferramenta Vorta

Na terceira guia você pode escolher o tipo de agendamento para execução do backup, se manual ou automático com periodicidade além de escolher executar comandos pré e pós backups.

E na penúltima guia teremos uma lista com os backups já realizados além de opções para extração, compactação entre outras.

Lista dos backups já realizados com a ferramenta Vorta

Daria para recorrer a servições como a RClone que cito logo acima ou ferramentas como a Insync para montar uma pasta de um serviço de cloud localmente e ter uma rotina de backup automatizado para essa pasta.

Consulte a documentação para mais detalhes e ideias de utilização.

Déjà Dup

Não tenho a menor ideia de como pronunciar direito esse nome contudo temos aqui mais uma ótima ferramenta para backups e essa desenvolvida pelo pessoal do GNONE. Presente em praticamente todas as distros ela é super intuitiva (até mais que a Timeshift) e você não teria nenhum problema em usá-la. A ferramenta é tão simples que você só encontrará algo mais técnico caso você tenha um backup realizado nela e ela por algum motivo não funcione, confira a pequena documentação.

Visão geral da ferramenta deja dup

Timeshift + BTRFS

BTRFS é um novo sistema de arquivos que tem tudo para ser um substituto do ext4 nas distros Linux por sua versatilidade como melhor compatibilidade com unidades flash (SSD’s e NVME’s), suporte para snapshots que falamos mais acima e entre outros.

Algumas distros já o adotaram como sistema de arquivos nativo dentre elas o Fedora a partir da versão 33 além do Manjaro. Aqui chamo a atenção para o Manjaro que atualmente tira proveito da função de snapshots do sistema de arquivos juntamente com a Timeshift para fornecer um sistema robusto para falhas já out-of-the-box para o usuário.

Timeshift snapshot no Manjaro

Mas graças as maravilhas do mundo Open Source através de andanças pelo GitHub descobri um projeto onde podemos portar este mesmo conceito para distros baseadas no apt, ou seja o Debian/Ubuntu e seus derivados. Mas há uma observação importante, o sistema operacional deverá ser obrigatoriamente formatado e instalado sob um disco com sistema de arquivos em BTRFS.

Conheçam o repo, testem e usem se gostarem:

timeshift-autosna

Apesar de não ter novos commits há mais de um ano eu consegui testá-lo no Ubuntu 21.10 e o funcionamento foi bem satisfatório, seguindo exatamente o que ocorre lá no Manjaro.

Instalação do timeshift-autosnap no Ubuntu

Em outras palavras, ao rodar o apt ou o pamac para atualizar o sistema será criado um snapshot do estado atual antes de aplicar as atualizações, desta forma caso algo dê errado haverá como voltar ao estado anterior com a ajuda do Timeshift. De novo como eu disse acima, função semelhante ao que a Restauração do Sistema faz no Windows Update.

Timeshift snapshot no Ubuntu

No exemplo acima eu usei a GUI do Timeshift para restaurar para um estado anterior após um update do sistema. Utilizei o pacote ssh como exemplo. Observem pela versão do pacote o funcionamento do snapshot.

Até podemos usar a RClone para salvar os snapshots em armazenamento na nuvem mas pelo tamanho dos arquivos e não ser recomendável a compactação devido ao uso de hard links, não será uma boa prática.

Snapper

Em adição a Timeshift e também tirando proveito do BTRFS (infelizmente o suporte a ext4 foi descontinuado) temos a ferramenta Snapper desenvolvida pela galera do OpenSUSE. Sua funcionalidade é muito parecida e muito robusta. Infelizmente não pude testá-la à fundo mas recomendo a lida na documentação (infelizmente em inglês) produzida pelo pessoal do Arch Linux ou esta desenvolvida pelos mantenedores para entender o seu funcionamento.

Ela também está disponível em todas as distribuições.

Btrfs-assistant

Mais um projeto que se aproveita das facilidades do BTRFS é o Btrfs-Assistant onde através de GUI é possível administrar snapshots e se utiliza a Snapper por debaixo do capô. Se você utiliza Fedora pode instalar diretamente através dos repostórios através do sudo dnf install btrfs-assistant. Para distros base Debian será necessário compilar e instalar essa ferramenta e se você usa Arch basta usar o AUR.

Os snapshots podem ser programados para os subvolumes que você possuir instalado e não se restringindo a subvolumes começados com @ conforme utilizado em instalações de outras distros.

Na guia Snapper Settings clique em “New”, defina um nome e o ponto de montagem o qual deseja o snapshot.

Configurações do ponto de montagem da Btrfs Assistant

Após a configuração você terá a sua disposição o agendamento para realização dos snapshots.

Configurações de agendamento do ponto de snapshot da Btrfs Assistant

Colocando um parenteses, no Arch Linux nós conseguimos utilizar um utilitário chamado snap-pac no qual a cada movimentação de atualização, instalação e remoção de pacotes ele é executado e produzirá um snapshot automático, não sendo necessário agendamento nem muito menos intervenção manual. Devido a natureza dos snapshots seria excelente se essa ferramenta também produzisse comportamento parecido. Caso seja um Arch User, tá ai uma alternativa.

Voltamos na guia Snapper e ao clicar em “New” nós podemos executar o snapshot daquele momento.

Execução de snapshot manual da Btrfs Assistant

Colocando como exemplo do funcionamento do snapshot vemos o pacote rpm, observe os campos “Versão” e “Release”, porque não dizer também a hora do print.

Informação do pacote rpm no snapshot criado pela Btrfs Assistant

Neste segundo print temos o mesmo pacote que sofreu um update de versão. De novo, observe os campos “Versão” e “Release” e também a hora do print.

Informação do pacote rpm após rotina de atualização

Sendo assim caso alguma atualização tivesse gerado algum problema ou por algum motivo tenha gerado alguma falha ou instalabilidade nós podemos então restaurar o sistema para o ponto anterior. Na guia Snapper e em Browser/Restore selecionamos o snapshot que foi gerado anteriormente e por fim clicamos no botão de “Refresh”. Você pode definir um nome para salvar a operação.

Início da restauração com a ferramenta Btrfs Assistant

Após autorizado será emitida a informação para reiniciar imediatamente após.

Confirmação da restauração com a ferramenta Btrfs Assistant

E por fim após reiniciar caso nós fomos verificar o mesmo pacote rpm citado, de novo, mais uma vez, observe os campos “Versão” e “Release” e também a hora do print e isso atestará o funcionamento da ferramenta.

Informação do pacote rpm após rotina de atualização

Mais uma ótima ferramenta para restaurações no estilo Windows.

Conclusão

Existe um mito muito grande sobre backup e suas dificuldades, restauração do sistema ainda é um pouco inexplorado no pinguim, neste artigo mostrei apenas algumas alternativas muito simples e outras já dentro da própria distro dentre inúmeras outras tão fáceis que podem ser utilizadas no seu dia a dia.

E você qual artifício usa para backups? Conhecia algum dos tópicos que listei? Me deixe saber logo abaixo nos comentários. Assim que eu for encontrando novas alternativas irei editando esse post e no futuro quem sabe não tenhamos uma biblioteca interessante?!

Espero que tenha sido útil de alguma forma.

Até mais!