Битлента
Сетевые команды и утилиты5 мин чтения·

robocopy /MIR: как работает зеркалирование и почему сначала нужен пробный запуск

Что делает robocopy /MIR, чем он отличается от обычного копирования и как не удалить лишнего: пробный запуск /L, исключения и проверка пути.

Кратко

Ключ /MIR делает приёмник копией источника: копирует новые и изменённые файлы и удаляет в приёмнике то, чего нет в источнике. Из-за удаления команду сначала запускают с /L, проверяют вывод и только потом выполняют по-настоящему.

Одна опечатка в пути и пустая папка вместо архива

Обычное копирование только добавляет и обновляет файлы. Ключ /MIR работает иначе: в справке robocopy он описан как зеркалирование дерева каталогов, то есть сочетание /E и /PURGE. Вторая часть и есть источник риска. Любой файл или папка, которые есть в приёмнике, но отсутствуют в источнике, будут удалены.

Отсюда типичная неприятная история. Человек меняет местами источник и приёмник или указывает не ту папку, а пустой каталог «зеркалируется» поверх рабочего архива. Корзина в этом случае не помогает, потому что robocopy удаляет файлы напрямую.

Это не повод отказываться от ключа. Зеркало удобно, когда на втором диске нужна точная копия рабочей папки без накопившегося мусора. Но использовать его стоит с привычкой проверять, что именно будет удалено.

Поэтому разумное правило звучит так: до первого реального запуска /MIR сверьте оба пути глазами, а лучше скопируйте их из проводника в команду, чтобы исключить опечатки в буквах дисков и именах папок. Особенно внимательными будьте с корнем диска: зеркалирование на корень без вложенной папки затрагивает всё, что на нём лежит.

Пробный запуск с /L: что он показывает

Ключ /L включает режим списка: robocopy проходит по обоим деревьям, определяет действия и печатает их, но ничего не копирует и не удаляет. Команда выглядит так: robocopy C:\Work D:\Mirror /MIR /L. Если добавить /LOG:проверка.txt, то результат удобно просматривать в обычном редакторе, а не прокручивать окно консоли.

Предупреждение: без /L команда /MIR действительно удаляет файлы в приёмнике, и вернуть их из корзины нельзя. Отрабатывайте реальный запуск только на тестовых папках, которые вы создали для проверки: например, C:\Test\src с несколькими пустыми файлами и C:\Test\dst с одним лишним файлом. Команда robocopy C:\Test\src C:\Test\dst /MIR сделает dst копией src, и лишний файл исчезнет, это и есть наглядная демонстрация. К рабочим данным переходите после такой тренировки и пробного запуска /L.

В выводе обращайте внимание на пометки в начале строк. Строки с пометкой «New File» или «Newer» описывают копирование, а строки с пометкой «Extra File» или «Extra Dir» относятся к элементам, которые есть только в приёмнике и при реальном запуске будут удалены. Названия пометок приведены по англоязычному выводу; в локализованной версии они переведены.

  • Просмотрите все строки с пометкой лишних файлов и убедитесь, что ничего ценного там нет.
  • Сверьте путь приёмника посимвольно с тем, что вы задумали.
  • Если лишних элементов неожиданно много, остановитесь и проверьте порядок путей.
  • Только после этого уберите /L и запустите команду.

Полезно также добавить ключ /NP, который убирает построчный вывод процента выполнения: в журнале останется меньше шума, и просматривать его будет легче. Для краткого журнала существуют ключи /NFL и /NDL, скрывающие списки файлов и каталогов, но для пробного запуска они не подходят, потому что вы как раз хотите увидеть эти списки.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Как защитить нужное в приёмнике

Если в приёмнике лежат файлы, которые не должны удаляться, используйте исключения. Ключи /XD и /XF исключают каталоги и файлы из обработки: они не копируются, а в приёмнике такие элементы при /MIR, как правило, остаются на месте. Проверьте это пробным запуском /L на своих данных. Например, robocopy C:\Work D:\Mirror /MIR /XD Temp /XF *.tmp пропустит папку Temp и все файлы с расширением tmp.

Надёжнее всего отвести под зеркало отдельную папку, в которую вы ничего не кладёте руками. Тогда любые «лишние» файлы там по определению не нужны. Если же приёмник совмещён с другими данными, лучше выбрать обычный ключом /E без /MIR.

ЗадачаПодходящий вариант
Добавлять и обновлять, ничего не удалять/E
Точная копия, лишнее удалять/MIR
Точная копия, но проверить заранее/MIR /L
Исключить служебные каталоги/XD имя

Дополнительное ограничение даёт ключ /XO: он пропускает файлы, у которых в источнике время изменения старше, чем в приёмнике. Но он не отменяет удаление лишнего, поэтому сам по себе безопасность /MIR не повышает. Если вы хотите именно обновлять новые файлы и ничего не стирать, выбирайте /E без /MIR.

Зеркало как резервная копия: границы подхода

Зеркало отражает ошибки так же быстро, как и правки. Если вы случайно удалили файл в источнике и на следующий день запустили /MIR, копия тоже потеряет его. Поэтому зеркало защищает от отказа диска, но не от собственных ошибок и не от шифрования файлов вредоносной программой, которое копия подхватит при очередном запуске.

Для защиты от таких случаев пригодны версии: история файлов, снимки или несколько копий в разные дни. Как устроена встроенная история файлов Windows, описано на отдельной странице раздела инструкций.

Здесь же стоит помнить про правило нескольких копий на разных носителях. Одна копия на соседнем диске того же компьютера не решает проблем с питанием, перегрузкой или кражей оборудования.

Если в источнике работают программы, удерживающие файлы открытыми, например базы данных или почтовые клиенты, копия такого файла может оказаться неполной. Для таких данных закройте программу на время копирования или используйте средства резервного копирования, умеющие работать с открытыми файлами.

Регулярный запуск и контроль результата

Когда команда проверена, её можно поставить в расписание. Для этого пригодится schtasks: задача запускает robocopy в заданное время, а вы смотрите журнал. Если используете /MIR по расписанию, добавьте /LOG+: чтобы записи за разные дни складывались в один файл, и периодически просматривайте его.

Код завершения помогает автоматизировать проверку: значения 0–7 означают, что серьёзных сбоев нет, а 8 и выше сигнализируют о проблемах с копированием. Подробности про биты кода разобраны на странице про базовое копирование папки.

Раз в какое-то время выполняйте тестовое восстановление: выберите пару файлов из зеркала, откройте их и сравните с оригиналами. Это быстрее, чем выяснять проблему в день, когда копия действительно понадобилась.

Хорошая привычка при регулярных запусках: сохранять вывод пробного прогона и сравнивать количество строк с лишними файлами. Резкий скачок числа удаляемых элементов от запуска к запуску сигнализирует, что в источнике что-то изменилось: папка переехала, диск подключился под другой буквой или часть данных пропала.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
robocopyзеркалированиерезервная копияwindows

Часто задаваемые вопросы

Читайте также