Estou trabalhando em um enorme aplicativo da web Java que é mantido sob controle de versão centralizado, mas os arquivos de origem são usados para construir e executar o servidor real, que copia todos os arquivos em que trabalho em um diretório temporário aleatório enquanto está em execução.
Meu problema é que preciso reconstruir esse enorme aplicativo para ver quaisquer alterações em meus arquivos ou acompanhar todas as minhas alterações e copiar os arquivos que alterei de volta para o local de origem antes de enviá-los de volta ao controle de origem.
Minha pergunta é: existe um script de linha de comando que eu possa executar que monitore quaisquer alterações na pasta de origem e copie automaticamente os arquivos alterados para a pasta temporária X?
A ideia é remover o ponto de falha humano ao ter que mitigar manualmente o problema dos dois locais.
Responder1
Eu sugiroFreeFileSync, que parece ter a capacidade de criar um script que sincronizará automaticamente as duas pastas a cada poucos segundos. Não brinquei com isso pessoalmente, mas parece promissor.
Responder2
Você já pensou em usar o RoboCopy?http://ss64.com/nt/robocopy.html
O RoboCopy pode ser configurado para copiar os dados após um determinado período de tempo ter decorrido e/ou ocorrer uma série de alterações nos conjuntos de dados.
/MON:n: fonte do MONitor; execute novamente quando mais de n alterações forem vistas.
/MOT:m : Fonte do monitor; execute novamente em m minutos Tempo, se alterado.
Responder3
Você também pode querer dar uma olhada no (envelhecimento)DeltaCopycliente e servidor. Basicamente, é um sistema semelhante ao Linuxsincronizar novamenteimplementação para Windows, programável (usando o agendador do Windows, se desejado) e sua principal vantagem é queapenas as peças alteradasde um arquivo modificado (sim, arquivo!) são transmitidos. Isso pode economizar muito tráfego em grandes projetos. Uma desvantagem é, obviamente, que ele precisa construir e transmitir uma lista de arquivos antes.
Além disso, existem algumas (pequenas) advertências:
- Como é um software mais antigo, talvez seja necessário substituí-locygwin1.dllem máquinas Windows. (Se você sincronizar arquivos entre Linux e Windows, apenas. Ele usaCygwincomo a estrutura subjacente que não lidava corretamente com a conversão de nome de arquivo Unicode/UTF-8 de 16 bits naquele momento.)
- Não é exatamente tão fácil de usar, você deveria dar uma olhada no Linux'página de manual do rsyncpara explorar todo o seu potencial.
- No Windows, requer uma máquina »cliente« e uma máquina »servidor«.
- Se o servidor for uma máquina Linux, você terá que configurarsincronizar novamentecorretamente.
- Não há suporte para Volume Shadow Copy do Windows (embora possa não ser necessário).
Bom, também tem vantagens (por isso ainda uso diariamente):
- Totalmente compatível com *NIX rsync e rsyncd. Um sistema de sincronização comprovado, conhecido e altamente eficiente. Ainda.
- Mantém a sobrecarga pequena: somente os dados alterados (mesmo dentro de arquivos!) São transportados pela rede. Portanto, também é muito bom se você estiver teletrabalhando ou se conectando ao servidor por meio de conexões lentas.
- À prova de falhas, aparentemente. Eu sincronizei novamente muitos gigabytes de dados ao longo dos anos e nenhuma falha aconteceu ao »consertar« os arquivos de destino. Mesmo que eu tenha achado o conceito um pouco preocupante, no início.
- Eu ainda uso o DeltyCopy para fazer backup de arquivos de máquinas Windows para um servidor Linux central e um servidor Windows 2003 diariamente. Funciona extremamente bem e seguro, se instalado corretamente.
Bem, depende de você. Divirta-se! (E conte-nos sobre o FreeFileSync!)
Responder4
Um comando útil é xcopy /m src\* dest
. isso copiará todos os arquivos de src para dest elimpao bit de arquivo em todos os arquivos src. Sempre que você tocar em um arquivo src, o Windows definirá automaticamente o bit de arquivo. Na próxima vez que você executar, xcopy /m
ele copiará apenas os arquivos alterados.
Se você quiser executá-lo continuamente, escreva um pequeno script como
@echo off
echo Watching for changes to %1 ...
:top
xcopy /m /y %1\* %2 | find /v "File(s) copied"
timeout /t 2 >nul
goto :top