Registrar mudança/migração na estrutura de diretórios

Registrar mudança/migração na estrutura de diretórios

Imagine uma SAN grande com cem mil arquivos em uma estrutura de diretórios desorganizada.

Os arquivos serão movidos para uma nova SAN com uma estrutura de diretórios organizada. Alguns arquivos serão renomeados quando forem movidos. Além disso, muitos arquivos têm referências, por exemplo, planilhas do Excel estão interligadas e serão quebradas após a movimentação.

Precisamos manter um mapa dos caminhos dos arquivos De e Para, caso precisemos nos referir ao arquivo, por exemplo, para consertar um link quebrado.

Fiz pesquisas para ver se havia alguma coisa no mercado, mas não tive sorte. Por isso comecei a escrever um aplicativo que permite aos usuários arrastar e soltar arquivos e registros em um SQL dB:

insira a descrição da imagem aqui

Não tenho 100% de certeza sobre essa abordagem. Alguém sabe se existe uma maneira melhor de fazer isso? Existe alguma coisa no Windows?

  1. Estávamos pensando em escanear os diretórios antigos e novos e fazer um mapa dessa forma. Infelizmente, isso não acontecerá, pois o nome do arquivo pode mudar e as datas de criação/modificação etc. serão hoje para os arquivos movidos.

  2. Estávamos pensando em ter algum identificador exclusivo em cada arquivo, mas essa ideia nunca ganhou força, pois onde você armazenaria o identificador exclusivo para diferentes tipos de arquivo?

  3. Possivelmente um script AutoHotKey?

Responder1

Construí um sistema de implantação automatizado em C# para um de meus clientes. Este problema é semelhante, exceto em escala.

Coisas que foram resolvidas no ADS:

  1. Check-out automático do SVN.
  2. Percorra todas as pastas.
  3. Cada pasta pode ser incluída ou excluída da implementação.
  4. Se uma pasta for incluída, todos os arquivos e subpastas também serão incluídos. O mesmo vale para a exclusão.
  5. Assim como a inclusão, cada pasta pode ser realocada para um novo local na pasta de implantação.
  6. Tudo foi arrastado e solto (felizmente, os scripts de implantação não precisam ser modificados com tanta frequência).
  7. A parte mais crítica foi a comparação de arquivos binários para copiar apenas arquivos modificados. <- Isso parece ser a coisa mais importante para você também. Como eu estava lidando apenas com arquivos de código como C# ou arquivos de código Perl, esta foi uma verificação fácil:
    1. Pegue arquivos à esquerda e à direita
    2. Remova todos os espaços em branco.
    3. Compare os arquivos um byte de cada vez.

No seu caso, a menos que os arquivos sejam grandes, você pode usar a mesma abordagem. Se os arquivos forem enormes (supondo que sejam arquivos de dados), uma simples comparação de cabeçalho/rodapé deve resolver.

Estávamos pensando em ter algum identificador exclusivo em cada arquivo, mas essa ideia nunca ganhou força, pois onde você armazenaria o identificador exclusivo para diferentes tipos de arquivo?

Foi com isso que eu comecei também, mas meu problema não era tão sério, então desisti. Tecnicamente, cada objeto FileInfo era agrupado em uma classe especializada que possuía um campo específico do tipo GUID. Eu estava salvando esse conjunto de classes serializadas em arquivos XML.

<FIItem>
    <ID>*some guid*</ID>
    <FileInfoObj>*file info which contains full file path*</FileInfoObj>
</FIItem>

informação relacionada