11Aug

IT Geek: Como manter arquivos com o mesmo nome em sincronia

Você provavelmente ouviu falar de serviços, como o Dropbox, que são usados ​​para manter arquivos sincronizados em várias máquinas. No entanto, e se você quiser executar esta operação em uma única máquina? Ou seja, mantenha os arquivos que têm o mesmo nome de arquivo em sincronia na máquina, de modo que, quando um dos arquivos muda, eles são todos atualizados.

Esta funcionalidade pode ser bastante útil, especialmente para desenvolvedores ou administradores de sistemas, em que a duplicação de arquivos às vezes é necessária.

Como funciona

Suponha que você seja um desenvolvedor web que, ao longo do tempo, juntou uma boa coleção de funções de Javascript que você usa em todos os sites que você mantém.À medida que você adiciona ou melhora com este arquivo do Javascript( vamos chamá-lo de "library.js"), somente a cópia atual que você está editando é atualizada. Isso significaria, por exemplo, se você fizer uma correção ou melhoria de bugs, você teria que ir manualmente aplicá-lo a cada uma das outras fontes de seu site também.

Nossa ferramenta tenta resolver o problema de ter que usar manualmente o arquivo atualizado para cada pasta de origem. O que faz:

  1. Procura todos os arquivos com um nome especificado( library.js) dentro de uma pasta raiz especificada( % UserProfile% \ Documents \ Web Sites).
  2. Para todos os arquivos denominados library.js, ele localiza aquele que foi modificado mais recentemente e anota seu valor de hash de arquivo.
  3. Todos os outros arquivos denominados library.js( que não são a cópia atualizada mais recente) então têm seu valor de hash de arquivo comparado ao mais recente( determinado na etapa anterior).
  4. Se os valores de hash do arquivo forem diferentes, a respectiva cópia de library.js será substituída pela cópia atualizada mais recente.

Porque estamos usando valores de hash para comparar os arquivos, temos certeza de que qualquer arquivo substituído é realmente diferente da cópia mais recente. Por exemplo, se você executasse o processo e realizassem 5 substituições de arquivos, executar o processo novamente imediatamente não faria substituições, uma vez que os valores de hash do arquivo agora são idênticos.

Atualização para a Ferramenta de Cópia mais Recente

A ferramenta Atualizar para a Ferramenta de Cópia mais Recente é uma versão modificada de um script de lote com o mesmo nome( ambos estão disponíveis para download usando os links na parte inferior do artigo) que foi convertido em um arquivo EXEpara incluir o utilitário Nirsoft HashMyFiles necessário. A ferramenta deve ser executada a partir da linha de comando com determinados parâmetros especificados. Se você estivesse apenas executando o arquivo EXE clicando duas vezes, você receberá uma mensagem indicando isso.

Para usar a Atualização para Cópia mais recente, você pode visualizar os parâmetros executando "UpdateToNewestCopy /?", Que mostra a seguinte caixa de diálogo:

Os únicos parâmetros necessários são o SourceFolder( por exemplo,% UserProfile% \ Documents \ Web Sites) e o FileName( biblioteca.js).No entanto, você pode alterar a funcionalidade adicionando switches adicionais conforme descrito acima.

Exemplos

O comando a seguir encontrou todos os arquivos denominados "Common.vb" na pasta "C: \ users \ jfaulkner \ documents \ Code Files", executando a substituição, mas fazendo um backup da cópia atual antes de sobrescrever( esta saída éO que produziu a imagem de topo para este artigo):

UpdateToNewestCopy "C: \ users \ jfaulkner \ documents \ Code Files" Common.vb / B

O comando a seguir executa a mesma ação de pesquisa como acima, no entanto, apenas relata arquivos queser substituído e na verdade não executar nenhuma operação de arquivo:

UpdateToNewestCopy "C: \ users \ jfaulkner \ documents \ Code Files" Common.vb / V

Assuma que há um arquivo chamado "C: \ Config \ FilesToSearch.txt" com oseguintes conteúdos:

library.js
Common.vb

O comando a seguir pesquisaria na pasta meus documentos do usuário atual e informaria sobre as atualizações de "library.js" e "Common.vb", mas na verdade não seriaerforme qualquer operação de atualização:

UpdateToNewestCopy "% UserProfile% \ Documents" "C: \ Config \ FilesToSearch.txt" / L / V

Automatizando o Processo

Este processo é um candidato ideal para automação. Ao criar uma tarefa agendada( nada especial necessário) com as configurações especificadas e executá-la diariamente /hourly/ a cada 15 minutos( dependendo de seus requisitos), você pode manter os arquivos sincronizados na verdadeira configuração e esqueça a moda.

Faça o download da atualização do

para a cópia mais recente - formato executável modificado

Atualização

para Cópia mais recente - arquivos de lote de origem( mais linhas de comando orientadas)