Backup e Ripristino Automizzato per Progetti Podman-Compose

Recentemente mi sono trovato a dover gestire il backup dei miei progetti podman-compose, che includono sia le cartelle dei progetti (file di configurazione, dati, script) sia i volumi associati ai container, contenenti dati persistenti. La sfida principale è stata trovare un modo affidabile e semplice per eseguire backup completi, differenziati (solo volumi, solo cartelle, o entrambi) e ripristini mirati in modo sicuro e flessibile.

La Soluzione Progettata

Ho sviluppato due script bash complementari:

  • Script di Backup: che identifica automaticamente i progetti podman-compose attivi, comprime le rispettive cartelle progetto (inclusi file nascosti) e, tramite ispezione diretta dei container, esporta i volumi davvero utilizzati. L’utente può scegliere se fare backup solo della cartella, solo dei volumi o entrambi. Viene anche salvato il file di configurazione podman-compose config per ogni progetto.
  • Script di Ripristino: che permette di scorrere i backup salvati in una directory, scegliere quali progetti e volumi recuperare e automatizza l’estrazione della cartella e la reimportazione dei volumi in podman.

Il Processo di Realizzazione

  1. Analisi del problema: capire come distinguere i progetti attivi, quali volumi appartengono a ciascuno e come collegarli con le cartelle locali.
  2. Gestione dei nomi case-insensitive: uniformare i nomi dei progetti e dei container in lowercase per corrispondenze affidabili.
  3. Automazione del backup: uso di comandi podman per estrarre i dati, compressione tar e esportazione di volumi, con parametrizzazione per flessibilità.
  4. Ripristino interattivo: interfaccia semplice per selezionare quali parti ripristinare senza errori manuali.
  5. Integrazione con cron: possibilità di schedulare backup diversi nei giorni feriali o weekend.

Conclusioni

Questi script hanno semplificato drasticamente la gestione dei backup dei miei ambienti podman-compose, aumentando sicurezza e velocità nelle operazioni di mantenimento e ripristino. La flessibilità offerta dalla parametrizzazione e dalla gestione automatica dei volumi consente di adattare facilmente la soluzione a qualsiasi progetto simile.