exFAT
exFAT (Extended File Allocation Table) est un système de fichiers apparu en 2006 et conçu essentiellement pour les mémoires flash (comme les clés USB, les disques USB ou les cartes SD).
Il permet de dépasser les limites de FAT32 : 4 Gio par fichier et 2 To par partition. Avec exFat, les limites sont tellement élevées qu'on peut ne pas en tenir compte.
Contrairement à des systèmes de fichiers comme Ext4, BTRFS ou NTFS, les systèmes de fichiers FAT ou exFat ne gèrent pas des droits d'accès différenciés par utilisateur. Les fichiers sont donc accessibles à toute personne ayant accès au support (disque, carte, clé).
Jusqu'au 27 aout 2019, exFat était la propriété de Microsoft. Des royalties étaient perçues. Les brevets exFat sont maintenant propriété de Open invention network qui en a libéré l'utilisation. L'implémentation linux est libre.
Jusqu'en 2022, linux savait lire ou créer une partition exFat, mais pas la réparer. Depuis 2022 et la version 1.2 de exfatprogs, une partition exFat peut être lue, créée et réparée (you can now repair exfat).
Ce système de fichier est compatible avec Windows depuis XP, avec MacOS et avec Linux, si les pilotes sont installés.
Plus d'info sur wikipedia.
Installer le support d'exFat
Par défaut, le support du format exFat n'est pas installé sur Ubuntu.
Pour que vos clefs USB, disques USB, cartes mémoire et autres périphériques utilisant exFat soient lus et montés automatiquement dès leur branchement, mais aussi pour pouvoir les (re)formater, il faut installer le support de ce format :
- A partir de Ubuntu 22.04 : cliquez ici pour installer exfatprogs
- Avant Ubuntu 22.04 : cliquez ici pour installer exfat-utils exfat-fuse
Formater une partition en exfat
Rappel : le support de exFat doit être installé, ce qui n'est pas le cas par défaut.
En mode graphique
Il existe 2 logiciels principaux sous Ubuntu : gnome-disk-utility ("Disques") ou gparted. Si vous utilisez Kubuntu, KDE Partition Manager.
Avec ces logiciels, procédez de manière habituelle pour formater votre clé ou carte mémoire au format exFat.
Avec gnome-disk-utility ("Disques"), au moment du formatage, prenez l'option "autre" qui vous permettra alors d'utiliser l'exFat.
En ligne de commande
sudo mkexfatfs -n MonEXFAT /dev/sdXN ou mkfs.exfat -n MonEXFAT /dev/sdXN
en remplaçant avec certitude X et N par les bonnes valeurs du support à formater. Sinon vous formaterez le mauvais support et perdrez vos données qui y sont stockées.
Si vous choisissez de mettre un nom de volume ("étiquette"), et pour vous épargner des tracas ultérieurs, évitez les espaces, les caractères accentués, cédilles et autres signes diacritiques.
Sur des appareils spécifiques
Pour une carte-mémoire que vous destinez à votre caméscope ou à votre appareil photo, le mieux (si la fonctionnalité existe), et de loin, est de procéder depuis l'option intégrée dans ces appareils. Le format est alors contrôlé par le fabricant de l'appareil utilisateur, ce qui garantit une compatibilité maximale.
Contrôler la qualité
sudo fsck /dev/sdb17 fsck de util-linux 2.34 exfatfsck 1.3.0 Checking file system on /dev/sdb17. File system version 1.0 Sector size 512 bytes Cluster size 128 KB Volume size 39 GB Used space 1806 KB Available space 39 GB Totally 0 directories and 0 files
sudo fsck /dev/sdc1 fsck de util-linux 2.37.2 exfatprogs version : 1.1.3 /dev/sdc1: clean. directories 86, files 1683
Contrainte et limites
Exfat ne prend pas en charges les liens symboliques et les fichiers cachés.
Les répertoires et fichiers ne peuvent contenir de caractères spéciaux.
Insensible à la casse dans les noms de fichiers et de répertoires : les caractères « minuscules » et « majuscules » sont équivalents. Linux peut avoir dans le même répertoire 2 fichiers avec le même nom si la casse est différente : pas exFat.
Exemples
touch '/' ; touch '\' ; touch ':' ; touch '?' ; touch '*' ; touch '<' ; touch '>' ; touch '"' ; touch ' b C ' ; touch ' B c ' ; ls -ls touch: initialisation des dates de '/': Permission non accordée touch: initialisation des dates de '\': Aucun fichier ou dossier de ce type touch: initialisation des dates de ':': Aucun fichier ou dossier de ce type touch: initialisation des dates de '?': Aucun fichier ou dossier de ce type touch: initialisation des dates de '*': Aucun fichier ou dossier de ce type touch: initialisation des dates de '<': Aucun fichier ou dossier de ce type touch: initialisation des dates de '>': Aucun fichier ou dossier de ce type touch: initialisation des dates de '"': Aucun fichier ou dossier de ce type total 0 0 -rwxr-xr-x 1 a a 0 oct. 26 12:25 ' b C '
Il est possible d'effectuer un contrôle préventif de la qualité des répertoires à transférer.
rm -f /tmp/TriEXFAT.txt ## Recherche des liens symboliques exclus find $HOME/Test $HOME/Documents $HOME/Images $HOME/Musique $HOME/Vidéos $HOME/Téléchargements -type l -name "*" > /tmp/ProblèmesEXFAT.txt find $HOME/Test $HOME/Documents $HOME/Images $HOME/Musique $HOME/Vidéos $HOME/Téléchargements -type f -name "*" -print0 | while IFS='' read -r -d '' file; do ## Test des caractères spéciaux. if [[ "$(echo "'$file'" | tr '><"|?*:\\' '!!!!!!!!' )" != "'$file'" ]]; then echo "'$file'" >> /tmp/ProblèmesEXFAT.txt ;fi # Test des fichiers cachés. if [ "$(echo $(basename "$file")|cut -c1)" = "." ]; then echo "'$file'" >> /tmp/ProblèmesEXFAT.txt ;fi # Test des fichiers en double echo "'$file'" $(echo "'$file'" | tr '[:lower:]' '[:upper:]') >> /tmp/TriEXFAT.txt done sort -f /tmp/TriEXFAT.txt | uniq -f1 -D>>/tmp/ProblèmesEXFAT.txt echo Liste des fichiers à contrôler; cat /tmp/ProblèmesEXFAT.txt