Описание всех опций и параметров
Looking for a list of robocopy examples and useful commands? Then look no further.
Robocopy has many command line options and it can be overwhelming to know which commands to use. In this guide, I’ll show you the best robocopy commands and examples.
Let’s get started.
Copy Files That Start With
You can copy files that start with a specific character or word. For example, I will copy all files that start with the word “file”.
You can see below the command only copied the two files that had “file” in the name, everything else was skipped.

Robocopy (Robust File Copy) утилита командной строки, которая идет с Windows Vista и более новыми версиями Windows. В старых версиях Windows она была частью Windows Resource Kit Tools. В отличие от обычной команды copy, Robocopy создана для более надежного копирования и зеркалирования. С подержкой резрешений, атрибутов, информации о пользователе, таймштампав копируемых объектов.
Robocopy is a great command-line utility that is used to copy, mirror, or move large amounts of data quickly and efficiently from one location to another. The power of Robocopy is that it comes with tons of options/switches that you can use to fine-tune and optimize the copy action.
But all those possible options are also the common problem with Robocopy. You probably don’t use it daily, so which switches (options) do you need to use? How did we copy also the NTFS permissions or skip the empty folders?
In this article
In this article, we are going to take a look at Robocopy with the help of commonly used examples. What are the best practices? And how do you speed up your copy action?
Синтаксис
До версии Windows Vista поставлялась как часть пакета Resource Kit.
Начиная с Windows Vista представлена как стандартный компонент.
Параметры копирования
Утилита robocopy («Robust File Copy» = «надежное копирование файлов»)
упрощает задачу резервного копирования большого количества файлов.
Она позволяет копировать только изменившиеся файлы, что дает значительное ускорение при постоянном
резервном копировании.
Изменение файла определяется по его дате, размеру и атрибутам.
При копировании данных с Windows систем на устройства сетевого хранения (NAS)
может возникнуть ситуация, что ваш NAS не поддерживает точность времени создания файлов, принятую в NTFS (100 наносекунд).
Это может привести к тому, что идентичные файлы будут квалифицированы как разные,
что вызовет необходимость копирования.
Параметр /FFT заставляет сравнивать метки создания файлов с двухсекундной точностью.
Это может позволить избежать копирования одинаковых файлов.
Примеры
ROBOCOPY \Server1
eports \Server2ackup
Простое копирование
ROBOCOPY \Server1
eports \Server2ackup *.* /E
Копирование с поддиреториями
ROBOCOPY C:work /MAX:33554432 /L
Список всех файлов в папке, размер которых более 32М
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать
раздел форума
этого сайта (требуется регистрация).
Новый раздел о средствах командной строки в рамках этого же проекта расположен
здесь
До версии Windows Vista поставлялась как часть пакета Resource Kit.
Начиная с Windows Vista представлена как стандартный компонент.
Утилита robocopy («Robust File Copy» = «надежное копирование файлов»)
упрощает задачу резервного копирования большого количества файлов.
Она позволяет копировать только изменившиеся файлы, что дает значительное ускорение при постоянном
резервном копировании.
Изменение файла определяется по его дате, размеру и атрибутам.
При копировании данных с Windows систем на устройства сетевого хранения (NAS)
может возникнуть ситуация, что ваш NAS не поддерживает точность времени создания файлов, принятую в NTFS (100 наносекунд).
Это может привести к тому, что идентичные файлы будут квалифицированы как разные,
что вызовет необходимость копирования.
Параметр /FFT заставляет сравнивать метки создания файлов с двухсекундной точностью.
Это может позволить избежать копирования одинаковых файлов.
Copy Files Over The Network
Copying files over the network is the same as copying locally. There are some additional commands that can help with the transfer of files over the network, I’ll go over these next. It is best to use the UNC path instead of a mapped driving when copying to a remote device.
The above command copies files from my local computer to another server. The /z option copies files in restartable mode. Если копирование прерывается, robocopy может продолжить с того места, где оно было прервано.
Зеркальный каталог со всеми свойствами файлов
В предыдущем примере не отражены свойства файла исходного каталога (ACL, владелец, отметка времени и т. д.). Чтобы отразить и включить свойства файла, используйте эту команду.
robocopy c:source c:itdst /e /mir /copyall

После выполнения команды /mir /copyall «метка» будет удалена из папки itdstaccounting.

