Eu não acho que você possa realmente responder isso, especialmente para Linux, Windows e Mac de uma só vez. Porque:
- Cada sistema de arquivos diferente pode colocar arquivos em um lugar diferente no disco. Tente criar um sistema de arquivos ext3 / 4 e dê uma olhada onde um arquivo facilmente identificável (que contém, por exemplo, todos os
a
) acaba - provavelmente será gravado em "listras" no dispositivo.
- Cada disco rígido diferente pode ter um número desconhecido de bandejas & cabeças, e uma maneira desconhecida que eles mapeiam para setores
- O sistema operacional ou a própria unidade de disco rígido podem "remapear" os setores em um local diferente no disco
Em geral, parece que você só quer evitar a fragmentação de arquivos, e você pode fazer isso com o sistema de arquivos vazio (ou quase vazio) quando você escreve os arquivos.
Se você quiser apenas escrever um arquivo específico após o outro na ordem que preferir (mas o SO ainda decidirá onde colocá-los no disco), você pode usar um loop como (por exemplo, no Linux)
while read filename
cp filename destination
sync
done
Ou tenha dd
pulando o cache do buffer e faça alguma sincronização também:
dd if=filename of=destination/filename oflags=direct,sync