Чи може Robocopy відслідковувати файли із збільшенням часу менше однієї хвилини?


10

Robocopyмає можливість контролювати каталог джерел та копіювати файли, які мають зміни. Ви можете вказати, скільки змін у каталозі має відбутися перед копіюванням ( /mon nде nкількість змін) та скільки часу потрібно чекати перед повторним скануванням ( /mot tде tчас чекати в хвилинах).

Я хотів би моніторити папку майже постійно, оскільки є лише 1 файл, на який я сканую, і я хочу, щоб зміни були в основному миттєвими. Я не можу зробити монітор роботокопії на часовий проміжок менше однієї хвилини. Я спробував, /mot 0.5і це не вдається. Я також спробував /mot 0і робокопіювання просто закінчується після сканування один раз, без постійного моніторингу.

Як я можу змусити робокопію сканувати папку майже безперервно, з кроком часу менше 1 хвилини? Крім того, чи є інший інструмент командного рядка, який може постійно контролювати джерело файлів і копіювати зміни в режимі реального часу?


ВИ МАЄ РОБОКОПІЯ?
Ƭᴇcʜιᴇ007

@ techie007, якщо є щось інше, що досягає тих же вимог, це було б добре, хоча я хотів би уникати сторонніх інструментів, якщо це можливо. Але якщо є ідеальне рішення, яке є стороннім, то я готовий розглянути це.
nhinkle

@ techie007 - У мене така ж точна проблема, як у nhinkle, і я використовую Robocopy таким же чином. Якщо ви знаєте альтернативне рішення, яке добре працює в Windows, я до нього відкритий. Будь ласка, поділіться ним з нами
Durden81

Тестування Freefilesync зараз .. це, здається, інструмент, який мені потрібен.
Durden81

Відповіді:


8

Робокопія

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

Оскільки він приймає в якості аргументу лише хвилини, я думаю, ви не можете змусити його працювати частіше. Однак ви можете запустити його за допомогою пакетного файлу і дозволити час і циклічність виникати в пакетному файлі або в запланованих завданнях, а не в роботокопії.


1
так, я використовую "ping -n 1 -w 500 1.2.3.4> NUL", щоб заснути півсекунди, а потім переведіть його за допомогою: LABEL та GOTO-заяву (в cmd)
Stig Eide

13

Ваші теги констатують, що ви використовуєте Windows 8. Це добре, оскільки у вас є чудовий інструмент PowerShell та зручний маленький командлет з назвою Register-ObjectEvent.

Створіть текстовий файл, змініть розширення на .ps1, вставте сценарій нижче у файл. Змініть $watchedFolderзмінну на папку, яку ви хочете переглянути. Змініть функцію Do-Something, щоб включити вашу команду robocopy або будь-яку іншу. Запустіть сценарій, доки скрипт запущений, ця функція буде працювати (майже миттєво!) Щоразу, коли файл або папка буде змінено у переглянутій папці.

Ви можете запустити цей сценарій при запуску 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, коли ви більше не хочете, щоб він запускався.

Довідкова інформація - якщо ви не знайомі з інструментами, які використовуються у цій відповіді.


  • Для отримання додаткової інформації про System.IO.FileSystemWatcherйого сторінку відвідайте MSDN .
  • Ще кілька прикладів подій в PowerShell відвідайте цей блог, який я вважав корисним .
  • Для ґрунтовки на Windows PowerShell я вважаю цей сайт корисним (мені подобаються їх поради дня).
  • Якщо ви використовуєте старішу версію Windows або чомусь у вас не встановлено PowerShell, ви можете завантажити Windows Management Framework 4.0 .

1
Це найкраща відповідь. Це рішення керується подіями, а це означає, що він ніколи не використовує процесор, поки не відбудеться зміна, а потім програма працює негайно у відповідь. Також відмінне оформлення.
CoolHandLouis

5

