No description
Find a file
Madruga 451834edc6 Initial commit: backup/restore de sistema Debian com criptografia
backup.sh: captura pacotes APT, repos + chaves GPG, snaps, flatpaks, pip,
dotfiles, crontabs e /etc selecionado. Criptografa tudo em personal.tar.gpg
(AES-256) por padrão.

Install.sh: descriptografa em diretório temporário com trap de limpeza,
restaura repos antes dos pacotes, instala em lotes tolerantes a falha,
e tenta snap/flatpak como fallback para pacotes que o apt não instalou.

mapa-flatpak.txt: mapeamento curado apt -> flatpak (~60 apps comuns)
usado pelo fallback automático.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-21 01:25:55 -03:00
.gitignore Initial commit: backup/restore de sistema Debian com criptografia 2026-04-21 01:25:55 -03:00
backup.sh Initial commit: backup/restore de sistema Debian com criptografia 2026-04-21 01:25:55 -03:00
Install.sh Initial commit: backup/restore de sistema Debian com criptografia 2026-04-21 01:25:55 -03:00
mapa-flatpak.txt Initial commit: backup/restore de sistema Debian com criptografia 2026-04-21 01:25:55 -03:00
README.md Initial commit: backup/restore de sistema Debian com criptografia 2026-04-21 01:25:55 -03:00

Install

Scripts para backup e restauração de um sistema Debian/Ubuntu, com criptografia simétrica (AES-256) por padrão em tudo que contém informação pessoal.

Alvo primário: Debian 12 (Bookworm). Também funciona em Ubuntu, Linux Mint, Pop!_OS e Kali.

O que é capturado

Tipo Conteúdo
Pacotes APT manualmente instalados, lista completa, holds, preseeds debconf
Repositórios /etc/apt/sources.list*, chaves GPG (trusted.gpg.d, keyrings)
Arquiteturas foreign architectures (i386 etc.)
Snaps / Flatpaks lista de apps instalados + remotes flatpak
Pip (usuário) pacotes instalados com pip install --user
Dotfiles .bashrc, .zshrc, .config/, .ssh/config, etc.
Crontabs do usuário e do root, /etc/cron.d, /etc/cron.daily
Selecionado /etc hostname, hosts, fstab, NetworkManager (senhas WiFi), docker, samba
Info kernel, layout de disco, serviços systemd habilitados

Uso

Backup

./backup.sh              # criptografa tudo em personal.tar.gpg (padrão)
./backup.sh --no-encrypt # deixa em texto claro (só pra debug/teste)

Requer sudo (pra ler /etc/apt/keyrings etc.) — o script reexecuta sozinho. Pede uma senha duas vezes no final e gera personal.tar.gpg.

Restauração

./Install.sh                # restaura tudo
./Install.sh --dry-run      # mostra o que faria, sem executar
./Install.sh --skip-apt     # pula apt
./Install.sh --skip-snap    # pula snap
./Install.sh --skip-flatpak # pula flatpak
./Install.sh --skip-pip     # pula pip

Ao rodar, pede a senha, descriptografa em diretório temporário (/tmp/install-backup-XXXX), restaura, e apaga o temporário ao terminar (inclusive em caso de erro ou Ctrl+C via trap).

Criptografia

  • Algoritmo: AES-256 (GPG simétrico).
  • Cobre: configs/, pacotes/, repos/, info/ — tudo que contém dado pessoal ou revela inventário de software.
  • A senha nunca aparece em ps: é passada pra GPG via --passphrase-file <(printf ...).
  • Plaintext é apagado do disco persistente depois de criptografar.

Alternativa: criptografar a pasta inteira

tar -cz -C .. Install | gpg -c -o ~/Install-backup.tar.gz.gpg
gpg -d ~/Install-backup.tar.gz.gpg | tar -xz -C /destino

Fallback snap / flatpak

Depois do apt install, o Install.sh detecta pacotes que não instalaram (via dpkg -s) e tenta:

  1. snap por nome exato — auto-instala se existir (ex: code, discord)
  2. flatpak via mapa curado — auto-instala IDs validados manualmente (~60 apps comuns: Chrome, Discord, VS Code, etc.)
  3. flatpak search — só reporta candidatos em pacotes-alternativos.txt (não instala automaticamente — match por busca não é confiável).

Edite mapa-flatpak.txt livremente pra adicionar mapeamentos. Formato:

<nome-pacote-apt>    <flatpak-id-no-flathub>

Estrutura do repositório

.
├── backup.sh            # captura estado + criptografa
├── Install.sh           # descriptografa + restaura
├── mapa-flatpak.txt     # apt -> flatpak (curado)
├── README.md
└── .gitignore

# Gerados (ignorados pelo git):
├── personal.tar.gpg     # saída do backup (criptografada)
├── pacotes-alternativos.txt  # relatório do fallback snap/flatpak
└── configs/ info/ pacotes/ repos/  # se --no-encrypt

Limitações conhecidas

  • Não captura: software instalado via curl | bash (nvm, rustup, pyenv, oh-my-zsh). Adicione manualmente no fim do Install.sh se precisar.
  • configs/etc/ é descriptografado mas não aplicado automaticamente — pra não sobrescrever /etc/fstab em máquina diferente. Revise e copie manualmente o que fizer sentido.
  • Lista de pacotes tem falsos positivos: pacotes base (bash, apt, dpkg) aparecem em apt-manual.txt. São inofensivos no restore mas poluem. Filtre à mão se quiser.
  • Cross-distro não é realista: repos de terceiros (.list) e nomes como build-essential, firmware-amd-graphics são específicos de Debian/Ubuntu. Não tente rodar em Fedora/Arch sem adaptar.

Segurança

  • personal.tar.gpg é chmod 600 e não deve ser commitado no git (mesmo criptografado, dependê só da senha).
  • Se perder a senha, o backup é ilegível. Guarde num gerenciador de senhas.
  • /etc/NetworkManager/system-connections contém senhas de WiFi em texto claro no sistema original — é isso que motivou a criptografia padrão.