Czy Robocopy może monitorować pliki z przyrostem czasu krótszym niż jedna minuta?


10

Robocopyma opcję monitorowania katalogu źródłowego i kopiowania dowolnych plików, które zostały zmienione. Możesz określić, ile zmian w katalogu musi nastąpić przed skopiowaniem ( /mon ngdzie njest liczba zmian) i jak długo czekać przed ponownym skanowaniem ( /mot tgdzie tjest czas oczekiwania w minutach).

Chciałbym monitorować folder prawie nieprzerwanie, ponieważ skanuję tylko jeden plik i chcę, aby zmiany były w zasadzie natychmiastowe. Nie mogę jednak robić monitorów robocopy przez okres krótszy niż jedna minuta. Próbowałem /mot 0.5i to się nie udaje. Próbowałem także /mot 0i robocopy właśnie kończy pracę po skanowaniu, bez ciągłego monitorowania.

Jak sprawić, by robocopy skanowało folder prawie nieprzerwanie, z przyrostem czasu krótszym niż 1 minuta? Alternatywnie, czy jest jakieś inne narzędzie wiersza poleceń, które może stale monitorować źródło pliku i kopiować zmiany w czasie rzeczywistym?


Czy MUSI to być Robocopy?
Ƭᴇcʜιᴇ007

@ techie007 jeśli jest coś jeszcze, co spełnia te same wymagania, byłoby dobrze, chociaż w miarę możliwości chciałbym unikać narzędzi innych firm. Ale jeśli istnieje idealne rozwiązanie, które jest innej firmy, jestem skłonny to rozważyć.
nhinkle

@ techie007 - Mam ten sam dokładny problem co nhinkle i używam Robocopy w ten sam dokładny sposób. Jeśli znasz alternatywne rozwiązanie, które działa dobrze w systemie Windows, jestem na nie otwarty.
Udostępnij

Testowanie Freefilesync teraz .. wydaje się, że jest to narzędzie, którego potrzebowałem.
Durden81

Odpowiedzi:


8

Robocopy

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

Ponieważ jako argument przyjmuje się tylko minuty, nie można zmusić go do częstszego uruchamiania. Możesz jednak uruchomić go za pomocą pliku wsadowego i pozwolić, aby czas i zapętlenie występowały w pliku wsadowym lub w zaplanowanych zadaniach, a nie w robocopy.


1
tak, używam „ping -n 1 -w 500 1.2.3.4> NUL”, aby spać pół sekundy, a następnie zapętlić go za pomocą: LABEL i instrukcji GOTO (w cmd)
Stig Eide

13

Twoje tagi informują, że korzystasz z systemu Windows 8. To dobrze, ponieważ masz świetne narzędzie, jakim jest PowerShell, i poręczne małe polecenie cmdlet o nazwie Register-ObjectEvent.

Utwórz plik tekstowy, zmień rozszerzenie na .ps1, wklej poniższy skrypt do pliku. Zmień $watchedFolderzmienną na folder, który chcesz oglądać. Zmień funkcję Zrób coś, aby zawierała polecenie robocopy lub cokolwiek innego. Uruchom skrypt, dopóki skrypt jest uruchomiony, funkcja będzie działać (prawie natychmiast!) Za każdym razem, gdy plik lub folder zostanie zmieniony w obserwowanym folderze.

Możesz mieć ten skrypt uruchamiany przy starcie systemu Windows i działałby w tle przez cały czas bez użycia timera.

$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

Zobacz w akcji


  1. Uruchom zapisany skrypt.
    Uruchom zapisany skrypt.

  2. Zobaczysz migające okno konsoli, po ich zamknięciu jedynym wskazaniem, że jest uruchomione, będzie kilka nowych procesów.
    wprowadź opis zdjęcia tutaj

  3. Zrób coś na pulpicie, aby przetestować.
    wprowadź opis zdjęcia tutaj

  4. Zakończ utworzony proces PowerShell, gdy nie chcesz go już uruchamiać.

Niektóre informacje podstawowe - w przypadku, gdy nie znasz narzędzi używanych w tej odpowiedzi.



1
To najlepsza odpowiedź. To rozwiązanie jest sterowane zdarzeniami, co oznacza, że ​​nigdy nie używa procesora, dopóki nie nastąpi zmiana, a następnie program natychmiast uruchamia się w odpowiedzi. Również doskonały opis.
CoolHandLouis,

5

