Ao fazer backup de uma coleção de pastas contendo código-fonte (onde percebi mais tarde que poderia excluir certas pastas contendo arquivos de biblioteca como node_modules
), notei que a velocidade de transferência de arquivos diminui para um rastreamento (alguns kb/s contra os habituais 60 mb/ s que a unidade de backup permite).
Gostaria de entender onde está o gargalo. É algum cálculo que deve ser executado que se intercala com a E/S pura e, portanto, torna tudo mais lento, ou é que o índice do sistema de arquivos na unidade de destino possui algum bloqueio central que deve ser adquirido e liberado entre os arquivos?
Estou usando NTFS na unidade de backup de destino e é um HDD.
O problema é que o catálogo do sistema de arquivos, que diz onde os arquivos estão situados no disco rígido, precisa ser acessado várias vezes.
Para cada arquivo, a cópia precisa fazer:
Isso faz com que os cabeçotes dos discos de origem e de destino alternem dos metadados do arquivo no catálogo para o próprio arquivo várias vezes durante cada cópia do arquivo.
Em um SSD, isso não importa muito, mas em um HDD, isso pode retardar a cópia de um grande número de arquivos pequenos. Basicamente, o HDD estaria movendo principalmente o(s) cabeçote(s), o que é uma operação muito mais lenta do que leituras ou gravações.
O Windows também não seria capaz de usar efetivamente a RAM como cache, já que fechar um arquivo faz com que ele seja liberado para o disco.