O Robocopy pode monitorar arquivos em um incremento de tempo inferior a um minuto?

O Robocopy pode monitorar arquivos em um incremento de tempo inferior a um minuto?

Robocopytem a opção de monitorar o diretório de origem e copiar quaisquer arquivos que tenham alterações. Você pode especificar quantas alterações no diretório devem ocorrer antes de copiar ( /mon nonde né o número de alterações) e quanto tempo esperar antes de verificar novamente ( /mot tonde té o tempo de espera em minutos).

Gostaria de monitorar uma pasta quase continuamente, já que há apenas um arquivo que estou procurando e quero que as alterações sejam basicamente instantâneas. Não consigo fazer o monitor robocopy por um período de tempo inferior a um minuto. Eu tentei /mot 0.5e não deu certo. Também tentei /mot 0e o robocopy simplesmente sai após digitalizar uma vez, sem monitorar continuamente.

Como posso fazer com que o robocopy digitalize uma pasta quase continuamente, com incrementos de tempo inferiores a 1 minuto? Como alternativa, existe alguma outra ferramenta de linha de comando que possa monitorar constantemente a origem de um arquivo e copiar alterações em tempo real?

Responder1

Robocópia

/mot:<M>
Monitors source, and runs again in M minutes if changes are detected.

Como aceita apenas minutos como argumento, acho que você não pode forçá-lo a ser executado com mais frequência. No entanto, você pode executá-lo usando um arquivo em lote e permitir que o tempo e o loop ocorram no arquivo em lote ou em tarefas agendadas, em vez de no robocopy.

Responder2

Suas tags indicam que você está usando o Windows 8. Isso é bom, pois você tem a excelente ferramenta que é o PowerShell e um pequeno cmdlet útil chamado Register-ObjectEvent.

Crie um arquivo de texto, altere a extensão para .ps1e cole o script abaixo no arquivo. Mude a $watchedFoldervariável para a pasta que você deseja monitorar. Altere a função Do-Something para incluir seu comando robocopy ou qualquer outra coisa. Execute o script, enquanto o script estiver em execução, essa função será executada (quase instantaneamente!) sempre que um arquivo ou pasta for alterado na pasta monitorada.

Você poderia executar esse script na inicialização do Windows e ele estaria sendo executado em segundo plano o tempo todo, sem usar um cronômetro.

$block = {    
    function Do-Something
    {
        param ($message, $event)
        # function to call when event is raised
        # do a robocopy or whatever

        Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
    }

    $watchedFolder = "C:\Users\Admin-PC\Desktop"
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $watchedFolder

    Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}

$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))

Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock

Veja em ação


  1. Execute o script salvo.
    Execute o script salvo.

  2. Você verá uma janela do console piscar. Depois que eles fecharem, a única indicação de que está em execução serão alguns novos processos.
    insira a descrição da imagem aqui

  3. Faça algumas coisas em sua área de trabalho para testar.
    insira a descrição da imagem aqui

  4. Encerre o processo do PowerShell criado quando não quiser mais que ele seja executado.

Algumas informações básicas- Caso você não esteja familiarizado com as ferramentas utilizadas nesta resposta.


Responder3

DSincronizaré um utilitário independente que permite sincronizar periodicamente duas ou mais pastas no disco rígido, disquete, LAN, chave USB, CD-DVD (com software de gravação de pacotes) e servidor FTP. Não é exatamente sobre o que se trata, mas a coisa mais próxima que consegui encontrar.

Eu também estava procurando uma solução para o tempo mínimo de 1 minuto no Robocopy e encontrei esta questão de dois anos. Acabei me sugerindo esse software e é isso que estou usando. Para que conste, não tenho nenhuma afiliação com o software.

Prós:

  • Possui sincronização em tempo real.
  • Pode adicionar vários pares de pastas e escolher quais pares estão ativos em um determinado momento usando as caixas de seleção próximas a eles.
  • Sem instalador, programa independente.
  • Você pode excluir ou incluir arquivos através de padrões ou por tempo modificado clicando no botão 'filtro'.
  • (outros; veja a captura de tela abaixo. As caixas de seleção e os botões têm dicas de ajuda adicionais.)

Contras:

  • É um utilitário GUI, sem opções de linha de comando disponíveis
  • Todos os pares de pastas compartilham as mesmas configurações

captura de tela

A opção de sincronização em tempo real está marcada na captura de tela na seção ‘Opções Especiais’. Isso seria o que a pergunta parece descrever como objetivo. Se não estiver marcado e você não tiver um cronômetro definido, você pode clicar no botão ‘Sincronizar’ para iniciar uma sincronização única.

Como sincronizar duas pastas:

  • Selecione uma pasta de origem que você deseja monitorar usando a caixa de diálogo de navegação no canto superior esquerdo.
  • Selecione uma pasta de destino para onde deseja copiar as alterações no canto superior direito.
  • (Opcional) Se você digitou manualmente o caminho da pasta em vez de usar a caixa de diálogo de navegação, clique no botão ‘TEST’ entre as duas caixas na parte superior para ver se essas pastas realmente existem. Você também vai querer marcar a opção ‘Criar pasta se não existir’ na maioria dos casos para garantir que novas pastas sejam copiadas, já que está desmarcado por padrão e, portanto, o programa apenas copia arquivos por padrão.
  • Marque a caixa de seleção 'Sincronização em tempo real'. A sincronização agora está ativa e todas as alterações da pasta do lado esquerdo serão copiadas para a pasta do lado direito.

Eu também encontrei issoVídeo do youtube, que mostra o software em ação. Mostra uma versão mais antiga e as opções não estão no mesmo lugar, mas dá uma ideia de como o software funciona.

Responder4

use a opção /MON 1, toda vez que o arquivo for alterado, o robocopy será sincronizado

informação relacionada