Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
exfat [Le 07/04/2019, 22:54] 37.169.181.98 [exFAT] |
exfat [Le 06/04/2024, 15:55] (Version actuelle) 86.202.8.12 [Opération sur une partition exFat] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>Bionic Xenial système partitions}} | + | {{tag>Bionic système partitions}} |
---- | ---- | ||
====== exFAT====== | ====== exFAT====== | ||
- | exFAT (Extended File Allocation Table) est un système de fichiers propriétaire Microsoft, conçu essentiellement pour les **mémoires flash**.\\ | + | 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 la limite de 4 Gio par fichier de FAT32. Comme les autres FAT, il est accessible à tous en lecture et écriture.\\ | + | 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 (comme FAT32) 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 ; il n'a pas de journalisation ; il ne peut être chiffré au niveau //File System// ; il n'a pas de défragmentation à la volée, et peut finir après de nombreux cycles écriture / effacement par être très fragmenté, ce qui réduit les vitesses d'accès. | ||
- | **[[https://www.eyrolles.com/Chapitres/9782212129953/Chap-6_Morand.pdf|Il est protégé d'une destruction de la table d'allocation des fichiers pouvant survenir lors d'un arrêt sauvage de l'ordinateur]]__ A CONDITION DE DISPOSER DU BON LOGICIEL.__** | + | 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 [[https://fr.m.wikipedia.org/wiki/Open_invention_network|Open invention network]] qui en a libéré l'utilisation. L'implémentation linux est libre. |
- | <note tip>support du transaction-safe FAT (TFAT) file system ou système de fichiers à transactions (modifications) sécurisées de la table d’allocation des fichiers (fonctionnalité optionnelle introduite dans WinCE). En résumé, les métadonnées de la TFAT – ou pour traduire FAT (table d’allocation des fichiers) à transactions sécurisées – sont protégés contre les interruptions survenant lors de la modification d’un fichiers en ne sauvegardant les modifications que si celles-ci arrivent à leur terme, particulièrement utile dans le cas de support de stockage amovibles pouvant être retirés à tout moment ; pour cela les modifications des fichiers ou répertoires non terminées sont effectuées dans des clusters séparés alloués dans une des copies de la FAT, et les nouveaux clusters référencés ne remplacent les anciens que lors de la fin de la transaction, pour synchroniser les copies de la FAT ; en cas de problème, les données de la copie de la FAT de travail sont ignorées en y libérant les clusters temporaires des transactions non terminées.</note> | + | |
- | <note warning>En date de février 2019, Linux **ne sait pas réparer ce système** de fichiers (cf. man exfatfsck). Donc, à moins d'avoir Windows installé dans la même machine, le format exfat **ne convient pas** à une partition **interne**.</note> | + | 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 ([[https://www.techzine.eu/news/devops/92986/you-can-now-repair-exfat-drives-with-linux/|you can now repair exfat]]). |
- | <note tip>Les windows récents ne savent pas accéder à une partition **FAT32** de taille supérieure à 32768 MO.</note> | + | 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. |
- | ===== Avoir accès à l'exFAT en écriture ===== | + | |
- | Pour que vos clefs USB, cartes mémoire et autres périphériques utilisant le système de fichiers exFat soient montés automatiquement dès leur branchement et pour pouvoir les reformater, il faut installer les paquets exfat. | + | Plus d'info sur [[https://fr.m.wikipedia.org/wiki/ExFAT|wikipedia]]. |
- | [[:tutoriel:comment_installer_un_paquet|installez les paquets]] **[[apt>exfat-utils,exfat-fuse|exfat-utils et exfat-fuse]]**. | + | ===== Installer le support d'exFat ===== |
- | <code>sudo apt-get install --reinstall -y exfat-fuse exfat-utils</code> | + | 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 [[:tutoriel:comment_installer_un_paquet|installer]] le support de ce format : | ||
+ | * A partir de Ubuntu 22.04 : cliquez ici pour installer **[[apt>exfatprogs]]** | ||
+ | * Avant Ubuntu 22.04 : cliquez ici pour installer **[[apt>exfat-utils,exfat-fuse|exfat-utils exfat-fuse]]** | ||
===== Formater une partition en exfat ===== | ===== Formater une partition en exfat ===== | ||
- | Si vous avez un support (disque, clef ou carte-mémoire) sans table de partitions, il faut d'abord créer la **table de partitions** puis une partition.\\ | + | ==== Le principe ==== |
- | Lancez [[gparted|GParted : éditeur de partitions]] ou, si vous utilisez Kubuntu ou KDE Neon, [[kde_partition_manager|KDE Partition Manager]]. \\ | + | Rappel : le support de exFat doit être installé, ce qui n'est pas le cas par défaut. |
- | Choisissez avec certitude le bon /dev/sdX - en cas de doute, demandez sur le forum - puis\\ | + | |
- | > menu "Périphérique" puis "Créer une table de partitions" | + | |
+ | Pour pouvoir être formatée, la partition doit exister. Concrètement, pour un support entier (clé, carte SD, disque), il n'y a rien de spécial à faire. Pour formater un volume ne prenant pas la totalité du support physique, il faut d'abord créer ce volume (via [[gparted|gparted]] ou [[gnome-disk-utility|gnome-disque]]). | ||
- | Ensuite il va falloir créer la partition puis la formater. | + | Le formatage va permettre de découper l'espace physique en secteurs logiques (cluster) stockant des données de fichiers. |
+ | Si le fichier ne fait qu'un seul caractère, un secteur logique est utilisé. | ||
+ | En règle générale, un secteur logique d'une partition EXT4 occupe toujours 512 octets (dans certains cas il est aligné sur le secteur physique: 4096 ) quelque soit la taille de la partition. | ||
+ | Ce n'est pas le cas pour le formatage en EXFAT, la taille de ce secteur logique dépend de ta taille de la partition. Plus la partition est grande, plus la taille d'allocation est importante. Si les fichiers à sauvegarder sont très petits, il peut être nécessaire de fixer soit-même la taille du secteur sous peine de perdre une énorme quantité d'espace disque. La valeur minima est de 1024. Donc quoiqu'on fasse, une partition EXTFAT peut contenir deux fois moins de fichiers de très petite taille à capacité égale si choix de partition EXT4 ou NTFS. | ||
+ | Voici le tableau par défaut. <code bash> man mkfs.exfat | ||
+ | Card Capacity Range Cluster Size Boundary Unit | ||
+ | ────────────────────────────────────────────────────── | ||
+ | ≤8 MiB 8 KiB 8 KiB | ||
+ | >8 MiB ≤64 MiB 16 KiB 16 KiB | ||
+ | >64 MiB ≤256 MiB 16 KiB 32 KiB | ||
+ | >256 MiB ≤1 GiB 16 KiB 64 KiB | ||
+ | >1 GiB ≤2 GiB 32 KiB 64 KiB | ||
+ | >2 GiB ≤32 GiB 32 KiB 4 MiB | ||
+ | >32 GiB ≤128 GiB 128 KiB 16 MiB | ||
+ | >128 GiB ≤512 GiB 256 KiB 32 MiB | ||
+ | >512 GiB ≤2 TiB 512 KiB 64 MiB</code><note help>Internet indique que si la taille du disque dépasse 2To, la taille du secteur logique resterait limitée à 512 KiB</note> | ||
- | **ATTENTION !!!** les données présentes seront effacées. | ||
- | <note tip>Pour une carte-mémoire que vous destinez à votre caméscope ou à votre appareil photo, le mieux, et de loin, est de procéder depuis ces appareils.</note> | ||
- | ==== Ubuntu version 18.04 ==== | + | ==== En mode graphique ==== |
- | S'assurer d'avoir compris les enjeux de l'avertissement en haut de page.\\ | + | Il existe 2 logiciels principaux sous Ubuntu : [[gnome-disk-utility]] ("Disques") ou [[gparted]]. Si vous utilisez Kubuntu, [[kde_partition_manager|KDE Partition Manager]]. |
- | a) Pour une carte-mémoire, voir ci-dessus.\\ | + | |
- | b) Pour une partition de disque interne : | + | |
- | <note warning> Pour une partition de disque **interne**, procédez depuis le Windows de la même machine ou **abstenez-vous si vous ne savez pas exactement ce que vous faites**. | + | |
- | </note> | + | |
- | Puis, en ayant redémarré Ubuntu, vous pourrez vérifier avec le gestionnaire de disques que le bouton "monter au démarrage du système", si c'est votre souhait, soit bien coché. | + | |
- | <note warning> | + | |
- | Pensez à faire vérifier la partition périodiquement par Windows. | + | |
- | </note> | + | |
- | c) Pour une partition de disque externe | + | |
- | \\ Il reste possible de formater en exfat avec la même méthode que pour les versions d'Ubuntu inférieures à la 17.10.\\ | + | |
- | Ou bien utilisez l'application DISQUE, créez une partition s'il n'y en a pas encore (à condition que la partition soit parmi les 31 premières du disque), choisissez l'option **autre** et choisissez **exfat**. [[http://pix.toile-libre.org/upload/original/1525453631.png|Exemple en image]]. | + | |
- | <note important>Si l'application **disques** se révèle incapable de créer la partition EXFAT (accès aux derniers secteurs du disque), essayer de créer une partition NTFS afin de vérifier qu'il a la même erreur. Le palliatif sera d'utiliser **GPARTED** pour fabriquer la partition NTFS puis de lancer l'application **disques** pour lui demander de transformer la partition NTFS en partition EXFAT important</note> | + | |
- | <note warning> | + | |
- | Pensez à faire vérifier la partition périodiquement par Windows ou par la commande suivante: | + | |
- | <code>sudo fsck /dev/sdXN | + | |
- | fsck de util-linux 2.31.1 | + | |
- | exfatfsck 1.2.8 | + | |
- | Checking file system on /dev/sda15. | + | |
- | File system version 1.0 | + | |
- | Sector size 512 bytes | + | |
- | Cluster size 32 KB | + | |
- | Volume size 6082 MB | + | |
- | Used space 6082 MB | + | |
- | Available space 64 KB | + | |
- | Totally 73 directories and 784 files. | + | |
- | File system checking finished. No errors found </code>. | + | |
- | </note> | + | Avec ces logiciels, procédez de manière habituelle pour formater votre clé ou carte mémoire au format exFat. |
- | ==== Ubuntu version 17.10 ==== | + | Avec **[[gnome-disk-utility]]** ("Disques"), au moment du formatage, prenez l'option "autre" qui vous permettra alors d'utiliser l'exFat. |
- | Utilisez l'application DISQUE, créez une partition s'il n'y en a pas encore, choisissez l'option personnalisée et tapez les caractères **exfat** à la place de **btrfs** qui est proposé. | + | |
- | ==== Ubuntu inférieur à la version 17.10 ==== | + | ==== En ligne de commande ==== |
- | Pour formater en exfat la **partition numéro N** d'un support /dev/sd**X** à partir d'Ubuntu,\\ | + | <code>sudo mkexfatfs -n nom_partition /dev/sdXN</code> |
- | a) Utilisez gparted ou partitionmanager pour créer une partition **non formatée**. N'oubliez pas de **valider**. \\ | + | ou |
- | b) Fermez gparted / partitionmanager et attendez quelques secondes.\\ | + | <code>mkfs.exfat -n nom_partition /dev/sdXN</code> |
- | c) Formatez en ligne de commande : | + | 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__. |
- | <code>sudo mkexfatfs -n MonEXFAT /dev/sdXN</code> | + | |
- | en remplaçant avec **certitude** X et N par les bonnes valeurs. <note warning>**ATTENTION !!!** Bien vérifier les valeurs X et N **juste avant** les opérations, sous peine de perdre des données ailleurs !</note> | + | |
- | À la place de MonEXFAT, vous pouvez mettre une autre étiquette, jusqu'à quinze caractères. | + | |
- | <note tip>Pour vous épargner des tracas ultérieurs, **évitez les espaces, les caractères accentués, cédilles et autres signes diacritiques**.</note> | + | |
- | ===== Des avis d'utilisation ===== | + | |
- | [[https://www.pcastuces.com/pratique/materiel/fat32_exfat_ntfs/page4.htm|PC astuce]] | + | |
- | [[https://www.touslesdrivers.com/index.php?v_page=3&v_code=7351|Freebox]] | + | **-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**. |
- | [[https://support.wdc.com/knowledgebase/answer.aspx?ID=5521&lang=fr|WDC]] | + | Autres options (à n'utiliser que si vous comprenez ce que vous faite) :\\ |
+ | **-c Nk** Permet de forcer la taille du cluster à une autre valeur que celle prévue au tableau ci-dessus. Utile en cas de multitudes de petits fichiers. | ||
- | ===== Utilisation avec ubuntu18.04.2 ===== | + | **--pack-bitmap** : Met la description en fin de zone allouée. C’est plus performant mais contraire à la norme. |
- | ==== Pour une clé USB ==== | + | |
- | Faire un essai permettant de vérifier que la fonctionnalité de mise à jour différée de la FAT est bien opérationnelle. Une idée pour cette réalisation: | + | |
- | En mode graphique, prendre un très gros fichier en copier/coller. Lorsque la copie est à moitié faite, débrancher sauvagement le câble USB. L'application va se planter avec un message d'erreur de ´splicing'. Il faut rebrancher la clé, attendre que la partition soit remontée et recommencer l'action de copier. Attention le fichier sortie existe déjà mais sa taille est de 0 octet. | + | **-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. |
- | La copie des fichiers se fait via un fichier "tampon" dont le nom est du style **.goutputstream-XXXNXX**. Cela est visible en ouvrant une autre session lors d'une copie de gros fichiers. | + | **-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. |
- | En mode ligne de commande, c'est la même démarche mais la session terminal est totalement incapable de se stopper ( erreur entrée/sortie). Il faut la fermer puis en ouvrir une autre après le rebranchement de la clé. | + | **-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. |
- | Pendant ces essais, il est possible que la partition ne puisse plus se [[https://bugs.launchpad.net/ubuntu/+source/fuse-exfat/+bug/1821185|monter]]. | ||
- | ==== Pour un disque dur externe==== | + | ==== Sur des appareils spécifiques ==== |
- | Faire un essai permettant de vérifier que la fonctionnalité de mise à jour différée de la FAT est bien opérationnelle. Une idée pour cette réalisation: | + | 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. |
- | Faire seulement en mode terminal avec la commande **cp -ruv **. Débrancher pendant une copie d'un gros fichier. Quitter la session. Rebrancher. Remonter la partition. Réouvrir un terminal et relancer la commande. | + | ===== Opération sur une partition exFat ===== |
+ | Formater en exFat 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). | ||
- | Lorsque vous aurez fait ceci une dizaine de fois, cela sera le moment de supprimer les dix fichiers dont la taille sera indiquée à zéro et de faire une onzième fois la commande de copie. | + | Déplacer une partition : possible avec [[gparted]], mais impossible avec [[gnome-disk-utility]]. |
- | ==== Pour une partition d'un disque dur interne==== | + | Redimensionner une partition exFat : impossible, que ce soit sous linux ou windows. Il faut alors supprimer et recréer la partition à la bonne taille. |
- | Faire un essai permettant de vérifier que la fonctionnalité de mise à jour différée de la FAT est bien opérationnelle. Une idée pour cette réalisation: | + | |
- | Faire seulement en mode terminal avec la commande **cp -ruv ** d'un très gros fichier. Ouvrir une autre session afin de visualiser l'agrandissement du fichier de sortie. Lorsqu'il a atteint une taille de 50% environ, appuyer sur la touche de mise sous tension pendant 5 secondes environ afin de provoquer un arrêt hors contrôle applicatif. Rebooter. Remonter la partition et constater que la taille du fichier est revenue à zéro. | + | Défragmenter une partition exFat : impossible, que ce soit sous linux ou windows (en 2024). |
- | ==== Ne pas oublier fsck ==== | + | Installer un système d'exploitation (windows ou linux) directement sur une partition exFat : impossible ou formellement déconseillé. C'est un format réservé aux échanges de fichiers. |
- | <code>a@a:~$ sudo fsck /dev/sdXN | + | |
- | fsck de util-linux 2.31.1 | + | ===== Contrôler la qualité ===== |
- | exfatfsck 1.2.8 | + | <code bash>sudo fsck /dev/sdb17 |
- | Checking file system on /dev/sdb4. | + | fsck de util-linux 2.34 |
+ | exfatfsck 1.3.0 | ||
+ | Checking file system on /dev/sdb17. | ||
File system version 1.0 | File system version 1.0 | ||
Sector size 512 bytes | Sector size 512 bytes | ||
Cluster size 128 KB | Cluster size 128 KB | ||
- | Volume size 342 GB | + | Volume size 39 GB |
- | Used space 342 GB | + | Used space 1806 KB |
- | Available space 0 bytes | + | Available space 39 GB |
- | Totally 80251 directories and 533268 files. | + | Totally 0 directories and 0 files</code> |
- | File system checking finished. No errors found.</code> | + | <code bash>sudo fsck /dev/sdc1 |
+ | fsck de util-linux 2.37.2 | ||
+ | exfatprogs version : 1.1.3 | ||
+ | /dev/sdc1: clean. directories 86, files 1683 </code> | ||
+ | |||
+ | ===== Contrainte et limites ===== | ||
+ | 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 ces caractères spéciaux **/ \ | : * ? " < >**\\ | ||
+ | Les copies vers un disque / partition exFat échoueront donc pour les fichiers contenant ces caractères, sauf correction.\\ | ||
+ | Les noms de fichiers et répertoires ne peuvent pas non plus avoir de caractère "**espace**" ou "**.**" en __début/fin__ de nom (mais ils peuvent en avoir à l'intérieur).\\ | ||
+ | Enfin, ces noms sont **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 <code bash> 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 '</code> | ||
+ | Il est possible d'effectuer un contrôle préventif de la qualité des répertoires à transférer. | ||
+ | <code bash>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</code> | ||
+ | ===== Voir aussi ===== | ||
+ | * [[https://www.pcastuces.com/pratique/materiel/fat32_exfat_ntfs/page4.htm|PC astuce]] | ||
+ | * [[https://www.touslesdrivers.com/index.php?v_page=3&v_code=7351|Freebox]] | ||
+ | * [[https://support.wdc.com/knowledgebase/answer.aspx?ID=5521&lang=fr|WDC]] | ||
+ | * [[https://forum.ubuntu-fr.org/viewtopic.php?pid=22726424#p22726424|Un témoignage.]] | ||