Журнал робокопий
По умолчанию Robocopy выводит лог прямо в консоль. Отлично подходит для небольших копий, но при передаче большого количества файлов может потребоваться сохранить результаты в журнал. Еще одним преимуществом использования файла журнала является то, что Robocopy будет работать быстрее.
Параметры журнала Robocopy
Можно даже определить, что регистрировать, а что нет, например, не регистрировать каталоги. Вы можете найти все параметры здесь, в документации.
Использование файлов журналов действительно рекомендуется, когда вы запускаете Robocopy без присмотра. Это дает вам возможность впоследствии проверить наличие ошибок, даже если консоль закрыта. Также рекомендуется использовать файлы журнала при передаче большого количества данных. Таким образом, вы можете легко проверить наличие проблем с копированием.
Убедитесь, что вы также указали имя файла, а не только расположение файла журнала.
robocopy d: estfiles \la-srv-lab02 emp$dst /copyall /e /log:c: empdst.log /zb /r:3 /w:1
Копировать содержимое, включая пустые подкаталоги
Вот скриншот команды с моего компьютера.

Вот сравнение папок. На этот раз папка назначения выглядит так же, как исходная папка.

Роботизированные переключатели
Как упоминалось в начале, команда Robocopy содержит множество переключателей, которые вы можете использовать. Я не собираюсь полностью объяснять каждый из них, но ниже вы найдете наиболее часто используемые переключатели, которые вы можете использовать для Robocopy. Вы можете получить всю информацию, набрав robocopy /?
Параметры копирования
Переключатели выбора файла Robocopy
Варианты повтора
Переключатели повторных попыток робокопирования
Как видите, в Robocopy можно использовать множество переключателей. На мой взгляд, лучший способ изучить и понять утилиту robocopy — на примерах. Ниже вы найдете некоторые из наиболее часто используемых команд robocopy.
Robocopy Single File
Несмотря на то, что robocopy в первую очередь предназначен для надежного копирования больших объемов данных, с помощью robocopy можно скопировать один файл. Для этого вам нужно будет указать имя файла в качестве фильтра:
robocopy d: estfiles c: empdst “имя-файла-для-копии.txt”

робокопировать один файл
Копировать файлы по типу
В Robocopy мы можем фильтровать, какие файлы копировать, используя подстановочные знаки и имена файлов. Это позволяет нам также фильтровать файлы по типу файла. Например, чтобы скопировать только файлы журналов из заданного каталога, мы можем отфильтровать расширение .log, используя подстановочный знак *:
robocopy d: estfiles c: empdst *.log
Как вы можете видеть на скриншоте выше, я добавил параметр /s. Это также скопирует файлы .log из подкаталогов. Он не будет копировать подкаталоги, в которых нет файла .log.
Вы также можете указать несколько типов файлов, просто оставьте пробел между типами файлов:
robocopy d: estfiles c: empdst *.log *.txt
Исключить тип файла
Исключение типов файлов в Robocopy осуществляется с помощью переключателя /xf. Мы можем использовать подстановочные знаки (* и ?), чтобы указать типы файлов, которые мы хотим исключить. Разделяйте несколько типов файлов пробелом между ними.
В приведенном ниже примере копируются все файлы, кроме файлов журнала и txt:
robocopy d: estfiles c: empdst /xf *.log *.txt

Robocopy Exclude File Type
В результатах видно, что 6 файлов были пропущены, а 12 скопированы.
Копировать файлы с фильтром
Помимо типов файлов, мы также можем фильтровать имена файлов или атрибуты файлов с помощью Robocopy. Принцип фильтрации по именам файлов аналогичен фильтрации по типам файлов. Мы можем использовать подстановочные знаки (* и ?) для фильтрации части имен файлов.
Например, чтобы отфильтровать все файлы, имя которых начинается с log:
robocopy d: estfiles c: empdst log*
Также можно отфильтровать файлы, которые вы хотите скопировать, на основе атрибута. Мы можем использовать /IA для копирования только файлов с определенным атрибутом или /XA для исключения файлов с определенным атрибутом.
Например, чтобы включить или исключить файлы, помеченные только для чтения:
# Исключить все файлы, доступные только для чтения
robocopy d: estfiles c: empdst /XA:R
# Копируем только файлы, доступные только для чтения
robocopy d: estfiles c: empdst /IA:R
Вы можете комбинировать все параметры фильтра, если хотите. В приведенном ниже примере все файлы, содержащие имя sep, копируются с расширением .log и не помечаются как доступные только для чтения.
robocopy d: estfiles c: empdst *sep* *.log /XA:R
Копировать содержимое без пустых каталогов
Копирование пустых папок не всегда желательно. Чтобы исключить пустые папки, мы можем использовать ключ /s. Таким образом не будут копироваться пустые папки:
robocopy d: estfiles c: empdst /s
Папка исключения Robocopy
robocopy d: estfiles c: empdst /e /xd “папка a” “папка c”

