Vai al contenuto
HexaTransfer
Torna al blog
Cloud e archiviazione

Versionamento dei file: non perdere mai più le modifiche

Implementa il versionamento dei file per proteggerti dalla perdita di dati. Strategie di controllo versione, ottimizzazione dello storage e flussi di ripristino.

Il versionamento dei file salva ogni revisione in modo da poter tornare indietro dopo sovrascritture accidentali, eliminazioni e danni da ransomware. Abilitalo a livello di piattaforma — S3 Versioning, Azure Blob Versioning, Google Cloud Storage Object Versioning, cronologia versioni Dropbox, versioni maggiori/minori SharePoint — e abbinalo a regole del ciclo di vita che scadono le versioni vecchie dopo 30-180 giorni. Senza versioning, un singolo rm -rf o un client di sincronizzazione difettoso può vaporizzare anni di lavoro in secondi, e il "backup cloud" che pensavi di avere è solo una copia sincronizzata del danno. Il Garante per la protezione dei dati personali ha chiarito che la perdita di dati personali costituisce una violazione del GDPR che può richiedere notifica entro 72 ore.

Cosa fa davvero il versioning della piattaforma

Quando il versioning è abilitato, una sovrascrittura non sostituisce l'oggetto — crea una nuova versione con un nuovo VersionId. I vecchi byte rimangono su disco, recuperabili con quell'ID. Un'eliminazione diventa un "delete marker" anziché una distruzione; le versioni precedenti rimangono ripristinabili finché non le elimini esplicitamente.

Questo conta perché la maggior parte della perdita di dati non è un guasto catastrofico dell'hardware (la durabilità del cloud gestisce quello). È qualcuno che salva un foglio di calcolo vuoto sopra uno popolato, o uno script con un bug che tronca migliaia di file, o ransomware che crittografa tutto ciò che raggiunge. Il versioning ti consente di tornare indietro di 30 giorni e riprendere da dove le cose erano sane.

Il costo del mantenimento di ogni versione

Le versioni consumano storage, e lo storage costa denaro. Un bucket con 10 TB di file e editing attivo può accumulare 30-50 TB di versioni nell'arco di un anno. La mitigazione: regole del ciclo di vita che scadono le versioni non correnti dopo un periodo impostato, o le spostano in livelli più economici.

Una pratica policy del ciclo di vita S3:

  • Versioni non correnti: transizione a S3 Standard-IA dopo 7 giorni
  • Versioni non correnti: transizione a Glacier Flexible Retrieval dopo 30 giorni
  • Versioni non correnti: eliminazione dopo 180 giorni
  • Delete marker senza versioni non correnti: eliminazione dopo 1 giorno

Per Azure e GCS gli equivalenti usano le condizioni di età blobVersion o Noncurrent. Modella il costo: 10 TB di versioni in S3 Standard è 230 $/mese; in Glacier Flexible è 36 $/mese. La transizione del livello vale pochi minuti di YAML.

Versioni maggiori vs minori

I sistemi orientati ai documenti come SharePoint, Google Workspace e Notion distinguono le versioni maggiori (pubblicate) da quelle minori (bozze). Le bozze si accumulano tra le milestone; le maggiori rappresentano uno stato stabile approvato da qualcuno. Per contratti, documenti di policy e specifiche, questa distinzione è preziosa — puoi condividere pubblicamente il link "versione maggiore 3" continuando a modificare privatamente la bozza v3.1, v3.2.

Usa le versioni maggiori come punto di riferimento per gli stakeholder esterni. Bloccale con permessi di sola lettura o workflow di approvazione in modo che nessuno sovrascriva accidentalmente lo stato pubblicato. Il "Require content approval" di SharePoint è un clic; il flow di approvazione di Google Drive è una configurazione di 2 minuti.

Controllo versione per codice sorgente vs documenti

Git funziona magnificamente per il testo (codice sorgente, markdown, file .tf) perché le differenze sono significative riga per riga. Funziona male per i binari: un file .psd da 50 MB committato due volte raddoppia la dimensione del repo, e git diff non può aiutarti. Git LFS (Large File Storage) sposta i binari in un archivio separato e mantiene i puntatori nel repo — sensato per gli asset grafici, pessimo per i documenti generali.

Per i file .docx, .xlsx, .pptx e .pdf, usa il versioning integrato della piattaforma cloud anziché Git. SharePoint, Drive e Dropbox archiviano tutti i delta per versione nativamente e rendono un'interfaccia timeline che gli utenti business possono navigare. Per i contenuti misti (codice più PDF più file di design), alcuni team usano DVC o LakeFS come layer Git-for-data su object storage.

Retention legata ai calendari di conformità

