Je vais supposer que vous utilisez le système de fichiers FAT / FAT32 ici, puisque vous mentionnez qu'il s'agit d'une carte SD. NTFS et exFAT se comportent de manière similaire en ce qui concerne les unités d’allocation. Les autres systèmes de fichiers peuvent être différents, mais ils ne sont quand même pas supportés par Windows.
Si vous avez beaucoup de petits fichiers, c'est certainement possible. Considère ceci:
Ok, l’ espace minimum pris est de 50 000 * 32 000 = 1,6 Go (en utilisant des préfixes SI, et non binaires, pour simplifier les calculs). L'espace occupé par chaque fichier sur le disque correspond toujours à un multiple de la taille de l'unité d'allocation. Dans ce cas, nous supposons que chaque fichier est suffisamment petit pour tenir dans une seule unité, avec de l'espace (gaspillé) laissé.
Si la taille moyenne de chaque fichier est de 2 ko, vous obtiendrez un total d'environ 100 Mo - mais vous perdez également 15 fois (30 ko par fichier) en moyenne en raison de la taille de l'unité d'allocation.
Explication approfondie
Pourquoi cela arrive-t-il? Eh bien, le système de fichiers FAT32 doit garder une trace de l'emplacement de stockage de chaque fichier. S'il devait conserver une liste de chaque octet, la table (comme un carnet d'adresses) grandirait à la même vitesse que les données - et perdrait beaucoup d'espace. Ils utilisent donc des "unités d'allocation", également appelées "taille de cluster". Le volume est divisé en ces unités d’allocation et, en ce qui concerne le système de fichiers, elles ne peuvent pas être subdivisées - ce sont les plus petits blocs qu’elle peut traiter. Un peu comme si vous aviez un numéro de maison, mais votre facteur se fiche du nombre de chambres à coucher ou de personnes qui y vivent.
Alors que se passe-t-il si vous avez un très petit fichier? Eh bien, le système de fichiers ne se soucie pas de savoir si le fichier est de 0 ko, 2 ko ou même de 15 ko, cela lui donnera le moins d’espace possible - dans l’exemple ci-dessus, cela correspond à 32 ko. Votre fichier utilise seulement une petite quantité de cet espace, et le reste est essentiellement gaspillé, mais appartient toujours au fichier - un peu comme une chambre que vous laissez inoccupée.
Pourquoi existe-t-il différentes tailles d'unités d'allocation? Cela devient un compromis entre avoir une table plus grande (carnet d'adresses, par exemple, en disant que John est propriétaire d'une maison située au 123, rue Fake, 124, rue Fake, 666, voie Satan, etc.) ou davantage d'espace inutilisé dans chaque maison. Si vous avez des fichiers plus volumineux, il est plus logique d'utiliser des unités d'allocation plus grandes, car un fichier ne reçoit pas une nouvelle unité (maison) tant que tous les autres ne sont pas remplis. Si vous avez beaucoup de petits fichiers, eh bien, vous allez quand même avoir une grande table (carnet d'adresses), alors vous pouvez aussi leur donner de petites unités (maisons).
En règle générale, les grandes unités d'allocation gaspillent beaucoup d'espace si vous avez beaucoup de petits fichiers. Il n’ya généralement pas de bonne raison de dépasser 4 ko pour un usage général.
Fragmentation?
En ce qui concerne la fragmentation, la fragmentation ne devrait pas gaspiller de l’espace de cette manière. Les gros fichiers peuvent être fragmentés, c'est-à-dire fractionnés, en plusieurs unités d'allocation, mais chaque unité doit être renseignée avant le démarrage de la suivante. La défragmentation peut économiser un peu d'espace dans les tables d'allocation, mais ce n'est pas votre problème spécifique.
Solutions possibles
Comme suggéré par gladiator2345 , vos seules options réelles à ce stade sont de vivre avec ou de reformater avec des unités d'allocation plus petites.
Votre carte peut être formatée en FAT16, qui impose une limite inférieure à la taille de la table et nécessite donc des unités d’allocation beaucoup plus grandes afin de traiter un volume plus important (avec une limite supérieure de 2 Go avec 32 unités d’allocation). Source gracieuseté de Braiam . Si c'est le cas, vous devriez quand même pouvoir formater en toute sécurité le format FAT32.