Что произойдет, если второй экземпляр Robocopy запущен в той же папке?
У меня есть несколько резервных копий журнала SQL, запланированных для запуска каждые 15 минут, включая robocopy с параметром /MIR, в папку архива на томе облачного хранилища с помощью CloudBerry.
Иногда после полного резервного копирования и медленной сети полная резервная копия архива не завершается при запуске резервного копирования журнала, и я подозреваю, что проблема, вызванная второй robocopy, теперь также пытается скопировать большой файл полной резервной копии в дополнение к новая резервная копия журнала.
Что должно произойти? Если флаг повтора установлен на /R:60, должен ли второй экземпляр каким-либо образом пропускать файлы, уже скопированные другим экземпляром robocopy, или же эти два экземпляра robocopy будут объединяться друг с другом? Или должен быть запущен второй экземпляр с параметром /R:0, чтобы пропустить первый файл, все еще копируемый?
1 ответ
Я знаю, что этот ответ немного запоздал, и я надеюсь, что вы нашли решение, но вот мои 2 цента:
В Robocopy есть возможность "отслеживать источник" изменений, я думаю, это параметры /MON и /MOT. это предотвратит повторный запуск robocopy - он всегда будет выполняться в сценарии типа "горячей папки".
С помощью робокопии:
/MON:n :: MONitor source; run again when more than n changes seen.
/MOT:m :: MOnitor source; run again in m minutes Time, if changed.
Хотя это довольно старый вопрос, я не нашел правильного ответа и считаю, что он все еще актуален, поэтому вот мои выводы:
Я провел несколько тестов, и мне показалось, что RoboCopy делает снимок исходного и целевого каталогов и сравнивает, какие файлы необходимо скопировать из точки снимка.
Это означает, что если один экземпляр RoboCopy запускается сразу после другого, два экземпляра будут продолжать конфликтовать и перезаписывать друг друга, поскольку ни один из экземпляров не знает, что в целевом каталоге происходят изменения.
Если один экземпляр (экземпляр A) пытается скопировать тот же файл, что копирует другой экземпляр (экземпляр B), он будет ошибаться и либо повторить попытку (при использовании /R), либо перейти к следующему (если используется /R:0). Как только экземпляр B завершит работу с файлом, он попытается скопировать следующий файл в списке, что приведет либо к ошибке (если экземпляр A все еще копирует его), либо перезапишет файл (если экземпляр A уже перешел к следующему файлу).
Итак, в случае вопроса, наиболее вероятное поведение (при условии, что скорость сети и размеры файлов остаются в некоторой степени согласованными) заключается в том, что новый экземпляр RoboCopy перезапишет файлы резервной копии в начале списка, в то время как исходный экземпляр все еще копирует последний файлы в списке.