ArkVault: Uma interface gráfica para o BorgBackup que permite reconstruir seu sistema Linux a partir do disco.
- Categoria
- Ferramentas e Downloads
- Publicado em
- 11 julho 2026
- Atualizado em
- 16 setembro 2026
- Por
- Jacob Lloyd — escrito com ajuda de IA, depois do projeto
- Tempo de leitura
- 17 min de leitura
Em termos simples: Um programa gratuito de backup para computadores Linux, com uma interface simples do tipo “clique e use”. Ele salva uma cópia criptografada dos seus arquivos importantes em um disco externo. O próprio disco vem com um guia passo a passo para recuperação de dados; assim, caso o seu computador pare de funcionar, é possível reconstruir todo o sistema a partir desse disco.
Conecte uma unidade de backup a uma instalação limpa do Linux, sem nada configurado, e você receberá mais do que apenas os seus arquivos de volta. O ArkVault grava um kit de restauração na própria unidade, ao lado do backup criptografado; assim, a unidade sabe como reconstruir o sistema: arquivos de configuração, chaves SSH, links simbólicos para programas, unidades systemd, e tudo mais.
Resumo rápido
- O que é: uma interface gráfica em GTK4 (além de um CLI completo sem necessidade de interface) para o BorgBackup; essa interface grava um manifesto de instalação e uma cópia de si mesma em cada unidade de backup.
- Quanto custa: é gratuito, licenciado sob MIT. O código-fonte está disponível abaixo; não é necessário criar conta nem usar serviços na nuvem.
- O que você precisa: um sistema Linux com GTK4/libadwaita (já vem no Fedora/GNOME; basta um comando apt no Debian/Ubuntu), uma unidade extra e algum tempo para definir o que deve ser incluído no backup.
- O resultado final: um backup criptografado e com deduplicação, além de um assistente de restauração que pode ser executado diretamente da unidade, mesmo em máquinas sem nada instalado. Testei a restauração em um ambiente isolado: todos os 8 itens foram recuperados corretamente.
- Custo de execução: na minha máquina, uma execução noturna leva cerca de um minuto. Na última vez em que o Borg exibiu os totais (9 de setembro de 2026), 188 GB de snapshots foram deduplicados para 18 GB; uma semana depois, o repositório ocupava 31 GB no disco – em parte porque o ArkVault nunca executa o comando
borg compact(veja as observações importantes).
O resultado final
Estes prints de tela são de uma execução em ambiente isolado com dados fictícios; não se trata da lista de arquivos do meu computador real.

Quatro perfis, estimativas em tempo real do tamanho dos dados, e um ícone de cadeado sempre que um perfil envolve itens marcados como sensíveis, como chaves SSH. Um único botão permite fazer backup de tudo o que foi selecionado.

É este o propósito principal da ferramenta: o assistente de restauração lê o mapa de instalação no disco e exibe exatamente o que foi salvo, organizado por categorias e marcado para seleção; o ícone de cadeado indica itens sensíveis.

