Robocopy는 1 분 미만의 시간 단위로 파일을 모니터링 할 수 있습니까? 오랫동안 다시 검색하기

Robocopy소스 디렉토리를 모니터하고 변경 사항이있는 파일을 복사하는 옵션이 있습니다. 당신은 복사하는 (전에 디렉토리에 많은 변화가 발생해야하는 방법을 지정할 수 있습니다 /mon n어디에 n얼마나 오랫동안 다시 검색하기 (하기 전에 대기하는 변경 번호) /mot t여기서 t분에서 대기하는 시간이가).

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

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



답변

로보 카피

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

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


답변

태그에는 Windows 8을 사용 중이라고 표시되어 있습니다. PowerShell이라는 훌륭한 도구와 이름이 작은 편리한 cmdlet이 있기 때문에 좋습니다 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 프로세스를 종료하십시오.

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



답변

DSynchronize 는 하드 디스크, 플로피 디스크, LAN, USB 키, CD-DVD (패킷 쓰기 소프트웨어 포함) 및 FTP 서버에있는 둘 이상의 폴더를 주기적으로 동기화 할 수있는 독립형 유틸리티입니다. 그것은 정확히 질문에 관한 것이 아니라 내가 찾을 수있는 가장 가까운 것입니다.

나도 Robocopy에서 최소 1 분의 시간에 대한 해결책을 찾고 있었고이 2 살짜리 질문을 발견했다. 나는이 소프트웨어를 내게 제안하게되었고 이것이 내가 사용하고있는 것입니다. 기록적으로는 소프트웨어와 관련이 없습니다.

장점 :

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

단점 :

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

스크린 샷

실시간 동기화 옵션은 스크린 샷의 ‘특별 옵션’섹션에 표시되어 있습니다. 이것이 질문이 목표로 묘사하는 것입니다. 체크되어 있지 않고 타이머가 설정되어 있지 않으면 ‘동기화’버튼을 클릭하여 일회성 동기화를 시작할 수 있습니다.

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

  • 왼쪽 상단의 찾아보기 대화 상자를 사용하여 모니터링 할 소스 폴더를 선택하십시오.
  • 오른쪽 상단에서 변경 사항을 복사 할 대상 폴더를 선택하십시오.
  • (선택 사항) 찾아보기 대화 상자를 사용하는 대신 폴더 경로를 수동으로 입력 한 경우 상단의 두 상자 사이에있는 ‘테스트’버튼을 클릭하여 해당 폴더가 실제로 존재하는지 확인하십시오. 대부분의 경우 ‘존재하지 않는 경우 폴더 만들기’를 확인하여 새 폴더가 기본적으로 선택 해제되어 있으므로 기본적으로 파일 만 복사하므로 새 폴더가 복사되는지 확인하십시오.
  • ‘실시간 동기화’확인란을 선택하십시오. 이제 동기화가 활성화되고 왼쪽 폴더의 모든 변경 사항이 오른쪽 폴더로 복사됩니다.

또한 소프트웨어가 작동하는 YouTube 비디오를 찾았습니다 . 이전 버전이 표시되고 옵션이 같은 위치에 있지 않지만 소프트웨어 작동 방식에 대한 느낌을 제공합니다.


답변