Skip to content
NTFS2exFAT

Come funziona NTFS2exFAT

Cinque fasi, e il rifiuto di saltarne anche una sola. Questa pagina spiega cosa succede ai tuoi dati a ogni passaggio e quali controlli ti separano da un errore.

Le cinque fasi

1. Controllo del disco (sola lettura)

L'app analizza il disco senza modificare nulla. Conta file e cartelle, segnala i nomi che exFAT non permette, salta le cartelle di sistema come System Volume Information e $RECYCLE.BIN e confronta lo spazio usato indicato dal disco con i file che macOS riesce davvero a vedere. Una grande differenza è un avviso che alcuni dati potrebbero essere invisibili a macOS.

  • Nulla viene scritto sul disco
  • Gli elementi illeggibili vengono elencati, non saltati in silenzio
  • Vedi quanto spazio serve per il backup

2. Backup con checksum

I file vengono copiati in una cartella a tua scelta. Durante la copia di ciascun file ne viene calcolato lo SHA-256. I progressi sono salvati in un manifest in sola aggiunta, così puoi mettere in pausa, chiudere e riprendere.

  • Il backup non può trovarsi sul disco che verrà cancellato
  • I percorsi del backup evitano collisioni sui volumi che non distinguono maiuscole e minuscole
  • I file vengono scritti con un nome temporaneo e rinominati solo a copia completata

3. Verifica del backup

Ogni file del backup viene riletto dal disco, aggirando la cache, e il suo checksum viene confrontato con quello calcolato dall'originale. Basta un solo byte alterato per far fallire il controllo.

  • Le letture arrivano dal disco, non dalla memoria
  • Qualsiasi errore ferma il processo prima del passaggio di formattazione

4. Cancellazione protetta

Il passaggio di formattazione è disponibile solo quando tutte queste condizioni sono vere: il backup è completamente verificato, i file del backup esistono ancora con le dimensioni giuste, il disco ha ancora lo stesso volume, la stessa identità e la stessa dimensione, il backup non si trova su quel disco e hai digitato il nome esatto del disco. L'app registra che sta per cancellare prima di toccare il disco, così un'eventuale interruzione può essere riconosciuta in seguito.

  • Vengono proposti solo dischi esterni
  • Il comando di formattazione agisce sul volume esatto di cui è stato fatto il backup
  • Se la formattazione richiede un'autorizzazione, macOS te la chiede

5. Ripristino e verifica

Tutto viene copiato sul nuovo volume exFAT e riletto di nuovo per confrontare i checksum. I nomi che exFAT non permette vengono rinominati ed elencati. Un rapporto finale viene salvato accanto al backup.

  • Un file di backup danneggiato non viene mai copiato sul nuovo disco
  • Il backup resta finché non lo elimini tu

Cosa significa «verificato» qui

Un file è considerato verificato quando il suo contenuto, riletto dal disco dopo la scrittura, produce lo stesso SHA-256 dell'originale. L'app non si basa solo su dimensione o data. L'unica eccezione sono i file di metadati di macOS chiamati ._*: dopo la copia su exFAT, macOS li fonde negli attributi estesi, quindi si può solo confermare che siano stati scritti, non rileggerli.

Nomi dei file e metadati

exFAT non permette i caratteri " * : < > ? \ |, i caratteri di controllo né i nomi che finiscono con uno spazio o un punto. Questi nomi vengono sostituiti ed elencati nel rapporto. I nomi che differiscono solo per maiuscole e minuscole vengono resi univoci. Le date di modifica di file e cartelle vengono conservate.

Il limite, detto onestamente

Il lettore NTFS integrato in macOS può nascondere o rinominare i file i cui nomi Windows non permette. NTFS2exFAT lavora con ciò che macOS gli mostra. Avvisa quando lo spazio usato dal disco è molto più grande dei file visibili, ma non può rilevare un singolo file nascosto. Se il tuo disco è stato scritto da un driver NTFS per Mac o Linux, controllalo in Windows o con un driver basato su ntfs-3g come NTFSTool prima di convertire.

Sotto il cofano

Il motore di conversione è una piccola libreria Swift senza dipendenze oltre a Foundation e CryptoKit. È condiviso dall'app per Mac e dallo strumento da riga di comando.

  • Manifest: una riga JSON per file con percorso, dimensione, checksum e stato
  • Copia: buffer da 4 MiB, letture e scritture senza cache, fsync, rinomina atomica
  • Concorrenza: più file alla volta, un solo file di grandi dimensioni alla volta per worker
  • I controlli di sicurezza risiedono nel motore, quindi l'app e la riga di comando applicano le stesse regole

Come è stato testato

Il motore ha test unitari (incluso un test che altera un byte in un backup verificato e si aspetta che il controllo fallisca) e test end-to-end che creano una vera immagine disco NTFS, eseguono la conversione completa e confrontano con SHA-256 ogni file ripristinato. I test su dischi esterni fisici sono ancora in corso, ed è uno dei motivi per cui questa è una beta.

Preferisci la riga di comando?

Lo stesso motore è disponibile come ntfs2exfat-cli.

ntfs2exfat-cli list
ntfs2exfat-cli start disk4 ~/Backups
ntfs2exfat-cli backup ~/Backups/NTFS2exFAT-<job>
ntfs2exfat-cli erase ~/Backups/NTFS2exFAT-<job> --confirm "MY DRIVE"
ntfs2exfat-cli restore ~/Backups/NTFS2exFAT-<job>

Codice sorgente su GitHub →

Pronto a cambiare il tuo disco?