O "tamanho no disco" leva em consideração qualquer compactação que possa ter sido aplicada ao arquivo e o espaço "folgado" no final da última unidade de alocação em que o arquivo foi gravado.
O NTFS permite a compactação / descompactação transparente de arquivos. Quando você compacta um arquivo, seu tamanho permanece o mesmo (ou seja, o tamanho dos dados no arquivo), mas a área ocupada pelo disco provavelmente será menor porque o driver NTFS compactará os dados do arquivo de maneira transparente à medida que eles são gravados no disco .
Sistemas de arquivos armazenam arquivos em uma unidade de alocação atômica - um "cluster" no caso de NTFS e (ex) FAT. O tamanho do cluster para um determinado volume pode variar (de 4K a 64K para NTFS, outros para outros sistemas de arquivos). Um arquivo menor que um único cluster será armazenado em um único cluster e, como tal, ocupará pelo menos o espaço em disco de um cluster. É improvável que o tamanho do arquivo seja um múltiplo exato do tamanho do cluster, portanto, o último cluster alocado para o arquivo conterá uma combinação de dados do arquivo e dados "folgados" ocupando a parte não usada restante no último cluster. O "tamanho no disco" também conta este espaço "slack".
É importante notar que, quando se trata de NTFS, arquivos muito pequenos podem ser armazenados na entrada da tabela de arquivos mestre (MFT) para esse arquivo (arquivos em que o nome do arquivo, dados do arquivo e propriedades do arquivo combinados são 1024 bytes ou Menos). O arquivo ainda mostrará um tamanho no disco do tamanho do cluster para o volume NTFS.
Arquivos esparsos são um mecanismo por meio do qual os arquivos aparecem muito grandes, mas contêm grandes áreas de zeros com poucas execuções de dados. O NTFS suporta arquivos esparsos e reportará o tamanho no disco conforme a área real usada pelos dados é executada, excluindo os zeros.
Editar:
Como syneticon-dj aponta, essa questão certamente se aplica também a outros sistemas operacionais. A versão GNU do comando du
possui um argumento --apparent-size
que mostrará o tamanho dos dados do arquivo, em vez do tamanho do disco (que é o padrão para du
). Há momentos em que cada tamanho é relevante e é uma boa ideia conhecer as diferenças.