ArkVault: uma GUI para o BorgBackup em que o Próprio Drive Reconstrói sua Máquina Linux

Publicado em
11 julho 2026
Por
Jacob Lloyd — escrito com ajuda de IA, depois do projeto
Tempo de leitura
10 min de leitura

Em termos simples: Um programa de backup gratuito para computadores Linux, com uma janela simples de apontar e clicar. Ele salva uma cópia criptografada dos seus arquivos importantes em um drive externo, e o próprio drive carrega um guia de recuperação passo a passo — então, se o seu computador morrer, uma máquina totalmente nova pode ser reconstruída direto a partir do drive.

Conecte um drive de backup a uma instalação Linux zerada — nada configurado, nada nele — e receba de volta mais do que seus arquivos. O ArkVault grava um kit de restauração guiada no drive, ao lado do backup criptografado, então o próprio drive sabe como reconstruir a máquina: dotfiles, chaves SSH, links simbólicos de atalhos, unidades systemd, tudo.

Resumo

  • O que é: uma GUI em GTK4 (mais uma CLI completa sem interface gráfica) em torno do BorgBackup, que grava um manifesto de mapa de instalação e uma cópia de si mesma em todo drive de backup.
  • Quanto custa: grátis, licença MIT. Zip do código abaixo. Sem conta, sem nuvem.
  • O que você precisa: Linux com GTK4/libadwaita (já vem de fábrica no Fedora/GNOME, uma linha de apt no Debian/Ubuntu), um drive de sobra e uma noite para editar o catálogo do que vale a pena capturar.
  • O que você acaba tendo: um backup criptografado e deduplicado mais um assistente de restauração que roda direto do drive em uma máquina sem nada instalado. Rodei o exercício de restauração de verdade, não só o caminho feliz.

O que você acaba tendo

Primeiro a ferramenta, a teoria depois. Estas imagens vêm de uma execução em sandbox com dados fictícios, não da lista de arquivos da minha máquina real.

Janela principal do ArkVault: seletor de destino de backup, quatro alternadores de perfil com estimativas de tamanho ao vivo, um selo de cadeado nos perfis Settings e Dotfiles, e um botão Back up everything important

Quatro perfis, estimativas de tamanho ao vivo, um selo de cadeado onde quer que um perfil toque itens marcados como secretos, como chaves SSH. Um botão faz o backup de tudo que você ativou.

Assistente de restauração do ArkVault mostrando itens do mapa de instalação agrupados por categoria — Projects e Settings — com caixas de seleção, um ícone de cadeado no item ssh e um botão Set options

Este é o ponto central de toda a ferramenta: o assistente de restauração lê o mapa de instalação direto do drive e mostra exatamente o que foi capturado, agrupado e marcável, com ícone de cadeado em qualquer coisa sensível. Nada de blob misterioso.

Janela de Backup por Arrastar e Soltar do ArkVault, com uma coleção nomeada, uma área para soltar arquivos e pastas, e botões Add files ou Add folder

Também existe um modo de arrastar e soltar para coleções avulsas que não pertencem ao catálogo principal.

MétricaValor
Código~7.100 linhas de Python em 48 arquivos
Dependências pipZero — o GTK vem do sistema, o requirements.txt está vazio de propósito
Suíte de testes82/82 verificações passam, sem precisar de pytest
Tamanho do zip108 KB, 53 entradas (o binário do Borg não vem incluso — o instalador o baixa)
Resultado do exercício de restauração8/8 itens chegaram corretamente em um segundo $HOME, zerado
LicençaMIT, grátis

O que o Borg realmente entrega

O ArkVault não é seu próprio mecanismo de backup. É um front-end em torno do BorgBackup, que faz a parte difícil:

  • Criptografia: repokey-blake2. A chave mora dentro do repositório, protegida pela sua senha. Quem roubar o drive não leva nada.
  • Deduplicação: fragmentação definida por conteúdo, então dez snapshots de um diretório home que muda devagar não custam dez vezes o espaço.
  • Compressão: zstd no nível 6. Uma boa redução sem deixar o backup lento como melaço.
  • Retenção: o borg prune mantém 7 diários, 4 semanais, 6 mensais por padrão (configurável), então snapshots antigos vão saindo em vez de encher o drive.

O ArkVault soma a parte com a qual o Borg não se importa: quais arquivos importam, quais permissões eles precisam e o que precisa acontecer depois que os arquivos chegam, para a máquina realmente voltar a funcionar.

