Você provavelmente já ouviu falar de serviços, como o Dropbox, que são usados para manter os arquivos sincronizados em várias máquinas. No entanto, e se você quiser realizar esta operação em uma única máquina? Ou seja, mantenha os arquivos com o mesmo nome em sincronia na máquina de forma que, quando um dos arquivos mudar, todos sejam atualizados.
Essa funcionalidade pode ser bastante útil, especialmente para desenvolvedores ou administradores de sistema, onde a duplicação de arquivos às vezes é necessária.
Como funciona
Suponha que você seja um desenvolvedor web que, com o passar do tempo, reuniu uma bela coleção de funções Javascript que você usa em todos os sites que mantém. Conforme você adiciona ou melhora este arquivo Javascript (vamos chamá-lo de "library.js"), apenas a cópia atual que você está editando é atualizada. Isso significaria, por exemplo, se você fizer uma correção de bug ou melhoria, terá que aplicá-la manualmente a cada uma das pastas de código-fonte dos outros sites também.
Nossa ferramenta tenta resolver o problema de ter que aplicar manualmente o arquivo atualizado em cada pasta de origem. O que faz:
- Pesquisa todos os arquivos com um nome especificado (library.js) em uma pasta raiz especificada (% UserProfile% \ Documents \ Web Sites).
- Para todos os arquivos chamados library.js, ele localiza aquele que foi modificado mais recentemente e anota o valor de hash do arquivo.
- Todos os outros arquivos denominados library.js (que não são a cópia atualizada mais recente) têm seu valor de hash de arquivo comparado com o mais recente (determinado na etapa anterior).
- Se os valores de hash do arquivo forem diferentes, a respectiva cópia de library.js será substituída pela cópia atualizada mais recentemente.
Porque estamos usando valores hash para comparar os arquivos, temos certeza de que todos os arquivos substituídos são de fato diferentes da cópia mais recente. Por exemplo, se você executasse o processo e 5 substituições de arquivo fossem feitas, executar o processo novamente imediatamente depois não faria nenhuma substituição, pois 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 em lote com o mesmo nome (ambos estão disponíveis para download usando os links na parte inferior do artigo) que foi convertido para um arquivo EXE a fim de incluir o necessário Utilitário Nirsoft HashMyFiles . A ferramenta deve ser executada a partir da linha de comando com determinados parâmetros especificados. Se você apenas executasse o arquivo EXE clicando duas vezes, obterá uma mensagem indicando isso.
Para usar Atualizar para a 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 (library.js). No entanto, você pode alterar a funcionalidade adicionando opções adicionais conforme descrito acima.
Exemplos
O comando a seguir encontraria todos os arquivos denominados “Common.vb” dentro da pasta “C: \ users \ jfaulkner \ documents \ Code Files”, realizando a substituição, mas fazendo um backup da cópia atual antes de sobrescrever (esta saída é o que produziu o imagem superior para este artigo):
UpdateToNewestCopy “C: \ users \ jfaulkner \ documents \ Code Files” Common.vb / B
O comando a seguir executa a mesma ação de pesquisa acima, no entanto, apenas relata os arquivos que seriam substituídos e não executa nenhuma operação de arquivo:
UpdateToNewestCopy “C: \ users \ jfaulkner \ documents \ Code Files” Common.vb / V
Suponha que haja um arquivo denominado “C: \ Config \ FilesToSearch.txt” com o seguinte conteúdo:
library.js
Common.vb
O comando a seguir pesquisaria a pasta meus documentos do usuário atual e relataria quaisquer atualizações para “library.js” e “Common.vb”, mas não executaria realmente nenhuma operação de atualização:
UpdateToNewestCopy “% UserProfile% \ Documents” “C: \ Config \ FilesToSearch.txt” / L / V
Automatizando o Processo
Esse processo é um candidato ideal para automação. Por criando uma tarefa agendada (nada de especial necessário) com as configurações especificadas e executá-lo diariamente / de hora em hora / a cada 15 minutos (dependendo de seus requisitos), você pode manter os arquivos sincronizados no verdadeiro modo de configurar e esquecer.
Baixar
Atualizar para a cópia mais recente - formato executável modificado
Atualizar para a cópia mais recente - arquivos em lote de origem (mais orientado para linha de comando)