DSynchronize to autonomiczne narzędzie, które pozwala okresowo synchronizować dwa lub więcej folderów na dysku twardym, dyskietce, sieci LAN, kluczu USB, CD-DVD (z oprogramowaniem do zapisu pakietów) i serwerze FTP. To nie jest dokładnie to pytanie, ale najbliższa rzecz, jaką mogłem znaleźć.

Ja również szukałem rozwiązania minimalnego 1-minutowego czasu w Robocopy i znalazłem to dwuletnie pytanie. Skończyło się na tym, że zaproponowałem mi to oprogramowanie i właśnie tego używam. Dla przypomnienia, nie mam żadnego związku z oprogramowaniem.

Plusy:

  • Ma synchronizację w czasie rzeczywistym.
  • Można dodać wiele par folderów i wybrać, które pary są aktywne w danym momencie, używając pól wyboru obok nich.
  • Bez instalatora, samodzielny program.
  • Możesz wykluczyć lub dołączyć pliki według wzorców lub według zmodyfikowanego czasu, klikając przycisk „Filtruj”.
  • (inne; patrz zrzut ekranu poniżej. Pola wyboru i przyciski mają dodatkowe podpowiedzi pomocy).

Cons:

  • Jest narzędziem GUI, brak dostępnych przełączników wiersza polecenia
  • Wszystkie pary folderów mają takie same ustawienia

zrzut ekranu

Opcja synchronizacji w czasie rzeczywistym jest zaznaczona na zrzucie ekranu w sekcji „Opcje specjalne”. To pytanie wydaje się określać jako cel. Jeśli nie jest zaznaczone i nie masz ustawionego timera, możesz kliknąć przycisk „Synchronizuj”, aby rozpocząć synchronizację jednorazową.

Jak zsynchronizować dwa foldery:

  • Wybierz folder źródłowy, który chcesz monitorować, korzystając z okna dialogowego przeglądania w lewym górnym rogu.
  • Wybierz folder docelowy, do którego chcesz skopiować zmiany w prawym górnym rogu.
  • (Opcjonalnie) Jeśli ręcznie wpisałeś ścieżkę folderu zamiast korzystać z okna przeglądania, kliknij przycisk „TEST” między dwoma polami u góry, aby sprawdzić, czy te foldery faktycznie istnieją. Będziesz także chciał sprawdzić „Utwórz folder, jeśli nie istnieje” w większości przypadków, aby upewnić się, że nowe foldery są kopiowane, ponieważ domyślnie nie jest zaznaczone, więc program domyślnie kopiuje tylko pliki.
  • Zaznacz pole wyboru „Synchronizacja w czasie rzeczywistym”. Synchronizacja jest teraz aktywna, a wszystkie zmiany z folderu po lewej stronie zostaną skopiowane do folderu po prawej stronie.

Znalazłem również ten film na YouTube , który pokazuje oprogramowanie w akcji. Pokazuje starszą wersję, a opcje nie są w tym samym miejscu, ale daje poczucie działania oprogramowania.


Pytanie dotyczy tego, jak sprawić, by coś się stało (w Robocopy). Dobrze jest zasugerować alternatywne rozwiązanie, wyjaśniające, jak osiągnąć ten sam wynik za pomocą innego narzędzia. Nie wyjaśnia to jednak, jak rozwiązać problem.
fixer1234

@ fixer1234 Pierwotnie planowałem po prostu skomentować pytanie, ale najwyraźniej moje konto jest zbyt nowe, aby to zrobić (najwyraźniej mogę skomentować własną odpowiedź). Ja również szukałem rozwiązania minimalnego 1-minutowego czasu w robocopy i znalazłem to dwuletnie pytanie. Skończyło się na tym, że zaproponowałem mi powyższe oprogramowanie i właśnie tego używam. Myślałem, że inni w tej samej sytuacji uznają to za przydatne, to wszystko. Z pozoru proste zadanie (synchronizacja folderów) jest niesamowite, ile trzeba szukać, aby znaleźć rozwiązanie.
Ashley Wilson,

Jeśli chodzi o jasność mojej odpowiedzi - chciałbym załączyć zrzut ekranu (ponownie, konto jest zbyt nowe, aby na to pozwolić), co uczyniłoby go o wiele jaśniejszym - jest to graficzny interfejs z jednym ekranem, a wszystkie opcje są wyraźnie widoczne i proste rozumieć.
Ashley Wilson,

Jeśli korzystasz z dowolnej usługi udostępniania plików, po prostu dodaj link do swojego obrazu, a ktoś go dla ciebie osadzi. Jeśli nie korzystasz regularnie z jednego, istnieje wiele bezpłatnych (np. Imgur.com).
fixer1234

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.