Есть ли опция командной строки или какой-либо способ заставить Robocopy обнаруживать изменения / переименования в файлах или папках в Windows? Например, если я переименую исходный файл «example.txt» в «Example.txt», Robocopy не обнаружит это переименование, и изменения будут проигнорированы, и файл не будет скопирован в целевой каталог. Это теперь оставляет каталог назначения вне синхронизации из источника. Будем очень благодарны за любые предложения о том, как решить эту проблему или обойти ее!
2 ответа
Windows не учитывает регистр, что означает, что смешанные регистры считаются идентичными. Если вы зеркалируете (с параметром /MIR), он будет обрабатывать «source \Example.txt» и «destination \example.txt» как "идентичные" файлы, и, как вы сказали, он не будет скопирован, так как нет необходимости скопируйте "идентичный" файл.
Я согласен с человеком, который сказал, что это дефект, однако в робокопии используется эвристика, основанная на метке времени и размере файла, поэтому робокопия "должна быть" дефектной или, по крайней мере, не идеальной.
Один из способов справиться с этим - перейти к месту назначения и удалить файл, а затем повторно запустить Robocopy.
Другой способ - "помочь" Robocopy в обнаружении изменений, изменив временную метку или размер файла в источнике. Изменение содержимого файла без изменения размера файла и задняя дата метки времени, вероятно, не будет представлять изменения, поскольку это касается Robobopy.
Наконец, вы можете запустить cygwin "diff", чтобы проверить работу robocopy. Однако сама эта проверка не является совершенной, поскольку в cygwin учитывается регистр, поэтому вместо сравнения файлов «example.txt» и «Example.txt» он сообщит, что один отсутствует в источнике, а другой отсутствует в место назначения. Тем не менее, для подавляющего большинства файлов, где это расхождение с заглавными буквами не происходит, cygwin "diff" служит для проверки робокопии.
Если вы не знакомы с Cygwin, единственное, что вам нужно знать, чтобы выполнить различие, это то, что диск C: записывается как /cygdrive /c, а диск D: записывается как /cygdrive /d и точно так же, как в Linux и Unix. символ косой черты является разделителем. В отличие от Windows, где обратный слеш является разделителем.
Предположим, например, что оригинальное дерево "Documents" находится на диске C: и резервная копия находится на диске D: следующая команда cygwin проверит резервную копию. (Отрегулируйте пути, чтобы удовлетворить.)
diff --recursive --brief /cygdrive/c/users/userName/Documents /cygdrive/d/windowsbackup/Documents
В Robocopy есть команда «только для списка», а также подробная команда, синтаксис robocopy, поэтому команда «только для списка» может генерировать вывод списка тех файлов, которые не были скопированы (потому что robocopy считает их идентичными), которые можно скомбинировать в электронной таблице для создания входного файла. позволяя вам удалить проблемные файлы в целевом каталоге, а затем, конечно, robocopy может скопировать их. К сожалению, вы не предоставили никаких подробностей о масштабах задачи, поэтому в этой заметке не должно быть решения проблемы. Это та задача, которую можно выполнить с помощью сценариев, но вы должны решить, стоит ли отладка времени.