robocopy исключить папки
Копия на основе возраста файла
Фильтрация файлов по возрасту также является распространенным методом, используемым в Robocopy. Мы можем использовать ключи /MINAGE и /MAXAGE для фильтрации. / MAXAGE, например, полезен, когда вы хотите скопировать только файлы, которым несколько дней. Возраст можно указать только в днях.
# Копируем файлы, созданные на прошлой неделе
robocopy d: estfiles c: empdst /MAXAGE 7
Или, если вы хотите переместить все файлы старше года, вы можете сделать:
# Переместить все файлы старше года
#
# ПРИМЕЧАНИЕ. Это УДАЛИТ файлы из источника!
#
robocopy d: estfiles c: empdst /MINAGE 365 /MOVE /E
Помимо возраста файла, вы также можете фильтровать файлы по дате последнего обращения к файлу. Для этого используйте ключи /MINLAD и /MAXLAD.
Копирование на основе размера файла
Если вы хотите скопировать все файлы размером более 10 МБ или только файлы размером менее 1 МБ, вы можете использовать переключатель Robocopy /max и /min. Размер файла указывается в байтах.
# Копировать только файлы больше 10Mb
robocopy d: estfiles c: empdst /MIN:10000000
Включить безопасность (разрешения)
При копировании файлов на другой диск, отформатированный в NTFS, мы также можем скопировать права доступа к файлу с помощью /sec. Если вы используете /copyall, то безопасность также будет скопирована, /sec совпадает с /copy:dats (данные, атрибуты, метки времени, список контроля доступа NTFS)
# Скопировать файл, включая разрешения NTFS
robocopy d: estfiles c: empdst /SEC
Если место назначения не является диском в формате NTFS, разрешения будут потеряны.
Копировать все файлы и информацию о папках
Переключатель /copyall в Robocopy указывает только, какие атрибуты копировать из файлов (все). По умолчанию копируются только данные и атрибуты папок. Вы также можете скопировать временные метки папок, для этого вам нужно будет указать /dcopy:dat.
Если мы объединим их, то сможем скопировать все файлы и информацию о папках:
# Скопировать всю информацию о файлах и папках
robocopy d: estfiles c: empdst /copyall /dcopy:dat
Копировать в сетевой путь
Если вам нужно скопировать файлы и папки на другой сервер (сетевой путь), есть несколько советов по использованию Robocopy. Проблема с копированием файлов по сети заключается в том, что даже кратковременное прерывание сети может привести к тому, что обычные действия копирования начнутся заново.
При копировании файлов по сети рекомендуется использовать полные пути UNC вместо подключенных дисков.
Robocopy Network Transfer
Еще один хороший способ передачи данных по сети — запланировать ее в нерабочее время. С помощью Robocopy мы можем указать время между запуском задания. Для этого мы будем использовать ключ /RH.
robocopy d: estfiles \la-srv-lab02 emp$dst /copyall /e /rh:1900-0600 /zb /r:3 /w:1

Запланировать задание Robocopy
На скриншоте выше видно, что задание приостановлено до 19:00.
Увеличение скорости копирования с помощью многопоточности
Многопоточность позволяет одновременно копировать больше файлов. По умолчанию установлено значение 8, но вы можете увеличить его до 128. Так что давайте установим его как можно выше, не так ли? Ну, это еще не все. Насколько высоко вы можете установить многопоточность в Robocopy, зависит от исходных и целевых ресурсов. Чем больше у вас дисков (и IOPS), тем больше файлов может одновременно обрабатывать сервер. Но также необходимо учитывать ЦП, память и пропускную способность.
В целом можно сказать, если у вас много мелких файлов, то стоит увеличить многопоточность. Если у вас есть основные большие файлы, может быть лучше уменьшить количество потоков.
Я провел быстрый тест с 2500 файлами, скопировав их с одного SSD диска на другой на том же устройстве:
Цифры выше должны дать вам представление. Если вам нужно скопировать большой объем данных, рекомендуется провести несколько тестов, чтобы выяснить, какое количество является оптимальным для вашей среды.
Очистить файлы и папки из каталога назначения
Если вы удалили кучу файлов/папок из источника и хотите удалить их из папки назначения, используйте параметр /purge.
robocopy c:source c:itdst /e /purge
Вывод покажет вам папки, которые он удалил.