Le normative dettano per quanto tempo le versioni devono vivere. La regola SEC 17a-4 richiede i record dei broker-dealer per 3-6 anni. L'HIPAA conserva i record per un minimo di 6 anni. SOX vuole 7 anni per i record finanziari. Il GDPR limita dall'altra parte — non conservare i dati personali più a lungo del necessario.

Tagga i file sensibili in modo che le regole del ciclo di vita rispettino i minimi e i massimi normativi. Un tag S3 come retention-class: sox-7y può guidare le transizioni del ciclo di vita, le durate dell'Object Lock ed eventuale eliminazione. Usa S3 Object Lock con Compliance Mode per le copie normative immutabili — nemmeno gli utenti root possono eliminare entro il periodo di retention, che è esattamente ciò che le regole WORM (Write Once Read Many) richiedono.

Protezione dal ransomware tramite versioni

Un attacco ransomware che raggiunge i tuoi client di sincronizzazione crittograferà i file sull'endpoint e invierà le versioni crittografate nel cloud. Il versioning ti salva — le versioni pre-crittografia esistono ancora. Ma solo se due cose sono vere: il versioning è abilitato prima dell'attacco, e la retention è abbastanza lunga da coprire il tempo di rilevamento.

Il tempo medio di permanenza del ransomware nel 2025 si attesta intorno a 11 giorni per le aziende di medie dimensioni. Una retention delle versioni di 30 giorni è il minimo; 90 giorni è più sicuro. Abbina il versioning alla protezione da eliminazione (S3 MFA Delete, soft delete Azure con un admin diverso) in modo che un aggressore che compromette un account non possa eliminare la cronologia delle versioni. Testa il ripristino trimestralmente — simula l'eliminazione di una cartella di test e cronometra il recupero.

Convenzioni di denominazione per le versioni condivise

Quando condividi una versione specifica esternamente — inviando a un cliente "la v3 approvata del contratto" — hai bisogno di un puntatore stabile che non si sposti quando qualcuno modifica. Usa uno di tre pattern:

  1. Presigned URL a un VersionId specifico (S3: ?versionId=...) — valido al massimo 7 giorni, immutabile
  2. Una copia della versione approvata in un bucket /pubblicato/ separato con la versione nel nome file (contratto-v3.0-2026-12-15.pdf)
  3. Un'esportazione PDF snapshot in modo che le modifiche post-condivisione non possano influenzare la copia condivisa

Per la condivisione una tantum di uno snapshot specifico con qualcuno al di fuori della tua piattaforma, gli strumenti di trasferimento crittografati end-to-end inviano un file specifico con un link monouso. HexaTransfer funziona per questo: carica la versione congelata, invia il link, e il destinatario ottiene esattamente ciò che intendevi senza necessità di accesso all'intera piattaforma.

Monitoraggio e avvisi sugli eventi di versione

La cronologia delle versioni è utile solo se noti quando ne hai bisogno. CloudTrail (AWS), Activity Log (Azure) e Cloud Audit Logs (GCP) registrano ogni evento di versioning. Avvisa su tassi di eliminazione insoliti — 10.000 chiamate DeleteObject in un'ora probabilmente non è un utente che fa pulizia.

Costruisci una semplice dashboard che mostra i conteggi delle versioni per bucket, lo storage totale delle versioni e i rapporti delete-marker. Un bucket dove i delete marker superano improvvisamente gli oggetti live è un segnale di pericolo: o è avvenuta un'eliminazione di massa, o la retention del versioning sta per eliminare cose che volevi mantenere. I riepiloghi email settimanali superano l'attesa dell'audit trimestrale.

Il runbook di recupero

Documenta il processo di ripristino prima di averne bisogno. Un buon runbook copre:

  1. Come elencare le versioni (aws s3api list-object-versions, az storage blob list --include v)
  2. Come ripristinare un VersionId specifico come versione corrente (S3: copia con --version-id)
  3. Come ripristinare in massa un intero prefisso a un punto nel tempo (script con filtri timestamp)
  4. Come ripristinare gli oggetti eliminati (rimuovere i delete marker)
  5. Chi ha il permesso di fare ciascuna operazione (di solito non la stessa persona che ha causato la perdita)

Stampalo. Percorrilo una volta al trimestre con uno scenario finto. Quando accade il vero evento, la memoria muscolare supera la lettura della documentazione sotto pressione.

Prova su https://hexatransfer.com — gratuito, senza account, max 10 GB.

Invia file di grandi dimensioni in modo sicuro con crittografia end-to-end

Trasferisci file fino a 10 GB gratuitamente con crittografia end-to-end. Nessun account necessario. I tuoi file vengono crittografati nel browser prima del caricamento — nessun altro può leggerli.

Invia un file