Como copiar arquivos e criar hardlinks em vez de copiar quando os arquivos são idênticos

3

Existe alguma ferramenta para o Windows que pode

  • copiar um dir para outro
  • leia o conteúdo copiado
  • gerar MD5
  • se o arquivo atual for idêntico ao anteriormente copiado, crie um link físico no diretório de destino em vez de escrever o conteúdo?
por est 12.10.2011 / 15:44

2 respostas

5

Se você estiver copiando o conteúdo apenas para vinculá-lo imediatamente depois, por que não apenas gerar os hardlinks imediatamente? O Link Shell Extension facilita esse trabalho específico.

Se houver uma razão pela qual você precisa passar por essa sequência específica de ações, o autor do LSE também escreveu uma ferramenta de linha de comando chamada dupemerge para fazer quase exatamente o que você está perguntando.

Uma coisa a ter em mente é que o NTFS não faz semântica "copy-on-write" para hardlinks. Se algo modificar o conteúdo de um arquivo, todas as versões com hardlink são imediatamente "atualizadas", já que são essencialmente entradas de diretório para a mesma extensão de dados no disco. Além disso, muitos programas fazem um procedimento "salvar em arquivo temporário, excluir original, renomear temp em nome antigo" em vez de sobrescrever um arquivo, o que efetivamente quebra outros hardlinks para os dados, já que eles estão apontando para a antiga extensão de dados.

    
por 12.10.2011 / 16:17
1

Você pode fazer isso usando o FINDDUPE, que pode ser encontrado aqui .
Considere src como sua pasta de origem e dest como sua pasta de destino que você pode fazer:

xcopy /I /E src dest
finddupe -hardlink -ref src dest

Nota: os hardlinks funcionam apenas no NTFS

    
por 12.10.2011 / 16:16