- VSS Backup: Резервное копирование открытых (заблокированных) файлов 1C, Outlook (*.pst) и других.
- Проблема резервного копирования открытых файлов
- Решение проблемы резервного копирования занятых (открытых) файлов
- Что такое горячее или теневое копирование (shadow copying)?
- Где хранятся теневые копии и сколько занимают места?
- Как Exiland Backup Professional копирует залоченные файлы
- Как настроить копирование файлов Outlook (PST, OST), не закрывая Outlook у пользователей
- Процесс копирование открытых файлов
- Энциклопедия Windows
- Копирование заблокированных файлов с HoboCopy
- Резервное копирование одного файла с помощью HoboCopy
- Резервное копирование каталога с помощью HoboCopy
- Инкрементное копирование файлов с помощью HoboCopy
- Использование Robocopy для синхронизации и резервного копирования файлов, примеры
- Основные возможности Robocopy
- Синтаксис и параметры robocopy
- Использование robocopy для зеркалирования каталогов
- Инкрементальное копирование с помощью robocopy
- Robocopy: перемещение файлов
- Пример использование robocopy в планировщике задач
- Отслеживание изменений в каталогах с помощью robocopy
- Коды возврата (ошибки) robocopy
VSS Backup: Резервное копирование открытых (заблокированных) файлов 1C, Outlook (*.pst) и других.
Проблема резервного копирования открытых файлов
Если вы сталкивались с проблемой копирования занятых файлов, которые в данный момент используются другим приложением, то эта статья для вас. В файловой системе существуют так называемые монопольные блокировки файлов, которые недоступны даже для чтения другими приложениями.
Примеры открытых файлов:
- файлы MS Outlook (*.pst, *.ost)
- файлы MS Exchange Server
- диски виртуальных машин — Virtual Hard Disk (файлы VHD, VHDX)
- файлы MS SQL Server (*.mdf, *.ldf)
- файлы MS Access (*.mdb, *.ldb)
- файлы MS Word, MS Excel (*.docx, *.xlsx)
- файлы NTUSER.dat в папке с профилями пользователей C:\Users
- и другие
Например, в MS Outlook все ваши данные (почта, контакты, задачи, календарь) хранятся в файле вида:
«C:\Users\ \Documents\Файлы Outlook\yourname@domain.com.pst»
или
«C:\Users\ \AppData\Local\Microsoft\Outlook\yourname@domain.com.pst»,
в зависимости от настроек, расположенных в меню «Файл -> Настройка учетных записей», вкладка «Файлы данных».
Если Microsoft Outlook открыт, то к файлу PST нет доступа даже на чтение и при попытке резервного копирования PST-файла в другую папку вы получите сообщение об ошибке:
Процесс не может получить доступ к файлу, так как этот файл используется другим процессом.
(The process cannot access the file because it is being used by another process).
или текст ошибки может выглядеть немного иначе:
0x80070021: Процесс не может получить доступ к файлу, так как часть этого файла заблокирована другим процессом (Отказано в доступе).
0x80070021: The process cannot access the file because another process has locked a portion of the file (Access denied).
Ошибка копирования файла, если файл занят другим процессом
Решение проблемы резервного копирования занятых (открытых) файлов
Существует 2 способа:
- Перед созданием дубликата файлов закрыть программу, которая использует эти файлы. Например, вы можете жестко закрыть MS Outlook («убить» процесс), используя команду: taskkill /im outlook.exe /f
- Использовать Volume Shadow Copy для «горячего» копирования открытых файлов (заблокированных файлов).
Первый способ — слишком жесткий и не всегда возможен, т.к. иногда для снятия задачи (kill process) в Диспетчере задач требуются повышенные привилегии. К тому же, целостность данных не гарантирована, поскольку во время жесткой выгрузки процесса из памяти этот процесс может производить запись на диск и тогда файл останется поврежденным (недописанным).
Второй способ — более гуманный, так как использует технологию теневого копирования тома Volume Shadow Copy от Microsoft и гарантирует целостность данных на диске.
Ниже будет рассмотрен способ создания копии файлов «на горячую», которые используются другим приложением, то есть 2 способ с помощью утилиты Exiland Backup Professional.
Что такое горячее или теневое копирование (shadow copying)?
Теневое копирование — это технология Microsoft, которая позволяет копировать файлы, занятые другим приложением. Это возможно благодаря созданию мгновенного снимка файловой системы (Shapshot), в то время как файловая система продолжает работать в штатном режиме без каких-либо блокировок. Таким образом, процесс создания дубликата возможен без прерывания работы текущих приложений. Служба теневого копирования VSS — Volume Shadow Service работает фоном и осуществляет доступ к данным на диске, даже если файл в этот момент используется другим приложением. Целостность данных при этом не нарушается.
ОБРАТИТЕ ВНИМАНИЕ!. Технология Volume Shadow Copy относится ко всему диску целиком, а не к отдельным файлам на диске, таким образом, вы не сможете создать теневую копию какого-либо отдельного файла. Тем не менее, вы можете сначала создать копию всего тома, затем подключить ее в системе как отдельный логический диск, например, Z:\ и после этого выборочно скопировать нужные вам файлы с этого диска (из shadow копии).
Где хранятся теневые копии и сколько занимают места?
Теневые копии тома, как правило, хранятся в скрытой системной папке «System Volume Information», расположенной в корне каждого диска. Размер одной теневой копии диска составляет около 100-300 МБ, что значительно меньше суммарного объема данных, хранящихся на диске. Место под хранение таких копий на диске отведено системой заранее и вам не нужно об этом беспокоиться.
Как Exiland Backup Professional копирует залоченные файлы
В программе Exiland Backup, начиная с версии 4.9, резервное копирование открытых файлов, таких как MS Outlook (pst, ost), MS Access (*.mdb), MS SQL Server (*.mdf) и других полностью автоматизировано. Если у вас нет глубоких знаний операционной системы или вы просто хотите сэкономить время, используйте Exiland Backup. Утилита взаимодействует со службой теневого копирования, встроенной в операционную систему Windows.
Алгоритм горячего бэкапа в Exiland Backup достаточно простой:
- сначала программа создает временную теневую копию тома (слепок файловой системы — snapshot), из которого необходимо скопировать файлы.
- затем созданная копия подключается как логический диск
- производится копирование выбранных файлов с подключенного диска (из теневой копии) в папку назначения
- удаление этой временной копии.
Как настроить копирование файлов Outlook (PST, OST), не закрывая Outlook у пользователей
При создании задания вы указываете исходные файлы и папки. Если вы знаете, что исходные файлы во время создания бэкапа могут использоваться другим приложением, то установите опцию «[x] Использовать теневое копирование VSS (Volume Shadow Copy) для диска», как показано на скриншоте ниже. Если исходные данные расположены на нескольких дисках, то программа предложит создание теневых копий для нескольких томов поочередно.
Процесс копирование открытых файлов
Во время выполнения задания в журнале будет видно, что программа сначала создает временную теневую копию диска C, затем копирует из нее данные, а после выполнения задания удаляет ранее созданную shadow копию, чтобы она не занимала место на диске. Пример журнала выполнения задания показан ниже.
Таким образом, нам удалось создать резервную копию нужных нам залоченных файлов «нагорячую» благодаря поддержки VSS в Exiland Backup Professional. Главное удобство в том, что не нужно никого «выгонять» из программ — копирование происходит незаметно для пользователя.
Энциклопедия Windows
Все об использовании и настройке Windows
- Windata
- »
- Мир Windows
- »
- Утилиты
- » Копирование заблокированных файлов с HoboCopy
Копирование заблокированных файлов с HoboCopy
Предположим, что вы хотите скопировать файл, который намертво заблокирован другой программой. В результате Windows нам радостно сообщит о том, что системный процесс не может получить доступа к файлу, поскольку последний заблокирован другим процессом. Как же тогда скопировать такой файл?
Что же мешает, собственно говоря, освободить файл, закрыв заблокировавшую его программу? Да ничего, но представьте, что вы настраиваете автоматическое резервное копирование файлов. Если файл заблокирован, то программа резервного копирования здесь не справится и нужный файл не будет скопирован. Вот тут-то и понадобится один рецепт, который представлен в этой статье.
Начиная с Windows XP операционная система от Microsoft поддерживает технологию теневого копирования (она же Volume Shadow Copy). Данная технология используется для резервного копирования данных и восстановления системы. В частности, теневая копия представляет собой временный “снимок” файла или раздела жесткого диска. При этом одна программа может получить доступ чтения именно к снимку, в то время как другие программы могут в это же время работать с файлом или изменять его.
Именно это нам и нужно – чтение занятого файла. И поможет нам в этом утилита для командной строки HoboCopy, предназначенная для резервного копирования файлов.
На следующей странице можно загрузить HoboCopy для Windows XP и Windows Vista/7 в версиях 32/64 бит:
Для работы HoboCopy (да и многих других программ для резервного копирования) нам надобятся две следующих службы Windows:
- Теневое копирование тома
- MS Software Shadow Copy Provider
Если вы забыли, где просмотреть службы, то в Windows 7 перейдите по пути Панель управления > Система и безопасность > Администрирование > Службы (а в Windows XP – Панель управления > Администрирование > Службы).
Убедитесь в том, что службы не отключены. Если для них указан режим запуска Вручную, то программа HoboCopy самостоятельно запустит эти службы, когда понадобится и отключит их по завершению своей работы.
Резервное копирование одного файла с помощью HoboCopy
Как вы помните, HoboCopy – утилита командной строки. К слову сказать, в Windows 7 и Windows Vista ее нужно запускать в режиме администратора, для чего щелкните на файле программы правой кнопкой мыши, выберите команду Свойства > Дополнительно и установите флажок Запуск от имени администратора. Также будет не лишним ознакомиться со статьей Запуск программ Windows 7 в режиме администратора.
Синтаксис команды выглядит следующим образом:
К примеру, мы решили скопировать файл c:\users\windata\mail\outlook.pst прямо вот сюда: d:\backups\outlook.pst.
Команда будет выглядеть следующим образом:
Резервное копирование каталога с помощью HoboCopy
Чем копировать по одному файлу, разумеется, куда лучше настроить резервное копирование целыми папками. Для этого нам понадобятся такие ключи:
- /full – копирование всех файлов
- /skipdenied – игнорировать любые сообщения ошибках, связанных с разрешением доступа
- /r – рекурсивное копирование
- /y – никаких запросов, копировать абсолютно все
Синтаксис команды следующий:
Например, используя предыдущий пример, скопируем всю пользовательскую папку в папку d:\backups\. Для этого нам понадобится такая команда:
На копирование понадобится какое-то время, так что можно передохнуть, перекусить и потрещать вконтактике (шутка). Результатом станет полная копия всего каталога. Если при копировании были сообщения об ошибках, связанных с разрешением доступа, программа укажет на проблемные файлы.
Инкрементное копирование файлов с помощью HoboCopy
Утилита HoboCopy поддерживает и инкрементный тип копирования. Что это такое? Весьма полезная функция, она позволяет копировать только те файлы, что изменились с момента предыдущего резервного копирования. При этом последняя дата копирования хранится в файле, который вам нужно указать непосредственно в команде утилиты.
Для инкрементного копирования потребуются два ключа:
- /statefile=имя_файла – это имя файла, в котором будут записаны данные о последнем копировании
- /incremental – а это, как понятно из названия, ключ для инкрементного копирования
Синтаксис команды выглядит так:
Важно . При первом запуске программы необходимо указать ключ /full вместо /incremental, иначе будет выдано сообщение об ошибке, так как файл с данными о предыдущем состоянии еще не будет создан. А вот уже все последующие команды нужно указывать с ключом /incremental.
Таким образом, утилита HoboCopy позволяет настроить автоматическое копирование папок, для чего нужно лишь запланировать процедуру копирования. В Windows 7/Vista для этого используйте системную программу Планировщик заданий (Панель управления > Система и безопасность > Администрирование > Расписание выполнения задач), а в Windows XP – окно Назначенные задания (Панель управления > Назначенные задания).
Использование Robocopy для синхронизации и резервного копирования файлов, примеры
Robocopy – это консольная утилита Windows для копирования файлов, которую можно использовать для синхронизации/репликации файлов и каталогов, и в сценариях резервного копирования. Robocopy (Robust File Copy) доступна начиная с Windows NT 4.0 Resource Kit, но по умолчанию эта функция появилась только в Windows Vista и Windows Server 2008. Robocopy заменяет Xcopy и copy, как более функциональная.
Основные возможности Robocopy
Кроме обычного копирования файлов и папок из папки источника в каталог назначения, в Robocopy есть множество очень полезных функций:
- Устойчивость к обрывам сети (robocopy может продолжить копирования после восстановления сетевого доступа);
- Корректное копирование файлов с их атрибутами и NTFS правами доступа;
- Копирование с сохранением исходной временной метки;
- Возможность копирования файлов и директорий, запрещенных для доступа даже администратору, с помощью ключа /B (ключ позволяет игнорировать проверку прав доступа, ключ доступен только для участников группы Администраторы или Операторы архива);
- Возможность задать количество попыток копирования файла, если файл недоступен;
- Режим полного зеркалирования директорий;
- Пропуск уже существующих файлов (с одинаковым размером или временной меткой timestamp);
- Индикатор прогресса копирования;
- Корректная работа с длинными путями (более 260 символов);
- Эффективные алгоритмы и многопоточность позволяют выполнять копирование файлов намного быстрее, чем обычное копирование средствами Windows;
- Поддержка коды возврата (что позволяет использовать robocopy в различных внешних скриптах и утилитах).
Официальной графической версии robocopy (c GUI) от Microsoft нет. Существуют пользовательские версии, но их поддержка прекращена. Список неофициальных GUI для robocopy (это сторонние программы):
Синтаксис и параметры robocopy
Robocopy имеет много параметров, которые на первый взгляд могут показаться сложными, но имея под рукой документацию, вы с легкостью разберетесь и сможете править скрипты под себя.
Синтаксис robocopy состоит из двух обязательных параметров (исходный и целевой каталог) и двух необязательных (фильтр файлов и параметры):
robocopy [фильтр файлов] [параметры]
Поддерживаются как локальные пути, так и UNC, например, \\server\directory
Полный синтаксис утилиты robocopy (все параметры и их описания) доступны по команде:
Поскольку ключей в robocopy много, мы будем рассматривать их на практике, в готовых командах. Мы не будем рассматривать самые простые примеры использования robocopy, т.к. обычно они не вызывают вопросов. Ниже представлены готовые к применению более сложные команды robocopy, которые можно использовать в реальных сценариях.
Использование robocopy для зеркалирования каталогов
Вы можете зеркалировать (синхронизировать) содержимое двух каталог с помощью следующей команды robocopy (под зеркалированием понимается копирование файлов из целевой папки с удалением файлов в целевом каталоге, если они удалены в источнике).
robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ *.txt /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log
- \\testnode1\C$\source\ — исходный каталог, откуда копируются файлы
- \\testnode2\C$\dest\ — каталог назначения, куда скопируются файлы
- *.txt – фильтр файлов. Синхронизируются только .txt файл и директории.
- /MIR – полное зеркалирование данных в source и dest директориях. Файлы, удаленные из source директории или не присутствующие в ней, также будут удалены из dest. Если вы хотите, чтобы удаленные из source файлы оставались в dest, то поменяйте параметр /MIR на /E
- /COPYALL – копирует всю информацию о файле (Атрибуты, параметры безопасности и т.д.). Как альтернатива, можно применять флаг /COPY:DT для копирования timestamp, а не всей информации. /COPALL требует прав администратора
- /Z – robocopy продолжит копирование файла при обрыве. Полезно при копировании больших файлов (неплохая альтернатива копированию файлов по BITS)
- /B – позволяет robocopy избегать ошибки access denied error. В этом режиме robocopy игнорирует все права на файлы, которые могли бы помешать прочитать/записать файл. Этот режим требует прав администратора либо участие в группе Операторы архива
- /J – Копирование без буфера (файлового кэша, оперативной памяти). Эффективно для больших файлов.
- /R:3 – количество попыток скопировать недоступный файл. Значение по умолчанию – миллион, поэтому необходимо его сменить.
- /W:1 – секунды между попытками скопировать недоступный файл. Значение по умолчанию – 30 секунд.
- /REG – сохранить текущие значения ключей /R и /W в реестр как стандартные, для будущих вызовов robocopy.
- /TEE – разделение вывода работы команды и в лог файл, и в консоль. При фоновом вызове robocopy (например, из планировщика задача) этот параметр можно убрать, оставив только /LOG
- /LOG – путь к файлу лога
Обратите внимание на ключ /Z даже если вы копируете небольшие файлы по устойчивому каналу. Он не несёт дополнительных расходов при использовании, но в случае обрыва, вы сможете продолжить копирование просто повторно запустив скрипт.
Инкрементальное копирование с помощью robocopy
Сам по себе robocopy не может полностью обеспечить инкрементальное резервное копирование каталога (копирование новых и измененных файлов), для этого мы будем использовать небольшой bat скрипт:
- set date_=%date:/=-% — эта строчка присваивает значение переменной date_ в формате DD.MM.YYYY
- /maxage:1 — Максимальный возраст файла. Исключает файлы старше N дней или даты. Дата указывается в формате YYMMDD, например, /maxage:20200421
- /E – копирует подпапки, без ограничения уровня вложенности. Для контроля уровня вложенности директорий можно использовать параметр /lev, например, /lev:3
Инкрементальность осуществляется за счёт параметра /maxage:1 — файлы старше суток копироваться не будут. Для первого, “базового” копирования, можно выполнить этот скрипт без параметра /maxage.
Robocopy: перемещение файлов
С помощью ключа /mov или /move вы можете переместить файлы (а точнее удалить успешно скопированные файлы из исходной директории):
robocopy C:\source\ F:\dest\ /MOVE /E /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log
- /MOVE – удалить файлы и директории из исходной папки, после того как они были скопированы. Имейте в виду, что этот ключ нужно использовать вместе с /E или /S, в противном случае вы перенесете только файлы, но не директории. Если вы хотите перенести только файлы, используйте ключ /MOV
- Если вы используете ключ /MOVE с ключом /E, то вы перенесете все файлы, директории (включая файлы внутри них) и пустые директории. Файлы и директории удалятся из исходной папки. /MOVE с /S даст такой же результат, но пустые директории не перенесутся и будут удалены.
- Если вы используете ключ /MOV с ключом /E, то вы перенесете все файлы, включая те, которые находятся в директориях и поддиректориях, также скопируются все директории (включая пустые), но они не будут удалены из исходного каталога, в отличие от файлов. Используя /MOV с /S, вы получите такой же результат, но пустые директории не будут скопированы.
Пример использование robocopy в планировщике задач
Для примера возьмём задачу: нам необходимо с помощью robocopy регулярно синхронизировать содержимое сетевой папки между двумя серверами с ведением логов.
- Исходный путь — \\testnode1\C$\source
- Целевая директория- \\testnode2\C$\source
Запустите командную строку с правами администратора и введите: compmgmt.msc
Перейдите в System Tools -> Task Scheduler Library. Создайте новое задание планировщика (Create task).
Укажите имя задания, и выберите пользователя из-под которого будет выполняться задание. Пользователь должен иметь доступ на чтению и запись в обоих каталогах (при копировании по сети между серверами домена можно использовать аккаунт System, в этом случае нужно предоставить на целевой каталог права RW для объекта computer сервера-источника) .
Выберите опцию Run whether user is logged on or not, для того чтобы задание выполнялось в фоновом режиме. Также отметьте Run with highest privileges. Эта опция сработает если аккаунт из-под которого выполняется задание, будет иметь права администратора.
Перейдите на вкладку Triggers и создайте новый триггер.
Выберите параметр On a schedule (по расписанию), выберите время начала и отметьте Repeat task every, указав интервал выполнения. В моём случае это 5 минут – каждые 5 минут, начиная с часа дня 22 апреля (обязательно измените эту дату на ту, которая нужна вам), директории будут синхронизированы. В for a duration of поставьте Indefinitely (бесконечно)
Перейдите во вкладку Actions и нажмите New…
Выберите Start a program, и укажите путь к .bat скрипту.
Содержание robocopy-mirror.bat:
Помимо журнала выполнения задания планировщика, robocopy будет писать собственный лог файл копирования в C:\robocopy.log. Если аккаунт из-под которого будет выполняться скрипт не имеет прав администратора, смените C:\robocopy.log на нужный вам путь.
Остальные настройки заполнять не надо. После нажатия на кнопку ОК, вас попросит ввести пароль от учетной записи, которую вы выбрали для запуска задания.
Если вы всё настроили правильно, директории должны начать синхронизироваться.
Если у вас возникли проблемы с выполнением скрипта, то обязательно проверьте вкладку History вашей задачи
Отслеживание изменений в каталогах с помощью robocopy
В robocopy есть встроенный механизм отслеживания изменений в исходном каталоге (и их последующего копирования) и встроенный планировщик – параметры /mon и /mot .
- /mon:N – проверяет исходную директорию на предмет изменений каждую 1 минуту, и если изменений в директории больше чем N, то будет произведено копирование в целевую директорию. Если задан параметр /mot:Y, то изменения будут проверяться каждые Y минут.
- /mot:N – проверяет исходную директорию на предмет изменений каждые N минут. Минимальное значение N = 1, в минутах. Если параметр /mon не задан, то будет считаться что /mon:1
.bat скрипт для зеркалирования с отслеживанием изменений с интервалом в 1 минуту. Этот скрипт нужно запускать из-под аккаунта с правами администратора.
Плюсы:
- Не нужно создавать задание в планировщике задач
- Подходит для непостоянного выполнения. Например, в течение нескольких часов, в таком случае запустить скрипт руками через CMD проще, чем создавать задание в планировщике
Минусы:
- Чтобы запустить .bat скрипт в фоновом режиме, нужно либо использовать VBS скрипт, либо стороннее ПО, например, NirCmd.
- Минимальный интервал поиска изменений и копирования – 1 минута. Для меньшего интервала нужно использовать PowerShell или bat скрипт.
Коды возврата (ошибки) robocopy
Ниже приведены стандартные коды возврата robocopy, которые можно использовать для обработки различных ошибок, которые возвращает утилита после выполнения действия копирования (кот возврата эта битовая маска).
Hex | Decimal | Meaning if set |
0x00 | 0 | No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized. |
0x01 | 1 | One or more files were copied successfully (that is, new files have arrived). |
0x02 | 2 | Some Extra files or directories were detected. No files were copied Examine the output log for details. |
0x04 | 4 | Some Mismatched files or directories were detected. Examine the output log. Housekeeping might be required. |
0x08 | 8 | Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further. |
0x10 | 16 | Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories. |
Коды возврата могут комбинироваться: | ||
0x03 | 3 | (2+1) Some files were copied. Additional files were present. No failure was encountered. |
0x05 | 5 | (4+1) Some files were copied. Some files were mismatched. No failure was encountered. |
0x06 | 6 | (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory |
0x07 | 7 | (4+1+2) Files were copied, a file mismatch was present, and additional files were present. |
Любое значение больше 7 говорит о том, что при копировании через robocopy возникла ошибка. Вы можете обрабатывать эти ошибки в bat файле:
if %ERRORLEVEL% EQU 16 echo ***FATAL ERROR*** & goto end
if %ERRORLEVEL% EQU 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 14 echo FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 13 echo OKCOPY + FAIL + MISMATCHES & goto end
if %ERRORLEVEL% EQU 12 echo FAIL + MISMATCHES& goto end
if %ERRORLEVEL% EQU 11 echo OKCOPY + FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 10 echo FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 9 echo OKCOPY + FAIL & goto end
if %ERRORLEVEL% EQU 8 echo FAIL & goto end
if %ERRORLEVEL% EQU 7 echo OKCOPY + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 6 echo MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 5 echo OKCOPY + MISMATCHES & goto end
if %ERRORLEVEL% EQU 4 echo MISMATCHES & goto end
if %ERRORLEVEL% EQU 3 echo OKCOPY + XTRA & goto end
if %ERRORLEVEL% EQU 2 echo XTRA & goto end
if %ERRORLEVEL% EQU 1 echo OKCOPY & goto end
if %ERRORLEVEL% EQU 0 echo No Change & goto end
:end
Утилита robocopy имеет огромный функционал и позволяет гибко настроить операции копирования. Как альтернативу robocopy в PowerShell можно использовать командлет Copy-Item, который хоть и менее функционален, но работает с объектной моделью PowerShell, что может быть важно, если вы часто используете PowerShell или используете цепочки автоматизации с другими языками программирования.