Por que uma distro imutável forçou um design diferente

Construí isso para uma máquina Bazzite — Fedora imutável e atômico, raiz somente leitura. Essa restrição moldou a ferramenta inteira:

  • Tudo se instala dentro de ~/.local. Nada toca em /.
  • O venv é construído com --system-site-packages, para que o GTK4/PyGObject venha do sistema hospedeiro em vez de compilar bindings contra uma base somente leitura.
  • pip install borgbackup simplesmente não funciona aqui — sem cabeçalhos do liblz4, sem wheels compatíveis — que é a razão real pela qual o instalador baixa o binário standalone oficial do Borg, um build feito com PyInstaller e o FUSE já embutido.
  • Nenhum sudo em lugar nenhum. A única operação que precisa de root — formatar um drive — passa por um prompt polkit/pkexec.

A ideia central: o drive reconstrói a máquina

Ferramentas de backup comuns devolvem seus arquivos. Você ainda tem que lembrar onde cada coisa foi parar e quais unidades systemd reativar. O ArkVault grava esse conhecimento no drive, a cada backup:

  • arkvault-repo/ — o repositório Borg criptografado.
  • ArkVault-App/ — uma cópia autocontida do próprio ArkVault, código-fonte e instalador, copiada de forma atômica (diretório temporário, depois renomeado), para que uma cópia interrompida nunca deixe um app pela metade no drive.
  • arkvault-install-map.json mais RESTORE-README.md — um manifesto de tudo o que foi capturado e um passo a passo em texto simples, que você pode ler sem ferramenta nenhuma.

O mapa de instalação registra que um arquivo é secreto, nunca o seu conteúdo. O drive sabe o que está carregando sem revelar nada dele.

O que uma execução de backup realmente faz

Uma execução de backup é uma linha reta: descobre o que o catálogo aponta (caminhos ausentes são pulados), opcionalmente coloca serviços com muita escrita em repouso para que bancos de dados ativos cheguem consistentes, borg create, borg prune, e então grava o kit de restauração no drive.

As partes paranoicas