DSynchronize - це автономна утиліта, яка дозволяє періодично синхронізувати дві або більше папок на жорсткому диску, дискеті, локальній мережі, USB-ключі, CD-DVD (з програмним забезпеченням для запису пакетів) та FTP-сервері. Справа не в тому, про що йдеться, але про найближчу річ, яку я міг знайти.

Я теж шукав рішення 1-хвилинного мінімального часу роботи в роботокопії і знайшов це дворічне питання. В кінцевому підсумку це програмне забезпечення було запропоновано мені, і саме це я використовую. Для запису я не маю приналежності до програмного забезпечення.

Плюси:

  • Має синхронізацію в режимі реального часу.
  • Можна додати кілька пар папок і вибрати, які пари є активними в даний момент часу, використовуючи прапорці поруч із ними.
  • Немає інсталятора, окрема програма.
  • Ви можете виключити або включити файли за допомогою шаблонів або за модифікованим часом, натиснувши кнопку «фільтр».
  • (інші; див. знімок екрана нижче. Поле та кнопки мають додаткові підказки.)

Мінуси:

  • Це утиліта GUI, відсутні комутатори командного рядка
  • Усі папки папок мають однакові налаштування

скріншот

Параметр синхронізації в режимі реального часу позначений на скріншоті в розділі "Спеціальні параметри". Це було б те, що, схоже, питання описує як мету. Якщо це не встановлено, і у вас немає встановленого таймера, ви можете натиснути кнопку «Синхронізувати», щоб почати одноразову синхронізацію.

Як синхронізувати дві папки:

  • Виберіть вихідну папку, яку ви хочете контролювати, скориставшись діалогом перегляду у верхньому лівому куті.
  • Виберіть папку призначення, куди потрібно скопіювати зміни, у верхньому правому куті.
  • (Необов’язково) Якщо ви вручну ввели шлях до папки замість діалогу перегляду, натисніть кнопку "TEST" між двома полями вгорі, щоб побачити, чи існують ці папки. Ви також хочете перевірити "Створити папку, якщо такої немає" у більшості випадків, щоб переконатися, що нові папки копіюються, оскільки вона не встановлена ​​за замовчуванням, і програма лише копіює файли за замовчуванням.
  • Поставте прапорець "Синхронізація в режимі реального часу". Синхронізація зараз активна, і всі зміни з лівої папки будуть скопійовані в папку правого боку.

Я також знайшов це відео на YouTube , яке показує програмне забезпечення в дії. Він показує старішу версію, і параметри знаходяться не в тому самому місці, але це забезпечує відчуття того, як працює програмне забезпечення.


Питання задає питання, як змусити щось статися (в Робокопії). Добре запропонувати альтернативне рішення, пояснюючи, як досягти того ж результату за допомогою іншого інструменту. Однак це не пояснює, як насправді вирішити проблему.
fixer1234

@ fixer1234 Спочатку я просто планував коментувати це питання, але, мабуть, мій обліковий запис занадто новий, щоб зробити це (я можу коментувати власну відповідь, мабуть). Я теж шукав рішення 1-хвилинного мінімуму часу роботизації і знайшов це дворічне питання. У мене з’явилося вище запропоноване мені програмне забезпечення, і саме це я використовую. Думав, що інші в тій же ситуації вважають це корисним, це все. Для здавалося б простого завдання (синхронізація папок) дивно, скільки вам потрібно шукати, щоб знайти рішення ..
Ешлі Вілсон

Щодо ясності моєї відповіді - я б хотів, щоб я міг долучити скріншот (знову ж таки, обліковий запис занадто новий, щоб дозволити це), що зробило б його набагато зрозумілішим - це графічний інтерфейс з одним екраном, і всі параметри чітко видно і прості зрозуміти.
Ешлі Вілсон

Якщо ви користуєтесь будь-якою службою обміну файлами, просто додайте посилання на своє зображення, і хтось вкладе його за вас. Якщо ви регулярно не використовуєте, є безліч безкоштовних (наприклад, imgur.com).
fixer1234

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.