Robocopy는 1분 미만의 시간 단위로 파일을 모니터링할 수 있습니까?

Robocopy는 1분 미만의 시간 단위로 파일을 모니터링할 수 있습니까?

Robocopy소스 디렉터리를 모니터링하고 변경된 파일을 복사하는 옵션이 있습니다. 복사하기 전에 디렉터리에서 발생해야 하는 변경 사항 수( 변경 사항 수)와 다시 검색하기 전에 기다려야 하는 시간(분 단위)을 /mon n지정할 수 있습니다.n/mot tt

스캔 중인 파일이 1개뿐이고 변경 사항이 기본적으로 즉시 적용되기를 원하므로 거의 지속적으로 폴더를 모니터링하고 싶습니다. 그래도 1분 미만의 시간 동안 robocopy 모니터를 만들 수는 없는 것 같습니다. 나는 시도했지만 /mot 0.5실패했습니다. 또한 시도했는데 /mot 0지속적으로 모니터링하지 않고 한 번 스캔한 후 robocopy가 종료됩니다.

robocopy가 1분 미만의 시간 증분으로 폴더를 거의 연속적으로 스캔하도록 하려면 어떻게 해야 합니까? 또는 파일 소스를 지속적으로 모니터링하고 변경 사항을 실시간으로 복사할 수 있는 다른 명령줄 도구가 있습니까?

답변1

로보카피

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

인수로 단 몇 분만 허용하므로 더 자주 실행하도록 강요할 수는 없을 것 같습니다. 그러나 배치 파일을 사용하여 실행하고 robocopy 내에서가 아닌 배치 파일이나 예약된 작업에서 타이밍 및 루핑이 발생하도록 할 수 있습니다.

답변2

태그에는 Windows 8을 사용하고 있다고 명시되어 있습니다. PowerShell이라는 훌륭한 도구와 Register-ObjectEvent.

텍스트 파일을 만들고 확장자를 로 변경한 후 .ps1아래 스크립트를 파일에 붙여넣습니다. $watchedFolder변수를 감시하려는 폴더로 변경하십시오 . robocopy 명령 등을 포함하도록 Do-Something 기능을 변경하십시오. 스크립트가 실행되는 동안 감시 폴더에서 파일이나 폴더가 변경될 때마다 해당 기능이 (거의 즉시!) 실행됩니다.

Windows 시작 시 이 스크립트를 실행할 수 있으며 타이머를 사용하지 않고도 항상 백그라운드에서 실행됩니다.

$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

실제 사례 보기


  1. 저장된 스크립트를 실행합니다.
    저장된 스크립트를 실행합니다.

  2. 콘솔 창이 깜박이는 것을 볼 수 있으며, 닫은 후에는 실행 중이라는 유일한 표시는 몇 가지 새로운 프로세스일 것입니다.
    여기에 이미지 설명을 입력하세요

  3. 테스트하려면 데스크톱에서 몇 가지 작업을 수행하세요.
    여기에 이미지 설명을 입력하세요

  4. 더 이상 실행하지 않으려면 생성된 PowerShell 프로세스를 종료합니다.

일부 배경 정보- 이 답변에 사용된 도구에 익숙하지 않은 경우.


답변3

D동기화하드 디스크, 플로피 디스크, LAN, USB 키, CD-DVD(패킷 작성 소프트웨어 포함) 및 FTP 서버에 있는 두 개 이상의 폴더를 주기적으로 동기화할 수 있는 독립 실행형 유틸리티입니다. 질문의 내용이 정확히 무엇인지는 아니지만 내가 찾을 수 있는 가장 가까운 것입니다.

나 역시 로보카피에서 최소 시간 1분에 대한 해결책을 찾다가 2년 된 질문을 발견했다. 나는 결국 이 소프트웨어를 제안받게 되었고, 그것이 내가 사용하고 있는 것입니다. 참고로 저는 해당 소프트웨어와 아무런 관련이 없습니다.

장점:

  • 실시간 동기화 기능이 있습니다.
  • 여러 폴더 쌍을 추가하고 옆에 있는 확인란을 사용하여 특정 시간에 활성화할 쌍을 선택할 수 있습니다.
  • 설치 프로그램이 없으며 독립 실행형 프로그램입니다.
  • '필터' 버튼을 클릭하면 패턴이나 수정 시간별로 파일을 제외하거나 포함할 수 있습니다.
  • (기타, 아래 스크린샷 참조. 확인란과 버튼에는 추가 도움말 도구 설명이 있습니다.)

단점:

  • GUI 유틸리티이며 명령줄 스위치를 사용할 수 없습니다.
  • 폴더 쌍은 모두 동일한 설정을 공유합니다.

스크린샷

실시간 동기화 옵션은 스크린샷의 '특수 옵션' 섹션 아래에 표시되어 있습니다. 이것이 질문이 목표로 설명하는 것 같습니다. 선택되어 있지 않고 타이머가 설정되어 있지 않은 경우 '동기화' 버튼을 클릭하여 일회성 동기화를 시작할 수 있습니다.

두 폴더를 동기화하는 방법:

  • 왼쪽 상단에 있는 찾아보기 대화 상자를 사용하여 모니터링하려는 소스 폴더를 선택하세요.
  • 오른쪽 상단에서 변경 사항을 복사할 대상 폴더를 선택합니다.
  • (선택 사항) 찾아보기 대화 상자를 사용하지 않고 폴더 경로를 수동으로 입력한 경우 상단의 두 상자 사이에 있는 '테스트' 버튼을 클릭하여 해당 폴더가 실제로 존재하는지 확인하세요. 또한 대부분의 경우 '존재하지 않는 경우 폴더 생성'을 확인하여 새 폴더가 복사되는지 확인하는 것이 좋습니다. 기본적으로 선택 취소되어 프로그램이 기본적으로 파일만 복사하기 때문입니다.
  • '실시간 동기화' 체크박스를 선택하세요. 이제 동기화가 활성화되었으며 왼쪽 폴더의 모든 변경 사항이 오른쪽 폴더에 복사됩니다.

나도 이걸 찾았어유튜브 영상, 작동 중인 소프트웨어를 보여줍니다. 이전 버전이 표시되고 옵션이 같은 위치에 있지 않지만 소프트웨어 작동 방식에 대한 느낌을 제공합니다.

답변4

/MON 1 스위치를 사용하면 파일이 변경될 때마다 robocopy가 동기화됩니다.

관련 정보