Backup a due livelli su S3 con restic e AWS CLI Deep Archive: la mia strategia per l’homelab

Backup a due livelli su S3 con restic e AWS CLI Deep Archive: la mia strategia per l’homelab

Una strategia di backup a due livelli: restic + Deep Archive

Fare backup è facile. Fare backup affidabili, economici e verificabili è tutta un’altra storia, soprattutto quando si gestisce infrastruttura self-hosted (server mail, siti, dati personali) e si vuole evitare sia il rischio di perdita dati sia bollette cloud fuori controllo. Dopo diverse iterazioni, sono arrivato a una strategia “a due livelli” che uso su tutta la mia infrastruttura, basata su restic e AWS CLI verso S3.

Perché due livelli

L’idea di fondo è separare due esigenze diverse che spesso vengono confuse in un unico backup:

  • Recovery rapido: se cancello per errore un file o un container si corrompe, voglio recuperarlo in pochi minuti, non in ore
  • Disaster recovery a lungo termine: se perdo l’intero server (guasto hardware, provider che chiude, ransomware), voglio comunque avere una copia sicura, anche se il recupero richiede più tempo

Usare un solo tier di storage per entrambi gli scenari significa quasi sempre pagare troppo per il recovery rapido, oppure avere tempi di ripristino inaccettabili in caso di disastro.

Primo livello: restic su S3 Standard

Il primo livello usa restic, un tool di backup open source con deduplica, cifratura end-to-end e snapshot incrementali, puntato su un bucket S3 in classe Standard. Questo garantisce:

  • Backup incrementali frequenti (nel mio caso, schedulati via systemd timer)
  • Ripristino di singoli file o dell’intero snapshot in pochi minuti
  • Cifratura lato client, quindi anche AWS non può leggere i contenuti

Questo livello copre gli ultimi 30-60 giorni di storico, con retention gestita tramite restic forget --prune schedulato.

Secondo livello: AWS CLI verso Deep Archive

Per la conservazione a lungo termine, uso AWS CLI per sincronizzare periodicamente (mensilmente, nel mio caso) un archivio compresso verso la classe S3 Glacier Deep Archive, la più economica offerta da AWS, pensata esplicitamente per dati che quasi certamente non toccherai mai, ma che devono esistere da qualche parte in caso di disastro totale.

Il costo per GB su Deep Archive è una frazione di quello di S3 Standard, a fronte di tempi di recupero di ore (non minuti) in caso di necessità — un compromesso più che accettabile per uno scenario di “ultima spiaggia”.

Perché non uno strumento unico per tutto

Si potrebbe obiettare che basterebbe usare restic anche per l’archiviazione a lungo termine, magari con un repository separato su Deep Archive. Il problema è che restic (come molti tool di backup incrementale) richiede accesso random ai dati per operazioni di manutenzione (check, prune), operazione che su Deep Archive è lentissima e costosa, perché quella classe di storage è pensata per scritture “a freddo”, non per accessi frequenti anche solo di metadata.

Separare nettamente i due livelli, con strumenti diversi ottimizzati per lo scopo specifico, si è rivelato più semplice da mantenere e molto più economico nel lungo periodo.