Ceci est une ancienne révision du document !



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 est une évolution plus modernes de FAT32, et vise aux mêmes usages.

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 (16 exaoctets pour les fichiers, 128 pétaoctets pour les partitions).
Prévu pour des supports mobiles (disque, carte, clé), exFat est plus limité que des systèmes de fichiers comme Ext4, BTRFS ou NTFS : il ne gère pas des droits d'accès par utilisateur (les fichiers sont accessibles à toute personne ayant accès au support) ; il ne peut être redimensionné ; il n'accepte pas les caractères spéciaux dans les noms de fichiers ou de répertoires ; il ne distingue pas majuscules et minuscules dans les noms de fichiers ou de répertoires.

Jusqu'au 27 août 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. Il est lu par la plupart des TV modernes et des médias centers.

Plus d'info sur wikipedia.

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 :

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 nom_partition /dev/sdXN

ou

mkfs.exfat -n nom_partition /dev/sdXN

en remplaçant sans vous tromper X et N par les bonnes valeurs du support à formater (par exemple sdc2). En cas d'erreur vous formaterez le mauvais support et perdrez les données qui y sont stockées.

-n nom_partition est optionnel, et sert à donner un nom ("étiquette") à votre volume (partition) exFat. Le nom est limité à 15 caractères, et il faut éviter les espaces, les caractères accentués, cédilles et autres signes diacritiques.

Autres options (à n'utiliser que si vous comprenez ce que vous faite) :
-i VOL_ID : définit l’ID du volume à la valeur spécifiée dans VOL_ID. Il s’agit d’un nombre hexadécimal de 32 bits. S’il n’est pas défini, un ID basé sur l’heure actuelle est défini.

-p SECTOR : spécifie le premier secteur de la première partition du disque. Ce paramètre est facultatif et la valeur par défaut est zéro.

-s SECTORS : définit le nombre de secteurs physiques par grappe d’allocation. Il doit s’agir d’une puissance de deux, comme 1, 2, 4, 8, etc. Facultatif.

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.

Installer exFat dans la partition d'un disque dur classique : c'est possible, même si exFat est surtout conçu pour des supports mobiles à mémoire flash (carte, clé,disque externe).

Déplacer une partition : possible avec gparted, mais impossible avec gnome-disk-utility.

Redimensionner une partition exFat : impossible, que ce soit sous linux ou windows. Il faut alors supprimer et recréer la partition à la bonne taille.

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 

Exfat ne prend pas en charges les liens symboliques et les fichiers cachés.

Les noms de répertoires et de fichiers ne peuvent contenir de caractères spéciaux (/ \ : * ? " < > | ou "espace" en début/fin de nom). Ces noms sont de plus insensibles à la casse : 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
  • exfat.1711270855.txt.gz
  • Dernière modification: Le 24/03/2024, 10:00
  • par 86.202.8.12