Skip to content
NTFS2exFAT

Fonctionnement de NTFS2exFAT

Cinq phases, et aucune ne peut être sautée. Cette page explique ce qui arrive à vos données à chaque étape et quelles vérifications vous séparent d'une erreur.

Les cinq phases

1. Analyse du disque (lecture seule)

L'app parcourt le disque sans rien modifier. Elle compte les fichiers et les dossiers, signale les noms que exFAT n'autorise pas, ignore les dossiers système comme System Volume Information et $RECYCLE.BIN, et compare l'espace utilisé indiqué par le disque avec les fichiers que macOS peut réellement voir. Un écart important avertit que certaines données peuvent être invisibles pour macOS.

  • Rien n'est écrit sur le disque
  • Les éléments illisibles sont listés, pas ignorés en silence
  • Vous voyez l'espace nécessaire pour la sauvegarde

2. Sauvegarde avec sommes de contrôle

Les fichiers sont copiés dans un dossier de votre choix. Pendant la copie de chaque fichier, son SHA-256 est calculé. La progression est enregistrée dans un manifeste en ajout seul, ce qui permet de mettre en pause, de quitter et de reprendre.

  • La sauvegarde ne peut pas se trouver sur le disque qui sera effacé
  • Les chemins de sauvegarde évitent les collisions sur les volumes insensibles à la casse
  • Les fichiers sont écrits sous un nom temporaire et renommés seulement une fois complets

3. Vérification de la sauvegarde

Chaque fichier sauvegardé est relu depuis le disque, sans passer par le cache, et sa somme de contrôle est comparée à celle calculée à partir de l'original. Un seul octet modifié fait échouer la vérification.

  • Les lectures viennent du disque, pas de la mémoire
  • Tout échec arrête le processus avant l'étape de formatage

4. Effacement protégé

L'étape de formatage n'est disponible que si toutes ces conditions sont réunies : la sauvegarde est entièrement vérifiée, les fichiers de sauvegarde existent toujours avec les bonnes tailles, le disque a toujours la même identité de volume et de disque ainsi que la même taille, la sauvegarde ne se trouve pas sur ce disque, et vous avez saisi le nom exact du disque. L'app consigne qu'elle s'apprête à effacer avant de toucher au disque, afin qu'une interruption puisse être reconnue plus tard.

  • Seuls les disques externes sont proposés
  • La commande de formatage vise exactement le volume qui a été sauvegardé
  • Si le formatage demande une autorisation, macOS vous la demande

5. Recopie et vérification

Tout est copié sur le nouveau volume exFAT et relu pour comparer les sommes de contrôle. Les noms que exFAT n'autorise pas sont renommés et listés. Un rapport final est enregistré à côté de la sauvegarde.

  • Un fichier de sauvegarde corrompu n'est jamais copié sur le nouveau disque
  • La sauvegarde est conservée jusqu'à ce que vous la supprimiez

Ce que « vérifié » signifie ici

Un fichier est considéré comme vérifié lorsque son contenu, relu depuis le disque après l'écriture, produit le même SHA-256 que l'original. L'app ne se fie pas à la seule taille ou à la seule date. La seule exception concerne les fichiers de métadonnées macOS nommés ._* : après la copie sur exFAT, macOS les fusionne dans les attributs étendus ; on ne peut donc que confirmer qu'ils ont été écrits, pas les relire.

Noms de fichiers et métadonnées

exFAT n'autorise pas les caractères " * : < > ? \ |, les caractères de contrôle, ni les noms se terminant par une espace ou un point. Ces noms sont remplacés et listés dans le rapport. Les noms qui ne diffèrent que par les majuscules et les minuscules sont rendus uniques. Les dates de modification des fichiers et des dossiers sont conservées.

La limite, en toute honnêteté

Le lecteur NTFS intégré à macOS peut masquer ou renommer des fichiers dont les noms ne sont pas autorisés par Windows. NTFS2exFAT travaille avec ce que macOS lui montre. Il avertit lorsque l'espace utilisé du disque est bien supérieur aux fichiers visibles, mais il ne peut pas détecter un fichier masqué isolé. Si votre disque a été écrit par un pilote NTFS pour Mac ou Linux, vérifiez-le sous Windows ou avec un pilote basé sur ntfs-3g comme NTFSTool avant de convertir.

Sous le capot

Le moteur de conversion est une petite bibliothèque Swift sans autre dépendance que Foundation et CryptoKit. Elle est partagée par l'app Mac et l'outil en ligne de commande.

  • Manifeste : une ligne JSON par fichier avec chemin, taille, somme de contrôle et état
  • Copie : tampons de 4 Mio, lectures et écritures sans cache, fsync, renommage atomique
  • Concurrence : plusieurs fichiers à la fois, un seul gros fichier à la fois par worker
  • Les contrôles de sécurité sont dans le moteur : l'app et la ligne de commande appliquent donc les mêmes règles

Comment il a été testé

Le moteur dispose de tests unitaires (dont un test qui modifie un octet dans une sauvegarde vérifiée et s'attend à ce que la vérification échoue) et de tests de bout en bout qui construisent une vraie image disque NTFS, exécutent la conversion complète et comparent chaque fichier restauré par SHA-256. Les tests sur de véritables disques externes se poursuivent, ce qui explique en partie le statut de bêta.

Vous préférez la ligne de commande ?

Le même moteur est disponible sous la forme de 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>

Code source sur GitHub →

Prêt à changer le format de votre disque ?