Os sistemas de arquivos determinísticos são principalmente usados por vários algoritmos para determinar o melhor local para novos dados. Mas não é possível 100% duplicar todo o estado interno, então você deve considerar que:
-
diferentes sistemas de arquivos (ext4, btrfs, NTFS ...) usam diferentes algoritmos de alocação,
-
que também pode ser influenciado pelo programa fazendo a escrita (por exemplo, um arquivo que cresce para 100 MB devagar às vezes será alocado de forma diferente de um arquivo criado por fallocate () '100 MB de uma só vez),
-
bem como outros programas gravando em disco ao mesmo tempo, já que a alocação do arquivo B dependerá se o arquivo A já foi escrito ou não (todo o determinismo aqui desaparece quando você tem um sistema multi-core ou multi-CPU);
-
tamanho e localização dos arquivos existentes;
-
tamanho e localização dos arquivos excluídos (por exemplo, em sistemas de arquivos estruturados em log, os dados somente avançam)
-
diferentes tipos de disco (sistemas de arquivos podem se importar muito menos com a fragmentação ao gravar em discos de estado sólido do que em discos magnéticos);
-
corrupção física (se um setor for corrompido, o sistema de arquivos pode optar por colocar o arquivo inteiro em outro lugar, em vez de simplesmente pular esse setor);
E, finalmente, mesmo que os dois computadores de exemplo tenham cópias 1: 1 do conteúdo bruto do disco,
- alguns sistemas de arquivos podem fazer escolhas aleatórias se isso for escrito no algoritmo. De um grep rápido, parece que pelo menos o Ext4 usa a escolha aleatória como um fallback quando todas as opções são iguais.