Como Dennis mencionou, parece ser um problema de arquivo esparso. Um exemplo disso pode ser:
$ dd if=/dev/zero of=sparse.txt count=0 seek=1000
0+0 records in
$ du sparse.txt
0 sparse.txt
$ ls -l sparse.txt
-rw-r--r-- 1 user user 512000 2010-03-22 11:54 sparse.txt
Como você pode ver, du
informa quantos blocos são realmente usados, enquanto ls
mostra o tamanho do arquivo.