Este é o código que consumiu tempo:

  • A trava de formatação recusa o disco do sistema. Formatar o drive errado é o desastre clássico das ferramentas de backup. O ArkVault resolve as cadeias LUKS/LVM de device-mapper até os discos físicos, percorrendo /sys/class/block/*/slaves — o nome do mapper de uma raiz criptografada não se parece em nada com o disco por trás, então checagens ingênuas de nome deixam passar. Se não conseguir enumerar os discos do sistema de jeito nenhum, ele falha fechado e se recusa a formatar qualquer coisa. Você ainda digita o nome exato do dispositivo para confirmar.
  • Contenção de caminho na restauração. Um mapa de instalação malformado ou adulterado não consegue escrever fora do home de destino: links simbólicos ancestrais são resolvidos, o link simbólico final é deliberadamente não seguido, e destinos de reimplantação que tentam escapar do home são recusados.
  • Higiene de segredos nos logs. A senha e qualquer coisa registrada como secreta são removidas por correspondência literal, mais barreiras de expressão regular para padrões como apiKey: e Bearer.
  • A folha de recuperação. O primeiro backup mostra uma folha de senha com texto não selecionável — sem cópia acidental para a área de transferência — e o botão de dispensar fica desativado até você marcar "Salvei minha senha". A folha nunca é gravada no drive. Perdeu a senha, perdeu o backup. É isso que criptografia de verdade significa.
  • FAT32 é recusado como destino de repositório — o limite de 4 GB por arquivo quebra o Borg totalmente. exFAT é permitido com um aviso, já que o Borg guarda metadados Unix internamente de qualquer forma.
  • Arquivos vazios são recusados. Se todos os caminhos de origem sumiram (drive desmontado, erro de digitação no catálogo), o ArkVault se recusa a gravar um arquivo vazio que pareceria um sucesso.
  • Verificar é com você, na hora que quiser. O borg check roda pela interface ou pela CLI como uma checagem real de integridade, e "Browse snapshot" monta um arquivo somente leitura via FUSE, para você poder vasculhar antes de confiar nele.

Configurando

Você precisa dos bindings PyGObject do GTK4/libadwaita, do udisks2 e do polkit. De fábrica na família Fedora/GNOME; uma linha no Debian/Ubuntu:

sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1

Depois o instalador, que é idempotente — seguro para rodar de novo:

bash install.sh

Isso copia o app para ~/.local/share/arkvault, monta o venv com --system-site-packages, baixa o binário standalone oficial do Borg e coloca ~/.local/bin/arkvault mais uma entrada de área de trabalho. Depois:

arkvault probe

Tudo deveria dizer OK. O arkvault puro abre a GUI; o mesmo núcleo também comanda uma CLI sem interface gráfica:

arkvault probe|backup|restore|list|check

O único passo que realmente importa: editar o catálogo. O que vem por padrão é um exemplo genérico — core/discovery.py, profiles.py, core/quiesce.py, core/containers.py e core/installmap.py têm blocos marcados "EDIT ME". Uma lista bem pensada do que uma instalação nova não devolve sozinha é o cerne de tudo isso, e ninguém consegue escrever a sua por você.

Rode o primeiro backup, salve a folha de recuperação em algum lugar que não seja o drive de backup e clique em "Copy app to drive." Para execuções sem supervisão, há um modelo de timer de usuário systemd no README-SETUP; ele lê a senha do keyring ou de ARKVAULT_PASSPHRASE.

Provando que funciona de verdade

Um backup nunca testado com uma restauração é uma esperança, não um backup. Então, contra um $HOME falso:

  1. Descompactei o código-fonte, rodei o install.sh — download real do Borg, 27,9 MB.
  2. arkvault probe: tudo OK.
  3. arkvault backup de 3 perfis de exemplo em um diretório de rascunho no drive: 8 itens capturados, repositório inicializado com repokey-blake2, mapa de instalação + RESTORE-README + autopacote gravados.
  4. arkvault list, depois arkvault check: passou.
  5. arkvault restore em um segundo home zerado: todos os 8 itens chegaram nos caminhos certos, checklist manual impressa para o restante.

A suíte de testes sem dependências dá 82/82 na árvore exata que está no zip.

Pegadinhas

  • O zip corrige um bug que o script de instalação original tinha. Os releases do Borg no GitHub trazem uma assinatura GPG .asc, mas nenhum arquivo auxiliar .sha256, então a busca de checksum do instalador dava 404 e o set -e matava a instalação antes que o próprio fallback do script pudesse rodar. Corrigido aqui, mais uma variável de ambiente opcional ARKVAULT_BORG_SHA256 para fixar um hash conhecido como bom. Minha própria máquina nunca bateu nesse problema — meu binário do Borg já existia, então o ramo de download simplesmente nunca rodou.
  • FAT32 vai arruinar a sua semana em silêncio. O ArkVault detecta e recusa, mas muitos drives USB vêm assim de fábrica.
  • Uma execução travada deixa uma trava de repositório obsoleta. O borg break-lock a limpa (há um botão na GUI), e BORG_LOCK_WAIT=120 faz execuções sobrepostas esperarem em vez de falharem na hora.
  • SQLite ativo em modo WAL precisa que os arquivos db, wal e shm sejam capturados juntos, ou que o serviço seja parado antes. É por isso que existe o passo de repouso (quiesce) — o reinício dele fica num bloco finally, então os serviços voltam mesmo que o backup morra no meio do caminho.
  • Restaurar para um nome de usuário diferente funciona, porque todo destino é registrado em relação ao home. Propriedade que não pode ser mapeada para o novo usuário vai para a checklist manual, em vez de ser silenciosamente ignorada.
  • Sem o GNOME keyring (máquina sem interface gráfica, CI)? Ele recua para uma senha em memória mais um prompt, em vez de falhar.
  • O bug bobo: python -m arkvault backup ... costumava não fazer nada em silêncio — o analisador de argumentos da GUI engolia o subcomando e saía com código 0. O __main__.py agora despacha os subcomandos da CLI explicitamente. Bugs assustadores se anunciam; os perigosos saem limpos e não fazem nada.
  • O catálogo que vem no pacote é um exemplo em branco de propósito. O que eu realmente uso lista exatamente onde estão minhas coisas importantes, que é precisamente o que não deveria vir num zip público. Você recebe um exemplo limpo de Projects/Settings, com uma amostra funcional de reimplantação — mesma estrutura, nenhum dos meus caminhos.

Downloads

Gratuito para uso pessoal. Se isso te economizar uma tarde, o botão do café está logo ali.


← Mais de Ferramentas e Downloads