Многопоточное копирование файлов (увеличение скорости копирования)
По умолчанию robocopy использует 8 потоков. Чтобы увеличить количество потоков, используйте команду /mt. В приведенном ниже примере будет использоваться 32 потока.
Вам нужно будет протестировать этот параметр и посмотреть, какое количество потоков лучше всего работает в вашей сети и на вашем компьютере.
Копировать содержимое с безопасностью (разрешения ACL)
Если вы изменили разрешения для файлов и папок и хотите сохранить эти разрешения, вам необходимо использовать параметр /copy:DATS. Это не копирует информацию о владельце, см. пример 4, чтобы включить владельца.

Вот скриншот, сравнивающий права доступа к одной из папок. В исходнике я изменил разрешения на папку учета. Вы можете видеть, что эти разрешения скопированы в папку назначения.

Укажите количество попыток при неудачных копиях
Команда /r указывает количество повторных попыток для неудачных копий. Это рекомендуется для больших копий файлов и при копировании по сети. Копирование сетевых файлов может быть прервано, /r будет автоматически повторять копирование при любых сбоях.
robocopy C:source C:itdst /LOG+:c:it
obolog.txt /MIR /copyall /z /w:1 /r:2
Исключить каталог
Чтобы исключить каталог, используйте параметр /XD.
В этом примере я скопирую все, кроме «бухгалтерской папки». Вы можете видеть ниже, что место назначения не включает папку «бухгалтерский учет».

Проверка копии файла без каких-либо реальных изменений
Вы можете протестировать копию файла с помощью команды /l. Это отличный способ протестировать команду без внесения каких-либо реальных изменений, она покажет вам, что бы она сделала.
Вот пример.
Как вы можете видеть ниже, эта команда скопировала бы один каталог.

Я проведу еще один тест и включу параметр /e.
На этот раз тест показал, что копируется множество файлов и каталогов.

Команда /l — отличная команда, помогающая понять, что она могла бы сделать, не внося никаких реальных изменений.
Копировать файлы старше 14 дней
При этом будут скопированы файлы с временной отметкой не менее 14 дней.
Копировать файлы по типу файла
Если вам нужно скопировать определенные типы файлов, используйте приведенную ниже команду. В этом примере я буду копировать только файлы типа txt.
Ниже вы можете видеть, что robocopy скопировал только файл file1.txt в каталог назначения.

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

Основы
Прежде чем мы углубимся в Robocopy и рассмотрим все варианты, давайте сначала начнем с основ. Первое и самое важное, что нужно знать, это то, что вы запускаете Robocopy в тестовом режиме с параметром /L. Это отобразит результат без фактического копирования или удаления каких-либо файлов или папок.
Robocopy “D: est files” “F:lab” /L
Если вы посмотрите на результаты, то увидите, какие файлы или папки будут скопированы, удалены или пропущены. Когда вы новичок в Robocopy, рекомендуется сначала использовать параметр /L, чтобы проверить, соответствуют ли результаты ожидаемым.
Копирование всех файлов
Когда вы используете Robocopy без каких-либо переключателей, он будет копировать только файлы из заданного места в место назначения. Он не будет копировать никакие подпапки из данного каталога, только файлы без разрешений NTFS или информации о владельце. Все, что вам нужно сделать, это указать исходную папку и папку назначения:

Опции Robocopy по умолчанию
Скопировать все файлы и папки
Чтобы скопировать все файлы и папки с помощью Robocopy, нам потребуется указать параметр /E. Это скопирует все файлы и папки из данного каталога. Если вы также хотите скопировать все атрибуты, например разрешения NTFS или атрибуты владельца, то также добавьте параметр /COPYALL:
Robocopy “D: est files” “F:lab” /E /COPYALL

robocopy скопировать все файлы и папки
Переместить файлы
Когда вам нужно переместить файлы из одного места в другое, вы можете использовать параметр /mov в Robocopy. Это скопирует все файлы, а не подпапки, в место назначения и после завершения удалит файлы из исходного местоположения.
Лично я не большой поклонник использования параметров /mov или /move. Потому что, если что-то пойдет не так с действием копирования, у вас больше не будет исходных файлов. Поэтому сначала проверьте результаты с помощью параметра /L.
Robocopy “D: estfiles” “c: emp estfiles” /mov
При использовании только /mov атрибуты файла, такие как разрешения NTFS, не копируются. Поэтому вы также можете использовать параметр /COPYALL.
Перемещение файлов и папок
Чтобы также переместить папки, мы можем использовать параметр /move, который также должен перемещать подпапки из каталога. Вам нужно объединить это с параметром /E, чтобы просмотреть все подпапки, иначе будет перемещено только содержимое основной папки.
Robocopy “D: estfiles” “c: emp estfiles” /move /e /copyall
Отличие от /mov /e в том, что при этом пустые папки остаются в исходном каталоге, где /move /e также удаляет подпапки после их копирования.
Зеркало-робокопия
Если вы хотите создать зеркальную копию всего каталога, вы можете использовать параметр зеркала Robocopy. Зеркало позаботится о том, чтобы папка назначения полностью совпадала с исходной.
Полезно знать, что если вы добавите или удалите файл в папке назначения, он не будет добавлен в источник. Это зеркало только от источника до места назначения
Не используйте зеркало Robocopy в качестве решения для резервного копирования. Если файл удален в источнике, он будет автоматически удален и в месте назначения. Так что это не резервное решение!
# Зеркальные файлы
Robocopy “D: estfiles” “c: emp estfiles” /mir

