Eu tenho um arquivo esparso, no qual apenas alguns blocos são alocados:
~% du -h --apparent-size example
100K example
~% du -h example
52K example
Gostaria de saber quais blocos do arquivo estão realmente alocados. Existe uma interface de chamada ou kernel do sistema que possa ser usada para obter uma lista das alocações ou dos buracos do arquivo?
Simplesmente verificar uma série de zeros longa o suficiente (a abordagem usada pelo GNU cp, rsync, etc) não funciona corretamente:
~% cp example example1
~% du -h example1
32K example1
Ele detectou outras seqüências de zeros que foram realmente alocadas.
--fibmap
dahdparm
utilidade. Veja o manual.