Eu assumirei que você está usando o sistema de arquivos FAT / FAT32 aqui, já que você mencionou que este é um cartão SD. NTFS e exFAT se comportam de maneira semelhante em relação às unidades de alocação. Outros sistemas de arquivos podem ser diferentes, mas eles não são suportados no Windows de qualquer maneira.
Se você possui muitos arquivos pequenos, isso certamente é possível. Considere isto:
Ok, agora o espaço mínimo ocupado é de 50.000 * 32.000 = 1,6 GB (usando prefixos SI, não binários, para simplificar a matemática). O espaço que cada arquivo ocupa no disco é sempre um múltiplo do tamanho da unidade de alocação - e aqui assumimos que cada arquivo é realmente pequeno o suficiente para caber em uma única unidade, com algum espaço (desperdiçado) sobrando.
Se cada arquivo tivesse uma média de 2 kB, você obteria cerca de 100 MB no total - mas também estará gastando 15x isso (30 kB por arquivo) em média devido ao tamanho da unidade de alocação.
Explicação detalhada
Por que isso acontece? Bem, o sistema de arquivos FAT32 precisa acompanhar onde cada arquivo está armazenado. Se fosse para manter uma lista de todos os bytes, a tabela (como um catálogo de endereços) aumentaria na mesma velocidade que os dados - e gastaria muito espaço. Então, o que eles fazem é usar "unidades de alocação", também conhecidas como "tamanho do cluster". O volume é dividido nessas unidades de alocação e, no que diz respeito ao sistema de arquivos, elas não podem ser subdivididas - esses são os menores blocos que podem ser endereçados. Muito parecido com o número da sua casa, mas o carteiro não se importa com quantos quartos você tem ou quem mora neles.
Então, o que acontece se você tiver um arquivo muito pequeno? Bem, o sistema de arquivos não se importa se o arquivo é 0 kB, 2 kB ou até 15 kB, ele oferece o mínimo de espaço possível - no exemplo acima, isso é 32 kB. Seu arquivo está usando apenas uma pequena quantidade desse espaço e o restante é basicamente desperdiçado, mas ainda pertence ao arquivo - como um quarto que você deixa desocupado.
Por que existem diferentes tamanhos de unidades de alocação? Bem, torna-se uma troca entre ter uma tabela maior (catálogo de endereços, por exemplo, dizer que John é dono de uma casa na 123 Fake Street, 124 Fake Street, 666 Satan Lane, etc.) ou mais espaço desperdiçado em cada unidade (casa). Se você tiver arquivos maiores, faz mais sentido usar unidades de alocação maiores - porque um arquivo não recebe uma nova unidade (interna) até que todas as outras estejam preenchidas. Se você tiver muitos arquivos pequenos, bem, você terá uma tabela grande (catálogo de endereços) de qualquer maneira, assim também poderá fornecer-lhes pequenas unidades (casas).
As grandes unidades de alocação, como regra geral, desperdiçarão muito espaço se você tiver muitos arquivos pequenos. Geralmente, não há um bom motivo para ultrapassar 4 kB para uso geral.
Fragmentação?
Quanto à fragmentação, a fragmentação não deve desperdiçar espaço dessa maneira. Arquivos grandes podem ser fragmentados, ou seja, divididos em várias unidades de alocação, mas cada unidade deve ser preenchida antes que a próxima seja iniciada. A desfragmentação pode economizar um pouco de espaço nas tabelas de alocação, mas esse não é o seu problema específico.
Soluções possíveis
Como o gladiator2345 sugeriu , suas únicas opções reais nesse momento são conviver com ele ou reformatar com unidades de alocação menores.
Seu cartão pode estar formatado em FAT16, que tem um limite menor no tamanho da tabela e, portanto, requer unidades de alocação muito maiores para endereçar um volume maior (com um limite superior de 2 GB com unidades de alocação de 32 kB). Fonte cortesia de Braiam . Se for esse o caso, você poderá formatar com segurança como FAT32 de qualquer maneira.