du examina os arquivos, enquanto df examina o sistema de arquivos. Se você tiver um arquivo pequeno ou vazio, du conhecerá o tamanho real do arquivo olhando realmente para ele, enquanto df verá que o arquivo tem algum tamanho, dependendo do " tamanho do bloco " que foi definido quando a partição foi criada. O tamanho do bloco determina o tamanho mínimo dos arquivos no sistema de arquivos. Embora haja outras causas, acho que essa é a diferença mais óbvia entre df e du .
Veja também Como eu determino o tamanho do bloco de uma partição ext3 no Linux?