Existe também um modo de arrastar e soltar para coleções pontuais que não fazem parte do catálogo principal.
| Métrica | Valor |
|---|---|
| Código | Aproximadamente 7.900 linhas de Python; 50 arquivos no zip |
| Dependências do Pip | Nenhuma. O GTK é fornecido pelo sistema; o arquivo requirements.txt está intencionalmente vazio |
| Conjunto de testes | Todos os 93 testes foram aprovados; não há necessidade do pytest |
| Tamanho do zip | 116 KB (o binário do Borg não é incluído; o instalador o baixa) |
| Teste de restauração em ambiente isolado | Todos os 8 itens foram restaurados corretamente num novo diretório $HOME |
| Tempo de execução noturna, no meu computador | De 51 segundos a 1 minuto e 31 segundos (3–15 de setembro de 2026) |
| Itens processados por execução noturna | 222–225 (11–16 de setembro de 2026) |
| Desduplicação, no meu repositório | 188,45 GB de snapshots armazenados como apenas 18,24 GB (9 de setembro de 2026) |
| Licença | MIT; gratuito |
O que o ArkVault realmente oferece
O ArkVault não é um motor de backup próprio. É uma interface front-end para o BorgBackup, que cuida das tarefas complexas:
- Criptografia: repokey-blake2. A chave fica dentro do repositório, protegida pela sua senha. Quem roubar o disco não conseguirá acessar nada.
- Deduplicação: divisão do conteúdo em blocos, de modo que dez snapshots de um diretório que muda lentamente não ocupem dez vezes mais espaço.
- Compressão: zstd no nível 6. Oferece boa compactação sem deixar o processo de backup extremamente lento.
- Retenção: o
borg prunemantém, por padrão, 7 snapshots diários, 4 semanais e 6 mensais (configurável), fazendo com que os snapshots mais antigos sejam descartados e o disco não fique cheio.
Por que uma distro imutável exigiu um design diferente
Eu desenvolvi isso no Bazzite, uma distribuição Fedora imutável e “atômica”, cujo sistema de arquivos raiz é somente leitura. Posteriormente, a máquina foi migrada para o Bluefin, que possui as mesmas restrições. Essas restrições moldaram todo o funcionamento da ferramenta:
- Tudo é instalado em
~/.local. Nada afeta o diretório/. - O ambiente virtual é criado com a opção
--system-site-packages, de modo que o GTK4 e o PyGObject são obtidos do sistema hospedeiro, em vez de exigir a compilação de bindings numa base de sistema somente leitura. - O comando
pip install borgbackupnão funciona aqui (faltam cabeçalhos da biblioteca liblz4 e não há pacotes pré-compilados compatíveis); por isso, o instalador baixa o binary independente do Borg disponibilizado oficialmente, uma versão criada com PyInstaller que já inclui o suporte ao FUSE. - Não há uso algum de
sudo. A única operação que requer privilégios de root – formatar um disco – é executada por meio de um prompt do polkit/pkexec.
A ideia principal: o drive reconstrói a máquina
O Borg não sabe quais arquivos são importantes, quais permissões eles precisam ou o que deve acontecer após a restauração para que a máquina volte a funcionar. Ferramentas comuns de backup devolvem os arquivos, mas ainda é preciso lembrar onde cada um foi armazenado e quais unidades do systemd precisam ser reativadas. O ArkVault grava esse conhecimento no drive em cada backup:
arkvault-repo/: o repositório criptografado do Borg.ArkVault-App/: uma cópia autocontida do ArkVault, com código-fonte e instalador; essa cópia é feita de forma atômica (primeiro em um diretório temporário, depois renomeado), para que uma cópia interrompida nunca deixe um aplicativo incompleto no drive.arkvault-install-map.jsoneRESTORE-README.md: um manifesto de tudo o que foi capturado durante o backup, além de um guia em texto simples que pode ser lido sem necessidade de nenhuma ferramenta adicional.
O arquivo de instalação indica quais itens são considerados “secretos”; ele nunca contém o conteúdo desses itens.
O que uma execução de backup realmente faz
Uma execução de backup é um processo linear: descobre quais itens correspondem ao catálogo (caminhos ausentes são ignorados), opcionalmente pausa serviços com muitas operações de escrita para garantir que os bancos de dados fiquem em um estado consistente, depois executa borg create, borg prune e, por fim, grava o kit de restauração no disco.
A segunda opção: um espelho de pastas simples
O repositório Borg é deduplicado, criptografado e opaco. Para lê-lo, você precisa do Borg ou do ArkVault – o que é aceitável, até você se deparar com uma máquina que não possui nenhum dos dois.
Por isso existe um segundo modo, arkvault mirror, que grava pastas simples, relativas ao $HOME, num drive. Para restaurar os dados, use bash <drive>/restore.sh ou simplesmente arraste as pastas de volta. Você obtém uma cópia atual dos dados, sem histórico nem deduplicação.
Duas coisas impedem que a abordagem “basta copiar as pastas” seja ingênua:
- Os segredos continuam criptografados. O exFAT não possui bits de permissão Unix; portanto, uma pasta
.sshcopiada fica acessível para todos. Todos os itens marcados como “segredos” são armazenados num arquivo tar criptografado com GPG (o tar preserva as permissões que o sistema de arquivos não consegue manter); orestore.shentão descriptografa esse arquivo e reaplica as permissões corretas. - O exFAT é insensível a maiúsculas/minúsculas. Uma estrutura de pastas contendo tanto
Foo/quantofoo/acaba sendo fundida numa única pasta durante a cópia, o que representa perda de dados disfarçada de sucesso. O ArkVault verifica previamente se há colisões de nomes ou caracteres inválidos; caso positivo, armazena essas pastas sem perdas num arquivo.tar.gz, registrando o motivo no manifesto.
Ambos os modos gravam o mesmo “kit de restauração” no drive; assim, qualquer um deles fornece as informações necessárias para a próxima máquina restaurar os dados.
As medidas de proteção
A maior parte do trabalho foi dedicada a essas salvaguardas:
- O verificador de formato impede a formatação do disco do sistema. Formatar o disco errado é um desastre clássico com ferramentas de backup. O ArkVault resolve as cadeias de dispositivos LUKS/LVM até chegar aos discos físicos, percorrendo
/sys/class/block/*/slaves; como o nome do mapeamento do sistema criptografado não se parece em nada com o nome do disco subjacente, verificações simples por nome não conseguem detectá-lo. Se não conseguir enumerar os discos do sistema, ele falha de forma restritiva e se recusa a formatar qualquer coisa. Você ainda precisa digitar o nome exato do dispositivo para confirmar. - Controle de caminhos durante a restauração. Um mapa de instalação malformado ou adulterado não pode gravar arquivos fora do diretório alvo: os ancestrais representados por links simbólicos são resolvidos, mas o link final não é seguido intencionalmente; alvos de restauração que tentam “escapar” do diretório são rejeitados.
- Proteção de dados confidenciais nos logs. A frase-senha e qualquer coisa marcada como confidencial são removidas dos logs por meio de correspondência exata e também por regras regex para padrões como
apiKey:eBearer. - A folha de recuperação da senha. No primeiro backup, é exibida uma folha com a frase-senha em texto não selecionável, impedindo que ela seja copiada acidentalmente para a área de transferência; o botão de confirmação permanece desativado até você marcar “Eu salvei minha frase-senha”. Essa folha nunca é gravada no disco. Se você perder a frase-senha, o backup se torna irrecuperável.
- O formato FAT32 é rejeitado como alvo de repositório, pois seu limite de 4 GB por arquivo dificulta o funcionamento do Borg. O exFAT é permitido, mas com aviso, já que o Borg armazena os metadados Unix internamente.
- Arquivos de backup vazios são rejeitados. Se todos os caminhos fonte desaparecerem (disco desmontado, erro de digitação no catálogo), o ArkVault se recusa a criar um arquivo de backup vazio que pudesse ser interpretado como um sucesso.
- A verificação é responsabilidade sua, quando desejar. O comando
borg checkpode ser executado via interface ou linha de comando para realizar uma verificação de integridade; já a opção “Navegar pelo snapshot” monta o arquivo de backup em modo somente leitura via FUSE, permitindo que você o inspecione antes de confiar nele.
Configurando o sistema
Você precisa dos bindings PyGObject para GTK4/libadwaita, do udisks2 e do polkit. No Fedora/GNOME, esses pacotes já vêm por padrão; no Debian/Ubuntu, basta executar um único comando:
sudo apt install python3-gi gir1.2-gtk-4.0 gir1.2-adw-1
Em seguida, execute o instalador, que é idempotente e seguro para ser executado novamente:
bash install.sh
O instalador copia o aplicativo para ~/.local/share/arkvault, cria um ambiente virtual do tipo --system-site-packages, baixa o binário oficial do Borg e coloca ~/.local/bin/arkvault além de uma entrada para o menu de aplicativos. Depois disso:
arkvault probe
Tudo deve indicar “OK”. O comando arkvault inicia a interface gráfica; o mesmo núcleo do programa também controla uma interface de linha de comando sem interface gráfica.
arkvault probe|backup|restore|list|check
O único passo realmente importante é: editar o catálogo. O catálogo fornecido é apenas um exemplo genérico. Os arquivos core/discovery.py, profiles.py, core/quiesce.py, core/containers.py e core/installmap.py contêm blocos marcados como “EDIT ME”. O objetivo é ter uma lista personalizada do que sua instalação pode restaurar; ninguém pode preencher essa lista por você.
O próprio catálogo é escrito em Python, no arquivo core/discovery.py. Cada entrada contém um caminho relativo à sua pasta pessoal, um sinalizador de segredo e uma descrição. Os caminhos são verificados em tempo de execução; portanto, listar algo que você não possui não causa problemas. Esta é a lista padrão de configurações:
_SETTINGS = [
(".bashrc", False, "Bash rc"),
(".gitconfig", False, "Git identity and settings"),
(".ssh", True, "SSH keys/config/known_hosts (PRIVATE KEYS)"),
(".config/rclone", True, "rclone remotes (may embed tokens)"),
]
Os aplicativos instalados na sua pasta pessoal também podem incluir etapas de reinstalação que o assistente de restauração executa ou adiciona à lista de tarefas manuais. O mesmo arquivo traz um exemplo funcional, comentado, para um aplicativo Node.js:
redeploy = {"steps": [
{"kind": "npm", "dir": "my-node-app", "cmd": "npm ci"},
{"kind": "symlink", "link": ".local/bin/my-app",
"target": "my-node-app/cli.js"},
{"kind": "desktop-entry",
"path": ".local/share/applications/my-app.desktop"},
{"kind": "privileged-script", "script": "my-node-app/install.sh",
"via": "pkexec", "manual": True,
"desc": "Installs udev rules / system units (needs root)"},
]}
Removi alguns arquivos de configuração do shell da primeira lista. A versão no formato ZIP também inclui uma etapa de criação do ambiente virtual Python ("kind": "pip").
Faça o primeiro backup, salve a folha de recuperação em um local que não seja o próprio disco de backup e clique em “Copiar aplicativo para o disco”. Para execuções automáticas, há um modelo de timer do systemd no arquivo README-SETUP; esse timer lê a frase-senha do keyring ou da variável de ambiente ARKVAULT_PASSPHRASE.
O teste de restauração (sandbox)
Ainda não restaurei minha máquina real a partir deste disco. O que executei foi um teste completo em um ambiente de sandbox, utilizando um $HOME fictício e a mesma estrutura de arquivos contida no zip:
- Descompactei o arquivo fonte e executei o
install.sh, que realizou um download real de 27,9 MB do Borg. arkvault probe: tudo correu bem.arkvault backupde 3 perfis de exemplo para um diretório temporário: 8 itens foram incluídos; o repositório foi inicializado com repokey-blake2, além disso foram criados o install-map, o RESTORE-README e o self-bundle.arkvault list, seguido dearkvault check: todos os testes foram aprovados.arkvault restorepara um segundo diretório home vazio: todos os 8 itens foram colocados nos caminhos corretos; uma lista de verificação manual também foi gerada para o restante dos arquivos.
O conjunto de testes, que não possui dependências externas, teve 93/93 acertos na mesma estrutura de arquivos. Isso comprova que a mecânica do processo funciona com dados de exemplo. Porém, isso não garante que a restauração de um diretório home real e grande também funcione.
Números da minha própria máquina
A mesma ferramenta faz backup da minha máquina todas as noites, às 02:00, por meio de um timer do systemd. Esses valores vêm do journal dessa unidade e da saída do comando --stats do próprio Borg:
| O quê | Valor |
|---|---|
| Itens capturados por execução | 222–225 (11–16 de setembro de 2026) |
| Bancos de dados SQLite copiados por execução | 27–39, totalizando 1,4–1,7 GB (11–16 de setembro de 2026) |
| Um único snapshot (9 de setembro de 2026) | 17,45 GB originais, 14,12 GB comprimidos; 1,62 GB após deduplicação |
| Todos os snapshots (9 de setembro de 2026) | 188,45 GB originais, 146,78 GB comprimidos; 18,24 GB após deduplicação (cerca de 10× menos) |
| Tamanho do repositório no disco (16 de setembro de 2026) | 31 GB |
| Tempo de execução noturno, de 3 a 15 de setembro de 2026 | 51 segundos a 1 minuto e 31 segundos |
| Tempo de execução noturno, 16 de setembro de 2026 | 3 minutos e 8 segundos |
| Pico de memória utilizada | 1,7–2,6 GB (de 3 a 16 de setembro de 2026) |
A cada noite, são adicionados apenas 0,85–1,6 GB de novos dados ao repositório; por isso os snapshots diários de um conjunto de dados de 15–18 GB continuam sendo econômicos. Ainda não identifiquei o motivo pelo qual a execução de 16 de setembro levou três vezes mais tempo. A diferença entre os 18 GB informados pelo Borg em 9 de setembro e os 31 GB no disco uma semana depois se deve a dois fatores: sete noites adicionais de novos dados, além de snapshots “prunados” cujo espaço o Borg nunca liberou, pois o Borg só libera espaço do repositório quando o comando borg compact é executado, e o ArkVault nunca o executa. Nas três noites em que essas estatísticas foram registradas, o Borg encerrou a execução com avisos (código de saída 100). O ArkVault registra isso como um aviso, e não como um sucesso pleno.
Armadilhas comuns
- O pacote ZIP corrige um bug no script de instalação original. As versões disponibilizadas no GitHub do Borg incluem uma assinatura GPG
.asc, mas não há nenhum arquivo.sha256; por isso, a verificação do checksum falhava com erro 404, e o comandoset -einterrompia a instalação antes que o próprio script pudesse executar seu mecanismo de fallback. Isso foi corrigido aqui; além disso, existe uma variável de ambiente opcional chamadaARKVAULT_BORG_SHA256para definir um hash confiável. No meu caso, isso nunca aconteceu, pois o binário do Borg já estava instalado, então o processo de download simplesmente não foi executado. - O formato FAT32 pode causar problemas sérios. O ArkVault detecta e rejeita esse formato, mas muitos pendrives vêm configurados assim de fábrica.
- A função de “pruning” não reduz o tamanho do repositório por si só. O ArkVault executa
borg pruneapós cada backup, mas nunca utilizaborg compact. Na versão atual do Borg (1.4.4 na minha máquina), o espaço só é liberado após a execução de “compact”. Portanto, execute ocasionalmenteborg compactno repositório ou inclua esse comando em seu agendamento. - Uma execução interrompida pode deixar um bloqueio no repositório. O comando
borg break-lockremove esse bloqueio (existe um botão para isso na interface gráfica); além disso, a variávelBORG_LOCK_WAIT=120faz com que execuções simultâneas aguardem em vez de falharem imediatamente. - O uso do SQLite no modo WAL ao vivo exige que os arquivos db, wal e shm sejam copiados juntos ou que o serviço seja interrompido antes. É por isso que existe a etapa de “quiesce”. O reinício do serviço ocorre dentro de um bloco
finally, garantindo que os serviços voltem a funcionar mesmo se o backup falhar durante a execução. - É possível restaurar arquivos para um usuário diferente. Isso porque todos os destinos são definidos em relação ao diretório “home”. Caso algum arquivo não possa ser atribuído ao novo usuário, ele aparece na lista de tarefas manuais em vez de ser ignorado silenciosamente.
- Sem o GNOME Keyring (em servidores sem interface gráfica ou em ambientes CI)? O sistema passa a usar uma senha armazenada na memória e um prompt para digitação, em vez de falhar.
- O bug “chato”: Antes, o comando
python -m arkvault backup ...não fazia nada: o analisador de argumentos da interface gráfica interpretava mal os parâmetros e encerrava a execução com status 0. Agora, o arquivo__main__.pyprocessa corretamente os subcomandos da linha de comando. Verifique se o comando de backup realmente criou um arquivo de backup, e não apenas retornou status 0. - Ferramentas desinstaladas continuam aparecendo no catálogo. Após remover uma ferramenta, todas as execuções noturnas exibiam um aviso indicando que seu diretório ainda constava na lista, mas estava ausente. O ArkVault prossegue com o backup dos demais itens e repete esse aviso no resumo da execução. Para corrigir isso, basta excluir a entrada correspondente do catálogo.
- O catálogo fornecido é um exemplo vazio, de propósito. O catálogo que eu utilizo realmente indica onde estão meus arquivos importantes; esse tipo de informação, claro, não deve ser incluído em um pacote público. Você receberá um exemplo simples com pastas “Projects” e “Settings”, além de um exemplo prático de reimplantação (mostrado acima na seção “Configurando o ArkVault”): a mesma estrutura, porém sem os meus caminhos específicos.
Relacionado: como fazer com que uma IA adapte qualquer projeto ao seu sistema e a pilha de ferramentas que o ArkVault faz backup. O ArkVault foi desenvolvido com auxílio de agentes de programação baseados em IA.
Downloads
Gratuito para uso pessoal. Se isso te economizar uma tarde, o botão do café está logo ali.