14

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

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

1 ответ1

22

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

Короткий ответ: значение 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). И я думаю, можно с уверенностью сказать, что механизм сравнения не изменился бы - поскольку это было бы огромной вещью по сравнению с очень небольшим изменением добавления еще нескольких параметров.

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .