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

 Por Ciro Mota |  21, Outubro 2021 |  Tempo de leitura aproximadamente 10 minutos.
 Edições: Revisão textual. Em 26, Fevereiro 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 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. 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).

Feito é melhor que perfeito

É possível automatizar rotinas para backups, um shell script simples consegue fazer isso com maestria. Veja nesse vídeo como pode ser uma tarefa simples no seu dia a dia.

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.

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”. 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, mas 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 para seus arquivos

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/ back/

Neste caso acima estou sendo chato e criando um backup local de uma suposta pasta de wallpapers. 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:

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, 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

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

Borg

Essa dica veio do Ricardo Ferreira, o nome dela não é lá tão sugestivo mas olha, é uma ferramenta fantástica. A 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.

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

Visã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.

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

O poder do BTRFS

Timeshift + BTRFS:

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

Algumas distros já o adotaram como como sistema de arquivos nativo, como o Fedora a partir da versão 33 e no 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

Porém, 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.

Fedora Silverblue o inquebrável

Sei que falar do Fedora Silverblue não tem nada haver com backups, mas já que falamos de snapshots acima, então aqui valeria a discussão do quanto sistemas imutáveis como é o caso do Fedora Silverblue podem ser uma mão na roda para PCs corporativos. A característica do sistema imutável é que programas não são instalados diretamente no sistema e sim, são adotados o conceito de containers, aqui leia-se, os programas no formato de empacotamento Flatpak.

Para PCs corporativos isso faz todo o sentido já que somente poucas e principais aplicações seriam usadas, diminuindo os pontos de falha e trazendo uma robustez maior para o sistema operacional. A cada nova atualização de componentes do sistema, é criado um novo snapshot, ondemos podemos retornar a qualquer momento em caso de falhas.

  • Ahh, mas Ciro, eu tenho uma aplicação, um belo monólito, se o sistema só aceita Flatpaks e uma lista pequena de programas do repositório, como eu poderia usar?
  • Aqui temos um pulo do gato.

Apesar disso estar previsto na documentação, eu particularmente acho que isso quebraria toda característica do sistema. Mas sim, podemos utilizar de um novo container sem restrições para rodar nossas aplicações nele. Grosso modo falando, um outro Fedora dentro de um Fedora.

A exemplo do Chrome rodando em um Container que já tratei aqui anteriormente, a toolbox permite a utilização de muitas outras ferramentas dentro de um mesmo espaço. No meu exemplo decidi pegar o Brave Browser, que não está nativamente nos repositórios da distro e é preciso adicionar um PPA para download.

Instalação do toolbox no Fedora

Instalação do toolbox no Fedora

  • Mas se a aplicação roda em container, não haveria atalhos e isso é ruim para um usuário final.
  • Praticamente tudo é possível no Linux, amigo.

Você pode criar no host um arquivo de terminação .desktop em $HOME\.local\share\applications e editar a linha Exec para:

toolbox run --container <nome-do-container> brave-browser-stable %u

O comando chama a função toolbox no modo de execução, com o nome do container e o nome da aplicação.

Ou se você for preguiçoso e perigoso como eu, copia o arquivo firefox.desktop de /usr/share/applications no host, para a pasta $HOME\.local\share\applications e apenas edita apenas o ícone e o caminho de execução para o que eu cito acima, de acordo com o seu caso.

Com isso você terá o seu sistema imutável com aplicações de fora. Conheça a documentação do Silverblue e veja se poderá tirar algum proveito dele no seu dia a dia.

Tudo isso que foi falado acima, também poderá ser executado no seu mais novo irmão, o Fedora Kinoite (pessoal do KDE tem uma criatividade peculiar pra nomes). Por se tratar da interface KDE Plasma, essa é uma solução que pra mim faria todo sentido o seu aproveitamento em empresas, devido a curva de adaptação bem menor de um usuário do Windows. Recomendo conhecer ambas.

Conclusão

Existe um mito muito grande sobre backup e suas dificuldades, restauração do sistema ainda é um pouco inexplorado no pinguim, neste arquivo mostrei apenas algumas alternativas muito simples, 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!