██████╗ ██████╗ █████╗ ██████╗ ██████╗
██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔═══██╗
██║ ██║██████╔╝███████║██║ ██║ ██║
██║ ██║██╔══██╗██╔══██║██║ ██║ ██║
██████╔╝██║ ██║██║ ██║╚██████╗╚██████╔╝
╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝
Dotfile & Runtime Archive and Configuration Orchestrator
Porta la tua workstation ovunque. In un file. Cifrato.
DRACO è un sistema di backup portabile, cifrato e automatizzabile per workstation Linux. Salva dotfile, chiavi SSH/GPG, personalizzazioni KDE e GNOME (Konsole, Spaceship prompt, temi Plasma...), e genera automaticamente uno script per reinstallare tutto il software con un solo comando.
Non è un backup dei tuoi dati. È il backup della tua identità da sysadmin.
- Funzionalità
- Distribuzione supportate
- Requisiti
- Installazione
- Utilizzo rapido
- TUI
- Backup automatico
- Ripristino
- Retention
- Sicurezza
- Struttura progetto
- Limitazioni note
- Licenza
- Backup cifrato — AES-256-CBC via OpenSSL, PBKDF2 con 600.000 iterazioni
- Compressione zstd — rapida e efficiente; fallback automatico su gzip
- Deduplicazione SHA-256 — se non ci sono modifiche, nessun file duplicato (symlink)
- Versioning con log e diff — ogni backup ha un log leggibile con le variazioni rispetto al precedente
- KDE completo — Konsole profiles, Spaceship prompt, color schemes, Plasma themes, Aurorae, shortcut globali
- GNOME completo — export/import dconf, estensioni, temi GTK
- Reinstall script — generato automaticamente per dnf / apt / pacman / zypper + flatpak + snap + pip + npm
- Retention configurabile —
all/daily/weekly/monthly/smart - TUI bash nativa — 5 temi 256-color senza dipendenze (ghost, blood, acid, matrix, void); colori fissi indipendenti dal tema terminale
- Automazione — systemd user timer o cron, installazione interattiva
- DE mismatch detection — ripristino da KDE su GNOME (e viceversa) con warning automatico e skip delle config DE-specifiche
- Portabile — una cartella, zero compilazione, funziona su qualsiasi Linux con bash 4+
| Distro | Versione minima | Package manager |
|---|---|---|
| Fedora | 42+ | dnf |
| Debian | 12 (Bookworm)+ | apt |
| Ubuntu | 24.04 LTS+ | apt |
| Arch Linux | rolling | pacman |
| Manjaro / EndeavourOS / Garuda | — | pacman |
| Kubuntu / Xubuntu / Pop!_OS | 24.04+ | apt |
Obbligatori (presenti in quasi tutte le distro):
bash >= 4.0 tar openssl sha256sum find grep sed awk
Raccomandati:
zstd # compressione (fallback: gzip)
whiptail # input testuale nella TUI (opzionale; fallback: read nativo)
Nota TUI: L'interfaccia grafica è scritta in bash puro con ANSI 256-color. Non dipende da whiptail o dialog per i colori — usa i range 16-255 che sono fissi su tutti i terminali 256color (non rimappabili da KDE Konsole o altri). whiptail/dialog vengono usati solo per i campi di input testo e password.
Installazione dipendenze:
# Fedora
sudo dnf install tar openssl zstd newt
# Debian / Ubuntu / Kubuntu
sudo apt install tar openssl zstd whiptail
# Arch
sudo pacman -S tar openssl zstd libnewt# Clona il repo
git clone https://github.com/diegoperu/draco.git
cd draco
# Oppure scarica ed estrai l'archivio
tar xzf draco-*.tar.gz && cd draco
# Installa (user o system)
bash install.shLo script installa DRACO in ~/.local/bin/draco (utente, senza sudo) o /usr/local/bin/draco (sistema, con sudo).
Se
~/.local/binnon è nel tuo$PATH, aggiungi a~/.bashrco~/.zshrc:export PATH="$PATH:$HOME/.local/bin"
draco # Avvia la TUI
draco backup # Backup immediato
draco restore # Ripristino (selezione interattiva)
draco restore 20260508-143022 # Ripristino backup specifico
draco list # Lista backup con dimensioni
draco log # Log ultimo backup
draco log 20260508-143022 # Log backup specifico (con diff)
draco delete 20260101-120000 # Elimina un backup
draco schedule install # Installa schedule automatico
draco config # Configurazione
draco status # Riepilogo statoPrima esecuzione:
draco
# Chiede: directory di destinazione backup
# Chiede: installare schedule automatico?
# Salva config in: ~/.config/draco/draco.conf┌──────────────────────────────────────────────────────────┐
│ DRACO v1.0.0 │
│ Dotfile & Runtime Archive and Configuration Orchestrator│
│ │
│ Backup dir: /mnt/backup/draco │
│ Last backup: 20260508-020001 │
│ Storage: 142M │
│ │
│ ┌────────────────────────────────────────┐ │
│ │ BACKUP Run backup now │ │
│ │ RESTORE Restore a backup │ │
│ │ LIST List backups and storage │ │
│ │ LOG View backup logs and diffs │ │
│ │ DELETE Delete backup(s) │ │
│ │ SCHEDULE Manage automatic schedule │ │
│ │ CONFIG Configure DRACO settings │ │
│ │ ABOUT About DRACO │ │
│ └────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
La TUI usa ANSI 256-color (range 16-255, non rimappabili dal terminale).
| Tema | Colore testo | Ispirazione |
|---|---|---|
ghost |
Bianco brillante su nero | Default, massima leggibilità |
blood |
Rosso brillante su nero | Stile hacker |
acid |
Giallo brillante su nero | High visibility |
matrix |
Verde brillante su nero | The Matrix |
void |
Ciano brillante su nero | Cyberpunk |
Alias retrocompatibili: default→ghost, blue→void, anthropic→blood, eva01→matrix.
# Cambia tema dalla TUI
draco config # → Theme
# Override da riga di comando
DRACO_TUI_THEME=matrix draco
DRACO_TUI_THEME=void dracodraco schedule install
# Sceglie: systemd, giornaliero, 02:00Configurare la password per l'esecuzione non presidiata:
mkdir -p ~/.config/environment.d
echo 'DRACO_PASSWORD=tuapassword' > ~/.config/environment.d/draco.conf
chmod 600 ~/.config/environment.d/draco.confdraco schedule install # sceglie cron
# oppure manualmente in crontab:
DRACO_PASSWORD=tuapassword
0 2 * * * /home/utente/.local/bin/draco backup -qdraco schedule status
systemctl --user list-timers | grep dracodraco restore # seleziona il backup dalla lista
# inserisci password
# i file esistenti vengono spostati in ~/.draco-pre-restore-TIMESTAMP/# 1. Installa DRACO (vedi sopra)
# 2. Monta/copia la directory dei backup
# 3. Configura la destinazione
draco config # o: export DRACO_BACKUP_DIR=/path/backup
# 4. Ripristina dotfile e config
draco restore
# 5. Reinstalla il software
bash ~/.local/share/draco/restore-<ID>/reinstall.shDRACO rileva il mismatch automaticamente:
══════════════════════════════════════════════════════
DE MISMATCH DETECTED
Backup creato con: KDE
Sistema attuale: GNOME
Tutto verrà ripristinato TRANNE:
- Personalizzazioni desktop environment
- Impostazioni KDE-specifiche
══════════════════════════════════════════════════════
Le config DE-specifiche vengono saltate automaticamente. Dotfile, SSH, GPG e tutto il resto vengono ripristinati normalmente.
| Policy | Comportamento |
|---|---|
all |
Mantiene tutto. Il disco cresce indefinitamente. (default) |
daily |
Ultimi N backup giornalieri |
weekly |
Ultimi N backup settimanali |
monthly |
Ultimi N backup mensili |
smart |
N giornalieri + 1/settimana per N settimane + 1/mese per N mesi + 1/anno per N anni |
Configurazione in ~/.config/draco/draco.conf:
DRACO_RETENTION_POLICY=smart
DRACO_RETENTION_KEEP_DAILY=7
DRACO_RETENTION_KEEP_WEEKLY=4
DRACO_RETENTION_KEEP_MONTHLY=12
DRACO_RETENTION_KEEP_YEARLY=3- AES-256-CBC con PBKDF2 (600.000 iterazioni) — protezione contro brute force
- La password non viene mai salvata su disco
- I backup includono chiavi SSH private e keyring GPG: usa una password forte (12+ caratteri)
- Imposta i permessi corretti sulla directory backup:
chmod 700 $DRACO_BACKUP_DIR- Per l'automazione, usa
~/.config/environment.d/draco.confconchmod 600 - Non usare mai
-p passworddalla CLI in ambienti condivisi (la password appare inps aux)
draco/
├── draco # Entry point principale
├── install.sh # Installer (user o system)
├── LICENSE # GNU GPL v3
├── docs/
│ ├── draco.1 # Man page (groff/troff)
│ ├── draco.1.txt # Man page plain text
│ ├── draco-quickguide.pdf # Quick guide PDF
│ └── draco-quickguide.txt # Quick guide plain text
└── src/
├── core/
│ ├── config.sh # Configurazione, first-run, wizard
│ ├── log.sh # Logging, livelli, colori ANSI
│ └── utils.sh # Crypto, compressione, dedup, listing
├── distro/
│ └── detect.sh # Rilevamento distro/DE, package manager,
│ # generazione reinstall script
├── backup/
│ └── engine.sh # Engine backup: dotfile, KDE, GNOME,
│ # retention, dedup, log/diff
├── restore/
│ └── engine.sh # Engine restore, DE mismatch detection,
│ # pre-restore backup
├── scheduler/
│ └── scheduler.sh # Systemd user timer + cron
└── tui/
└── tui.sh # TUI bash nativa, 5 temi 256-color
Espandi lista completa
Shell e terminale:
.bashrc, .bash_profile, .zshrc, .zshenv, .profile, .inputrc, .oh-my-zsh, .config/fish, .config/spaceship
Editor:
.vimrc, .vim/, .config/nvim/, .config/Code/User/ (VS Code settings, keybindings, snippets)
Git e VCS:
.gitconfig, .gitignore_global
SSH e GPG:
.ssh/ (escluso known_hosts), .gnupg/
Terminali:
.config/alacritty/, .config/kitty/, .config/wezterm/
KDE / Plasma:
konsolerc, ~/.local/share/konsole/ (profili), kdeglobals, kglobalshortcutsrc, kwinrc, plasma-org.kde.plasma.desktop-appletsrc, plasmashellrc, ~/.local/share/plasma/, ~/.local/share/color-schemes/, ~/.local/share/aurorae/, .config/spaceship/ (Spaceship prompt)
GNOME:
dconf dump, ~/.local/share/gnome-shell/extensions/, .config/gtk-3.0/, .config/gtk-4.0/
Font e temi:
~/.local/share/fonts/, ~/.local/share/icons/, ~/.themes/, ~/.icons/
Misc:
.config/mimeapps.list, .config/user-dirs.dirs, .local/bin/ (script utente)
Software (manifests): Lista pacchetti di sistema, Flatpak, Snap, pip (user), npm globals + reinstall script eseguibile
- Nessun backup dati utente (Downloads, Documenti, media) — by design
- Configurazione monitor esclusa dal ripristino (risoluzione, disposizione schermi)
- KDE Activities non supportate
- Flatpak: solo overrides, non i dati per-applicazione
- Reinstall script: pacchetti rinominati o rimossi dai repo dal momento del backup falliranno silenziosamente (
|| true) - npm/pip/snap: liste best-effort, non garantite complete
- Wayland: input remapping fuori DE potrebbe non essere catturato
| Variabile | Descrizione |
|---|---|
DRACO_PASSWORD |
Password cifratura (nessun prompt se impostata) |
DRACO_CONFIG |
Override percorso config file |
DRACO_BACKUP_DIR |
Override directory backup (priorità massima) |
DRACO_LOG_LEVEL |
0=DEBUG 1=INFO 2=WARN 3=ERROR |
DRACO_TUI_THEME |
Tema TUI: default blue anthropic eva01 matrix |
DRACO_NO_COLOR |
1 per disabilitare colori ANSI |
| File | Contenuto |
|---|---|
docs/draco.1 |
Man page (installa con cp draco.1 ~/.local/share/man/man1/) |
docs/draco.1.txt |
Man page plain text |
docs/draco-quickguide.pdf |
Quick guide con tabelle e workflow visuale |
docs/draco-quickguide.txt |
Quick guide plain text per terminale |
# Installa man page
mkdir -p ~/.local/share/man/man1
cp docs/draco.1 ~/.local/share/man/man1/
man dracoDRACO è distribuito sotto licenza GNU General Public License v3.
Vedi LICENSE oppure gnu.org/licenses/gpl-3.0.
"La workstation perfetta non si costruisce due volte. Si ripristina."