No description
- Shell 100%
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> |
||
|---|---|---|
| .gitignore | ||
| backup.sh | ||
| Install.sh | ||
| mapa-flatpak.txt | ||
| README.md | ||
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:
- snap por nome exato — auto-instala se existir (ex:
code,discord) - flatpak via mapa curado — auto-instala IDs validados manualmente (~60 apps comuns: Chrome, Discord, VS Code, etc.)
- 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/fstabem máquina diferente. Revise e copie manualmente o que fizer sentido.- Lista de pacotes tem falsos positivos: pacotes base (
bash,apt,dpkg) aparecem emapt-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 comobuild-essential,firmware-amd-graphicssão específicos de Debian/Ubuntu. Não tente rodar em Fedora/Arch sem adaptar.
Segurança
personal.tar.gpgéchmod 600e 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-connectionscontém senhas de WiFi em texto claro no sistema original — é isso que motivou a criptografia padrão.