Как Robocopy определяет, был ли файл «изменен»?

17

Я ищу здесь подробную информацию о том, как алгоритм Robocopy определяет, изменился файл или нет. Если я использую, например, параметр / mir, Robocopy должен определить, какие файлы изменены, а какие нет. Использует ли он измененную временную метку или размер файла, хеш-комбинацию всех?

Интересно, что это ничего не говорит об этом в документации.

user54512
источник

Ответы:

25

Хорошо, потратив день на изучение этого, прочтение документации и тестирование для себя (все с одинаковым результатом), у меня есть ответ.

Краткий ответ: значение Robocopy по умолчанию (если вы не укажете что-то другое с помощью параметров) будет копировать любой файл, в котором есть метка времени или размер файла отличается . Помните, что Robocopy ВСЕГДА копирует из источника в пункт назначения. Таким образом, если у вас есть более новый и больший файл в месте назначения, Robocopy перезапишет его более старым и меньшим файлом из источника (поэтому я подчеркиваю слово «отличается» - это не новее или больше , просто другое).

На более глубоком уровне вы можете проверить с помощью параметра / it, даже если атрибуты файла различаются, и скопировать атрибуты, которые также различаются - даже если размер файла и метка времени совпадают (ОК, для 100%, я не знаю, если это скопирует файл или только отсутствующие атрибуты, но поскольку файлы идентичны, результат будет таким же).

Я нашел длинную документацию, которая была процитирована в другой теме - речь идет о версии XP010 (я думаю, это была Windows XP). Но нет более новой документации для робокопии. Вы можете найти документацию здесь:

http://theether.net/download/Microsoft/Utilities/robocopy.pdf (прочитайте раздел «Использование файловых классов Robocopy», там все довольно точно изложено)

Документация о старой версии Robocopy (под Win7 у вас обычно есть версия XP027), но вы можете проверить изменения версии на этом сайте, который имеет очень аккуратный обзор:

http://yarcgui.wilkes.es/De/RoboCopy/index.htm

Суть в том, что между XP и Win7 не так много различий - только незначительные, и изменения должны были добавить параметры, а не изменять их (за исключением параметра / mir). И я думаю, можно с уверенностью сказать, что механизм сравнения не изменился бы - поскольку это было бы огромной вещью по сравнению с очень небольшим изменением добавления еще нескольких параметров.

Это, вероятно, причина того, что нет новой документации.

Надеюсь, это поможет, если вы ищете ту же информацию и читаете это. Я старался быть точным и тщательно исследовал ситуацию.

user54512
источник
2
Используются ли созданные, измененные или обе временные метки?
user643011
@ user54512 Я вообще не понимаю .. так он использует метки времени или хэши?
Шаян
1
@shayan: там написано, если Timestamp ИЛИ Filesize отличается, он скопирует из источника в место назначения. Нет хэшей. Остальное в документации, которую я поместил в ссылку.
user54512