Если мы посмотрим на результаты, то увидим строчку Options. Это показывает, какие переключатели Robocopy используются. Как видите, /E и /Purge добавляются автоматически. Это означает, что /MIR также будет зеркалировать все подкаталоги и очищать (удалять) любые файлы в целевом каталоге, которых больше нет в исходном.
Синтаксис Robocopy
robocopy c:src c:dst *.txt
В этом проявлении будут копироваться все файлы .txt из директории c:src в директорию c:dst.
robocopy c:src c:dst /e
Копировать все файлы, включая пустые.
robocopy c:src c:dst /MIR
Сделает зеркало. Использовать с осторожностью т.к. из c:dst будут удалены все файлы, которые отсутствуют в c:src
robocopy robocopy \computersrc c:dst
Источники файлов на компьютере в сети.
Копировать всю информацию о файле
Чтобы скопировать все свойства файла, используйте /copyall, это эквивалентно /copy:DATSOU. Я предпочитаю использовать /copyall вместо перечисления каждого типа свойства.
Сохранить вывод в файл журнала
Чтобы записать вывод robocopy в файл журнала, используйте /log:logfile. Это будет перезаписывать файл журнала каждый раз, когда вы запускаете команду.
Вот скриншот лог-файла. При выполнении больших заданий или миграции вам обязательно нужно включить файл журнала.

Копировать файлы с защитой, включая владельца
Чтобы указать владельца файла или папки, используйте команду /copy:DATSO.
Вот снимок экрана, показывающий, что информация о владельце была скопирована в папку назначения. Без этой команды папка унаследовала бы информацию о владельце.

Часто задаваемые вопросы
Чтобы ускорить процесс копирования, лучше всего перенаправить вывод в лог-файлы. Вывод его на консоль замедлит процесс копирования. Кроме того, если у вас стабильное и надежное сетевое соединение, вы можете не использовать переключатель /z (режим перезапуска). Увеличьте количество потоков до 16 с помощью параметра /mt:16, слишком большое значение может привести к задержке.
Зеркальный исходный и целевой каталог
Эта команда зеркально отразит исходный и конечный каталоги. Какие бы изменения вы ни делали в исходном каталоге, они будут отражены в целевом. Например, если вы добавляете/удаляете папку в источнике, то же самое произойдет и в месте назначения.
Ниже приведен снимок экрана до запуска команды /mir. Вы можете видеть, что источник и пункт назначения различны.

После запуска команды /mir пункт назначения будет тот же.

Вывод команды /mir покажет вам, какие изменения есть между источником и получателем.

Выше сказано, что в пункте назначения был дополнительный каталог «Маркетинг», поэтому он был удален. Затем отсутствовали два каталога «новая папка
» и «тест», поэтому они были добавлены. Подведение итогов
Когда вам нужно скопировать большие объемы данных, Robocopy — один из лучших инструментов для использования. Как вы видели, он поставляется с множеством опций, которые помогут вам копировать данные наиболее эффективным способом. При работе с большими наборами данных убедитесь, что вы тестируете свои команды с ключом /L, прежде чем запускать их на рабочих данных.
Надеюсь, эта статья оказалась для вас полезной. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.
Копировать содержимое, исключая пустые подкаталоги
Вот скриншот с моего компьютера.

Вот скриншот, показывающий сравнение исходной и целевой папок.

Почему robocopy скопировал только папку «Защитник Windows»? Поскольку другие папки пусты, команда /s исключит пустые подкаталоги.
Копировать файлы определенного размера
При этом будут скопированы файлы, не исключающие 2000 байт.
Вы также можете использовать /min, чтобы указать минимальный размер файла.
Копирование файлов по сети со свойствами файла
Если вы хотите скопировать ACL и другие свойства файла, используйте /copyall. Чтобы скопировать только ACL, вы можете использовать /copy:DATS.
Добавление к существующему файлу журнала
Используйте команду /log+:logfile для добавления существующего файла журнала. Это будет добавляться в файл журнала каждый раз, когда вы запускаете robocopy.



