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”.
robocopy C:\source \\srv-vm2\share file* You can see below the command only copied the two files that had “file” in the name, everything else was skipped.

Windows
/ Программное обеспечение
Robocopy разработана для отказоустойчивого копирования каталогов и деревьев каталогов. Она обладает возможностью копирования всех (или выборочных) NTFS атрибутов и свойств, имеет дополнительный код для перезапуска при применении с сетевым соединением в случае его разрывов.
На сайте Microsoft доступна другая утилита RichCopy со схожими функциями.
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?
Имеется два диска «D:» и «E:». Задача — создавать backup диска «D:» (зеркало) на диске «E:» через заданные промежутки времени.

На помощь нам придет планировщик заданий и утилита robocopy. Находим через поиск Windows 11 (значок лупы на панели задач, либо горячие клавиши «Win+S») планировщик заданий и запускаем его.


В окне « Создание задачи
», во вкладке « Общие
» задаем « Имя
» задачи, вводим « Описание
» задачи, а в разделе « Параметры безопасности
» указываем пользователя с правами администратора, выбираем пункт « Выполнять для всех пользователей
» и устанавливаем флажок « Выполнять с наивысшими правами
».


В окне « Создание триггера
» задаем расписание для запуска задачи бэкапа, для сохранения настроек нажимаем кнопку « ОК
».


Появится окно « Создание действия
», указываем действие — « Запуск программы
». В разделе « Параметры
» — « Программа и сценарий
» указываем « robocopy
», а в поле « Добавить аргументы
» указываем сценарий копирования данных:
"D:\data" "E:\backup" /mir /copy:DAT /xo /r:1 /w:1 /log:"C:\log.txt"
«D:\data» — откуда копируем.
«E:\backup» — куда копируем.
/mir — создаем зеркало дерева папок.
/copy:DAT — копируем флаги (D=данные, A=атрибуты, T=метки времени).
/xo — исключаем более ранние файлы.
/r:1 — число повторов при неудачном копировании.
/w:1 — время между повторами.
/log:«C:\log.txt» — создаем лог-файл.
Для сохранения настроек нажимаем кнопку « ОК
».

Созданное действие будет отображаться во вкладке « Действия
».

Вкладку « Условия
» оставляем неизменной.

Так же и вкладку « Параметры
» оставляем неизменной.

Для завершения создания задачи нажимаем кнопку « ОК
» и в окне авторизации указываем пароль от локального администратора.

Задача создана. Теперь остается дождаться расписания, когда задача сработает и создаст зеркало диска «D:».

При успешном срабатывании задачи свободное место на диске «E:» изменится. Если ничего не произошло, идем в лог-файл и смотрим, где ошибка.

Mirror Source and Destination Directory
This command will mirror the source and destination directory. Whatever changes you make in the source directory will be mirrored in the destination. For example, if you add/remove a folder in the source, the same will occur in the destination.
robocopy c:\source c:\it\dst /e /mir Below is a screenshot before I run the /mir command. You can see the source and destination are different.

After I run the /mir command the destination will be the same.

The output of the /mir command will show you what changes there are between the source and destination.

The above is saying the destination had an extra directory “Marketing” so it was removed. It then was missing two directories “new folder
” and “test” so it added these.
Wrapping Up
When you need to copy large amounts of data, then Robocopy is one of the best tools to use. It comes with a lot of options, as you have seen, to help you with copying data in the most efficient way. When working with large data sets, make sure that you test your commands with the /L
switch before running them on production data.
I hope you found this article useful, if you have any questions, just drop a comment below.
1) Простой пример — копирование содержимого каталога C:\A в каталог C:\B (включая файлы, атрибуты и метки времени), рекурсивно включая пустые каталоги (/E):
robocopy C:\A C:\B /E
2) Копировать содержимое каталога C:\A рекурсивно (/E), включая все атрибуты файлов (/COPYALL, эквивалентно /COPY:DATSOU, D=данные, A=аттрибуты, T=метки времени, S=безопасность=списки контроля доступа NTFS, O=владелец, U=аудит), не повторять попытки для заблокированных файлов (/R:0) (по умолчанию задан один миллион повторных попыток копирования), сохранять оригинальные метки времени у каталогов (/DCOPY:T — начиная с версии XP026 или более поздней):
robocopy C:\A C:\B /COPYALL /E /R:0 /DCOPY:T
3) Создать зеркальную копию каталога C:\A в каталоге B на сетевом ресурсе \\backupserver, удалить из каталога B все отсутствующие в каталоге C:\A файлы (/MIR), использовать журнал возобновления (/Z) на случай потери сетевого соединения:
robocopy C:\A \\backupserver\B /MIR /Z
4) Скопировать файл file1.txt из папки c:\folder1 в папку c:\folder2:
robocopy.exe c:\folder1 c:\folder2 file1.txt
5) Скопировать файлы, измененные за последние 5 дней (исключая сегодня).
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /maxage:5 /minage:1
6) Переместить все файлы:
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /move /e
7) Скопировать файлы за исключением скрытых (/xa:h):
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /e /xa:h
или за исключением read-only (/ia:rs):
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /ia:rs
При копировании также можно менять атрибуты файлов, при помощи опции A+ (добавить атрибут) or A- (удалить атрибут). Скопировать все файлы и задать им атрибут read-only:
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /e /A+:r
8) Скопировать все файлы по шаблону (расширению), пустые папки не копировать:
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” *.doc *.ppt /s
9) Скопировать все файлы размером от 1000 до 60000 байт:
robocopy “E:\Documents” “\\NAS\BACKUP\Documents” /e /max:60000 /min:1000
10) Исключить из копирования папку AppData (/XD AppData):
Robocopy “C:\Users\Administrator” “\\NAS\BACKUP\Administrator” /MIR /XA:SH /XD AppData /XJD
11) Создать 32 потока (/MT:32) копирования файлов:
Robocopy “C:\Users\Administrator” \\NAS\BACKUP\Administrator /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32
robocopy <source /> /secfix /xo /xn /xc
13) Пример использования в скрипте:
echo Start backup time: %DATE% %TIME% >> g:\BC\backup_time.txt robocopy.exe S:\ g:\BC\MK\ /MIR /R:1 /W:1 /NP /TEE /LOG:g:\BC\00_sync.log echo End backup time: %DATE% %TIME% >> g:\BC\backup_time.txt NET USE \\server01\IPC$ /USER:login password NET USE \\fileserver\IPC$ /USER:login password c:\reskit\robocopy \\fileserver\c$\work \\server01\e$\backup /MIR /SECFIX /TIMFIX /NP /LOG+:D:\logs\robocopy\backup_work.log NET USE \\server01\IPC$ /DEL NET USE \\fileserver\IPC$ /DEL
Полный список команд доступен на странице Microsoft TechNet — Robocopy
Copy Contents Exclude Empty Subdirectories
robocopy c:\share c:\it\dst /s Here is a screenshot from my computer.

Here is a screenshot showing the comparison between the source and destination folders.

Why did robocopy only copy the “Windows Defender” folder? Because the other folders are empty, the /s command will exclude subdirectories that are empty.
Copy Files Over the Network with File Properties
If you want to copy the ACL and other file properties use /copyall. To copy just the ACL you can use /copy:DATS.
robocopy c:\source \\srv-vm2\share /z /e /copyall Purge Files and Folders From The Destination Directory
If you have deleted a bunch of files/folders from the source and want to remove them from the destination folder, use the /purge option.
robocopy c:\source c:\it\dst /e /purge The output will show you the folders it removed.

Copy Files By File Type
If you need to copy specific file types use the command below. In this example, I’m going to only copy files that are a txt file type.
robocopy C:\source \\srv-vm2\share *.txt Below you can see robocopy only copied the file1.txt file to the destination directory.

If I wanted to copy all images that are jpg type I would use *.jpg.
Specify Retries On Failed Copies
The /r command specifies the number of retries on failed copies. This is recommended on large file copies and when copying over the network. Network file copies can get interrupted, the /r will auto-retry the copy for any failures.
robocopy C:\source C:\it\dst /LOG+:c:\it\robolog.txt /MIR /copyall /z /w:1 /r:2 Copy Files with Specific Size
This will copy files that do not exclude 2000 bytes.
robocopy C:\source \\srv-vm2\share /S /MAX:2000 You can also use /min, to specify the minimum file size.
The Basics
Before we deep dive into Robocopy and look into all the options, let’s first start with the basics. The first and most important to know is that you run Robocopy in a test mode with /L
. This will list the result without actually copying or removing any files or folders.
Robocopy "D:\test files" "F:\lab" /L

If you look at the results, you will see which files or folders will be copied, removed, or skipped. When you are new to Robocopy, using the /L parameter
first is really a good idea to check if the results are as expected.
Copying all Files
When you use Robocopy without any switches, it will copy only the files from the given location to the destination. It won’t copy any subfolders from the given directory, only the files without NTFS permissions or owner information. Все, что вам нужно сделать, это указать исходную папку и папку назначения:
Robocopy "D:\test files" "F:\lab"

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

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

Если мы посмотрим на результаты, вы увидите строку Варианты
. Это показывает, какие переключатели Robocopy используются. Как видите /E
и /Purge
добавляются автоматически. Это означает, что /MIR
также отразит все подкаталоги и очистит (удалит) все файлы в целевом каталоге, которые больше не существуют в исходном.
Использование команды «Зеркало» по сети
Эта команда одинаково хорошо работает в сети, но для оптимизации скорости и производительности есть несколько дополнительных команд
который может быть очень полезен в сочетании с /mir
команда.
-
/zb
– Использовать перезапускаемый режим, а при отказе в доступе пытаться использовать резервный режим (теневой режим) -
/MT:nn
– Копировать файлы, используя несколько потоков, которые вы бы определили, заменивnn
заполнитель с количеством потоков.8
по умолчанию, и16
является разумным числом для проверки в первую очередь. Имейте в виду, что для продолжения работы большего количества потоков потребуется больше ЦП и памяти. -
/tbd
– Если вы выполняете передачу через общие сетевые ресурсы, вы можете столкнуться с ошибкой 67, которая означает «невозможно найти сетевое имя», и эта опция попытается повторить эту ошибку. -
/r:1 /w:3
– Объединение этих двух команд указывает Robocopy повторить попытку только один раз и подождать 3 секунды между ними. Это значение следует отрегулировать по мере необходимости, возможно, 5-10 повторных попыток и 5 секунд между ними, в противном случае повторные попытки будут повторяться почти бесконечно с интервалом в 30 секунд. -
/fft
– Наконец, коммутатор FFT использует синхронизацию файлов FAT вместо NTFS, что может привести к дрейфу примерно в 2 секунды и меньшей точности, но большей отказоустойчивости при передаче файлов. Это также важно при передаче между файловыми системами, такими как NTFS и EFS. -
/np
– Это удаляет индикатор индикатора выполнения, так как он может стать неточным из-за многопоточного характера передачи.
Иногда
/z
Команда может снизить производительность, вам может потребоваться провести тестирование с и без, чтобы максимизировать производительность и надежность.
robocopy D:\Articles\SourceDirectory \\server1.fqdn\DestinationShare /mir /zb /mt:16 /tbd /r:1 /w:3 /fft /np При необходимости отрегулируйте многопоточность, чтобы найти правильный баланс между производительностью системы, пропускной способностью и скоростью передачи.
Роботизированные переключатели
Как упоминалось в начале, команда Robocopy содержит множество переключателей, которые вы можете использовать. Я не собираюсь полностью объяснять каждый из них, но ниже вы найдете наиболее часто используемые переключатели, которые вы можете использовать для Robocopy. Вы можете получить всю информацию, набрав robocopy /?
Параметры копирования
Параметры выбора файла
Варианты повтора
Как видите, в Robocopy можно использовать множество переключателей. На мой взгляд, лучший способ изучить и понять утилиту robocopy — на примерах. Ниже вы найдете некоторые из наиболее часто используемых команд robocopy.
Одиночный файл Robocopy
Несмотря на то, что robocopy в первую очередь предназначен для надежного копирования больших объемов данных, с помощью robocopy можно скопировать один файл. Для этого вам нужно будет указать имя файла в качестве фильтра:
robocopy d:\testfiles c:\temp\dst "имя-файла-для-копирования.txt"

Копировать файлы по типу
В Robocopy мы можем фильтровать, какие файлы копировать, используя подстановочные знаки и имена файлов. Это позволяет нам также фильтровать файлы по типу файла. Например, чтобы скопировать только файлы журналов из заданного каталога, мы можем фильтровать по расширению .log
используя подстановочный знак *
:
robocopy d:\testfiles c:\temp\dst *.log

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

В результатах видно, что 6 файлов были пропущены, а 12 скопированы.
Копировать файлы с фильтром
Помимо типов файлов, мы также можем фильтровать имена файлов или атрибуты файлов с помощью Robocopy. Принцип фильтрации по именам файлов аналогичен фильтрации по типам файлов. Мы можем использовать подстановочные знаки (* и ?) для фильтрации части имен файлов.
Например, чтобы отфильтровать все файлы, имя которых начинается с log:
robocopy d:\testfiles c:\temp\dst log*

Также можно отфильтровать файлы, которые вы хотите скопировать, на основе атрибута. Мы можем использовать /IA
копировать только файлы с определенным атрибутом или /XA
для исключения файлов с определенным атрибутом.
Например, чтобы включить или исключить файлы с пометкой «Только для чтения»:
# Исключить все файлы, доступные только для чтения robocopy d:\testfiles c:\temp\dst /XA:R # Копируем только файлы, доступные только для чтения robocopy d:\testfiles c:\temp\dst /IA:R
Вы можете комбинировать все параметры фильтра, если хотите. В приведенном ниже примере копируются все файлы, содержащие имя sep
, как расширение .log
и не помечен как доступный только для чтения.
robocopy d:\testfiles c:\temp\dst *sep* *.log /XA:R
Копировать содержимое без пустых каталогов
Копирование пустых папок не всегда желательно. Чтобы исключить пустые папки, мы можем использовать переключатель /s
. Таким образом не будут копироваться пустые папки:
robocopy d:\testfiles c:\temp\dst /s
Папка исключения Robocopy
robocopy d:\testfiles c:\temp\dst /e /xd "папка a" "папка c"

Копия на основе возраста файла
Фильтрация файлов по возрасту также является распространенным методом, используемым в Robocopy. Мы можем использовать переключатели /MINAGE
и /MAXAGE
для фильтрации. /MAXAGE
например, полезно, когда вы хотите скопировать только файлы, которым несколько дней. Возраст можно указать только в днях.
# Копировать файлы, созданные на прошлой неделе robocopy d:\testfiles c:\temp\dst /MAXAGE 7
Или, если вы хотите переместить все файлы старше года, вы можете сделать:
# Переместить все файлы старше года # # ПРИМЕЧАНИЕ. Это УДАЛИТ файлы из источника! # robocopy d:\testfiles c:\temp\dst /MINAGE 365 /MOVE /E
Помимо возраста файла, вы также можете фильтровать файлы по дате последнего обращения к файлу. Для этого используйте переключатели /MINLAD
и /MAXLAD
.
Копировать на основе размера файла
Если вы хотите скопировать все файлы размером более 10 МБ или только файлы размером менее 1 МБ, вы можете использовать переключатель Robocopy /max.
и /min
. Размер файла указывается в байтах.
# Копировать только файлы больше 10Mb robocopy d:\testfiles c:\temp\dst /MIN:10000000

Включить безопасность (разрешения)
При копировании файлов на другой диск в формате NTFS мы также можем скопировать права доступа к файлу с помощью /sec
. Если вы используете /copyall
, то безопасность тоже будет скопирована, /sec
то же, что /copy:dats
( Д
ата, А
атрибуты, Т
временные марки, NTF S
Список контроля доступа)
# Скопировать файл, включая разрешения NTFS robocopy d:\testfiles c:\temp\dst /SEC
Если место назначения не является диском в формате NTFS, разрешения будут потеряны.
Копировать все файлы и информацию о папках
/copyall
переключатель в Robocopy указывает только, какие атрибуты копировать из файлов (все). По умолчанию копируются только данные и атрибуты папок. Так же можно скопировать временные метки папок, для этого нужно будет указать /dcopy:dat
.
Если мы объединим их, то сможем скопировать все файлы и информацию о папках:
# Скопировать всю информацию о файлах и папках robocopy d:\testfiles c:\temp\dst /copyall /dcopy:dat
Копировать в сетевой путь
Если вам нужно скопировать файлы и папки на другой сервер (сетевой путь), есть несколько советов по использованию Robocopy. Проблема с копированием файлов по сети заключается в том, что даже кратковременное прерывание сети может привести к тому, что обычные действия копирования начнутся заново.
При копировании файлов по сети рекомендуется использовать полные пути UNC вместо подключенных дисков.
# Скопировать все файлы и папки в общий сетевой ресурс и ограничить пропускную способность на 50% robocopy d:\testfiles \\la-srv-lab02\temp$\dst /copyall /e /ipg:25 /zb /r:3 /w:1
Еще один хороший способ передачи данных по сети — запланировать ее в нерабочее время. С помощью Robocopy мы можем указать время между запуском задания. Для этого мы будем использовать /RH
выключатель.
robocopy d:\testfiles \\la-srv-lab02\temp$\dst /copyall /e /rh:1900-0600 /zb /r:3 /w:1

На скриншоте выше видно, что задание приостановлено до 19:00.
Увеличение скорости копирования с помощью многопоточности
Многопоточность позволяет одновременно копировать больше файлов. По умолчанию установлено значение 8, но вы можете увеличить его до 128. Так что давайте установим его как можно выше, не так ли? Ну, это еще не все. Насколько высоко вы можете установить многопоточность в Robocopy, зависит от исходных и целевых ресурсов. Чем больше у вас дисков (и IOPS), тем больше файлов может одновременно обрабатывать сервер. Но также необходимо учитывать ЦП, память и пропускную способность.
В целом можно сказать, если у вас много мелких файлов, то стоит увеличить многопоточность. Если у вас есть основные большие файлы, может быть лучше уменьшить количество потоков.
Я провел быстрый тест с 2500 файлами, скопировав их с одного SSD диска на другой на том же устройстве:
- 8 потоков > 0,72 секунды
- 16 потоков > 0,31 секунды
- 128 тем > 0,48 секунды
Цифры выше должны дать вам представление. Если вам нужно скопировать большой объем данных, рекомендуется провести несколько тестов, чтобы выяснить, какое количество является оптимальным для вашей среды.
Зеркальный каталог со всеми свойствами файлов
В предыдущем примере не отражены свойства файла исходного каталога (ACL, владелец, метка времени и т. д.). Чтобы отразить и включить свойства файла, используйте эту команду.
robocopy c:\source c:\it\dst /e /mir /copyall 
После выполнения команды /mir /copyall «метка» будет удалена из папки it\dst\accounting.

Исключить каталог
Чтобы исключить каталог, используйте параметр /XD.
robocopy C:\source \\srv-vm2\share /XD /e "c:\source\accounting" В этом примере я скопирую все, кроме «бухгалтерской папки». Вы можете видеть ниже, что место назначения не включает папку «бухгалтерский учет».

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

Я проведу еще один тест и включу параметр /e.
robocopy c:\share c:\it\dst /e /l На этот раз тест показал, что копируется множество файлов и каталогов.

Команда /l — отличная команда, помогающая понять, что она могла бы сделать, не внося никаких реальных изменений.
Ключи
/S :: Копировать вложенные папки, кроме пустых.
/E :: Копировать вложенные папки, включая пустые.
/LEV:n :: Копировать только верхние n уровни исходного дерева папок.
/Z :: Копирование файлов с заменой.
/B :: Копирование файлов в режиме архивирования.
/ZB ::используется режим со снятием; если доступ запрещен, используется режим архивации.
/EFSRAW :: Копирование всех зашифрованных файлов в протоколе EFS RAW.
/COPY: флаги предлагает :: что копируется для файлов (по умолчанию /COPY:DAT).
(флаги предлагаются: D=Данные, A=Атрибуты, T=Метки времени).
(S=Безопасность=NTFS ACL, O=Сведения о владельце, U=Сведения аудита).
/DCOPY:T :: Копирование меток времени папки.
/SEC :: Копировать файлы с параметрами безопасности (эквивалентно /COPY:DATS).
/COPYALL :: Копировать все сведения о файле (эквивалентно /COPY:DATSOU).
/NOCOPY :: Не копировать никаких обнаруженных файлов (удобно использовать с параметром /PURGE).
/SECFIX :: Исправлять параметры безопасности для всех файлов, даже непропущенных.
/TIMFIX :: Изменяем атрибуты времени для всех файлов, даже пропущенных.
/PURGE :: Удалять файлы и папки, в которых больше не существует в источнике.
/МИР :: Создать зеркало дерева папок (эквивалентно /E с /PURGE).
/MOV :: Перемещать файлы (удаление из источника после сайта).
/MOVE :: Переместить файлы и папки (удаление из источника после размещения).
/A+:[RASHCNET] :: Добавить заданные атрибуты скопированным файлом.
/A+:[RASHCNET] :: Удалять заданные атрибуты из скопированных файлов.
/CREATE :: Создать только дерево папок и файлы нулевой коллекции.
/FAT :: Создавать файлы только в формате 8.3 FAT.
/256 :: Отключить поддержку длинных путей ( > 256 знаков).
/MON:n :: Наблюдать за звуком; перезапустить после N изменений.
/MOT:m :: Наблюдать за звуком; перезапустить через минуту, если произошли изменения.
/RH:hhmm-hhmm :: Часы запуска — время, когда можно запускать новое начинается.
/PF :: Проверять часы запуска по файлам (не по проходам).
/IPG:n :: Интервал между пакетами (мс) для снижения нагрузки на сеть при низкоскоростных подключениях.
/SL: обнаруживаются автоматические символические ссылки вместо ссылки на целевой объект этой ссылки.Параметры выбора файлов:
Параметры повторных попыток:
/R:n :: число повторных попыток для неудавшихся копий: по умолчанию — 1 миллион.
/W:n :: Время ожидания между повторными попытками: по умолчанию — 30 секунд.
/REG :: Сохранить /R:n и /W:n в реестре как параметры по умолчанию.
/TBD :: Ждать, пока будут определены имена общих ресурсов (ошибка повторной попытки 67).Параметры ведения журнала:
/L :: Только список — файлы не копируются, не удаляются, не помечаются метками времени.
/X :: Сообщать обо всех дополнительных файлах, а не только о выбраных.
/V :: Подробный вывод с указанием пропущенных файлов.
/TS :: Включать в вывод метки времени исходных файлов.
/FP :: Включать в вывод полные пути файлов.
/BYTES :: Печатать размеры в байтах.
/NS :: Без размера — не заносить в журнал размер файлов.
/NC :: Без класса — не заносить в журнал классы файлов.
/NFL :: Без списка файлов — не заносить в журнал имена файлов.
/NDL :: Без списка папок — не заносить в журнал имена папок.
/NP :: Без хода процесса — не отображать число скопированных %.
/ETA :: Показывать оценку времени окончания копирования файлов.
/LOG: файл :: Записывать состояние в файл журнала (перезаписывать существующий журнал).
/LOG+: файл :: Записывать состояние в файл журнала (добавлять к существующему журналу).
/UNILOG: файл :: Записывать состояние в файл журнала в формате Юникод (перезаписывать существующий журнал).
/UNILOG+: файл :: Записывать состояние в файл журнала в формате Юникод (добавлять к существующему журналу).
/TEE :: Направлять выходные данные в окно консоли и в файл журнала.
/NJH :: Без заголовка задания.
/NJS :: Без сведений о задании.
/UNICODE :: Cостояние вывода в формате Юникод./JOB: имя_задания :: Взять параметры из указанного файла задания.
/SAVE: имя_задания :: Сохранить параметры в указанный файл задания
/QUIT :: Выйти после обработки командной строки (для просмотра параметров).
/NOSD :: Не указывается исходная папка.
/NODD :: Не указывается папка назначения.
/IF :: Включить следующие файлы.
Robocopy является утилитой командной строки, поэтому для удобства пользования Microsoft Technet предоставляет графическую оболочку для неё (GUI front-end), автор которой Дерк Бениш. Оболочка требует наличия . NET Framework 2.0.
File and Folder Security with the Mirror Command
As mentioned above, there is a unique behavior related to security permissions and destination directories. When using the mirror switch, you might find that the file permissions themselves are not changed, only destination folder permissions. This is by design as for performance, and for practical reasons, individual file permissions were not intended to be copied using the mirror command.
What does this look like in practice? Let’s take the example source directory folder structure like so:
- Folder1
- File1 – Unique permissions
- File2
- Folder2
– Unique permissions- File1
- File2 – Unique permissions
- Folder1
- File1
- File2
- Folder2
– Unique permissions- File1
- File1
- File2
Of course, there are plenty of scenarios where you would like the permissions to be copied and kept in sync; those scenarios will be explored in further detail later on in the article.
Copy Contents With Security (ACL Permissions)
If you have modified the permissions on files and folders and want to keep those permissions, you need to use the
/copy:DATS 
option. This does not copy owner information, see example 4 to include the owner.

Here is a screenshot comparing the permissions on one of the folders. On the source, I modified the permissions on the accounting folder. You can see these permissions copied over to the destination folder.
robocopy c:\share c:\it\dst /e /l
To include the owner of a file or folder use the /copy:DATSO command.
robocopy c:\share c:\it\dst /e /copy:DATSO Вот снимок экрана, показывающий, что информация о владельце была скопирована в папку назначения. Без этой команды папка унаследовала бы информацию о владельце.

Сохранить вывод в файл журнала
Чтобы записать вывод robocopy в файл журнала, используйте /log:logfile. Это будет перезаписывать файл журнала каждый раз, когда вы запускаете команду.
robocopy c:\source \\srv-vm2\share /z /e /log:c:\it\logs.txt Вот скриншот лог-файла. При выполнении больших заданий или миграции вам обязательно нужно включить файл журнала.

Журнал робокопии
По умолчанию Robocopy выводит лог прямо в консоль. Отлично подходит для небольших копий, но при передаче большого количества файлов может потребоваться сохранить результаты в журнал. Еще одним преимуществом использования файла журнала является то, что Robocopy будет работать быстрее.
Можно даже определить, что регистрировать, а что нет, например, не регистрировать каталоги. Вы можете найти все варианты здесь
в документации.
Использование лог-файлов действительно рекомендуется, когда вы запускаете Robocopy без присмотра. Это дает вам возможность впоследствии проверить наличие ошибок, даже если консоль закрыта. Также рекомендуется использовать файлы журнала при передаче большого количества данных. Таким образом, вы можете легко проверить наличие проблем с копированием.
Убедитесь, что вы также указали имя файла, а не только расположение файла журнала.
robocopy d:\testfiles \\la-srv-lab02\temp$\dst /copyall /e /log:c:\temp\dst.log /zb /r:3 /w:1
Использование Robocopy /mir на практике
Существует множество различных способов использования команды Robocopy /mir, и определенные способы поведения со временем изменились. Эти изменения в первую очередь связаны с копированием разрешений безопасности файлов, которые стали проще в версии Robocopy для Vista.
Отражение простого каталога в место назначения
Один из самых простых способов воспользоваться командой зеркала — просто отразить два каталога на одном сервере. Мы будем использовать два параметра: команду Robocopy /mir и /v
команда для подробного ведения журнала и вывода. Подробная команда полезна, чтобы увидеть, что делает Robocopy, и убедиться, что файлы, которые мы хотим скопировать, делают то же самое.
robocopy D:\Articles\SourceDirectory\ D:\Articles\DestinationDirectory /mir /v 
В зависимости от ваших потребностей это может сработать. Атрибуты файлов копируются вместе с файлами, но параметры безопасности файлов не копируются. Следующий пример, который вы, возможно, захотите увидеть, — как правильно копировать файлы с неповрежденной защитой?
Зеркалирование каталога с разрешениями
Чтобы выполнить аналогичную операцию с зеркалом, но правильно скопировать права доступа к файлам и папкам, нам нужно использовать /sec
и /secfix
команды. /sec
команда скопирует защиту файла для измененных файлов, в то время как /secfix
Команда обновит безопасность для неизмененных файлов. Комбинируя эти команды с /mir
вы эффективно отразите все файлы, папки и разрешения из исходного каталога в место назначения.

Здесь мы также собираемся модифицировать test3.txt
в папке назначения с разными разрешениями, чтобы продемонстрировать, как разрешения будут правильно копироваться с использованием /sec
и /secfix
переключатели.

robocopy D:\Articles\SourceDirectory\ D:\Articles\DestinationDirectory /mir /sec /secfix /v 
Глядя на test2.txt
файл, у которого были изменены исходные разрешения, мы увидим, что он скопирован в папку назначения с правильными разрешениями.

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

Что такого особенного в Robocopy /mir?
Предположим, что у вас есть папка для временных резервных копий, и вам нужно убедиться, что все файлы в исходном каталоге попали в резервную папку. Поскольку файлы резервных копий могут быть довольно большими, возможно, мы хотим убедиться, что папка назначения не растет слишком быстро из-за устаревших файлов резервных копий. Часто ручные резервные копии или временные копии помещаются в папки для резервных копий, и место на диске слишком легко может закончиться.
Чтобы убедиться, что у нас не закончилось место для хранения, идеальной операцией переноса является копирование и очистка. Эта операция гарантирует, что все файлы в исходном каталоге попадут в целевой каталог, и удалит все целевые файлы, которых нет в исходном каталоге. Именно для таких сценариев и предназначен переключатель Robocopy /mir!
Функционально Robocopy /mir эквивалентен /e /purge
варианты в Robocopy с небольшой разницей в поведении. С /e /purge
параметры, параметры безопасности целевых каталогов не перезаписываются. При использовании /mir
параметр, параметры безопасности для целевого каталога перезаписываются.
/mir
наряду с несколькими другими командами разрушают данные при неправильном использовании. Это потенциально может удалить файлы в целевом каталоге, поэтому используйте его с осторожностью!
Копирование файлов по сети
Копирование файлов по сети аналогично локальному копированию. Есть несколько дополнительных команд, которые могут помочь с передачей файлов по сети, я расскажу о них далее. При копировании на удаленное устройство лучше использовать путь UNC вместо сопоставленного диска.
robocopy c:\source \\srv-vm2\share /z /e Приведенная выше команда копирует файлы с моего локального компьютера на другой сервер. Параметр /z копирует файлы в перезапускаемом режиме. Если копирование прерывается, robocopy может продолжить с того места, где оно было прервано.
Включить подробное ведение журнала
Подробное ведение журнала покажет пропущенные файлы. Если вы копируете важные файлы или выполняете миграцию на новый сервер, я бы включил подробное ведение журнала в выходные данные или, что еще лучше, включил бы его в файл журнала.
robocopy c:\source \\srv-vm2\share /v Включите подробное ведение журнала с файлом журнала.
robocopy c:\source \\srv-vm2\share /v /log:c:\it\logs.txt Копировать содержимое, включая пустые подкаталоги
robocopy c:\share c:\it\dst /e Вот скриншот команды с моего компьютера.

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

Часто задаваемые вопросы
Чтобы ускорить процесс копирования, лучше всего перенаправить вывод в лог-файлы. Вывод его на консоль замедлит процесс копирования. Также, если у вас есть стабильное и надежное сетевое соединение, вы можете не использовать /z
(режим перезапуска). Увеличьте количество нитей до 16 с помощью /mt:16
, установка слишком высокого значения может привести к задержке.
Копировать всю информацию о файле
Чтобы скопировать все свойства файла, используйте /copyall, это эквивалентно /copy:DATSOU. Я предпочитаю использовать /copyall вместо перечисления каждого типа свойства.
robocopy c:\share c:\it\dst /e /copyall - Д – Данные
- А – Атрибуты
- T – Временные метки
- S – список управления доступом (ACL) NTFS
- O – Информация о владельце
- U – Аудиторская информация
Многопоточное копирование файлов (увеличение скорости копирования)
По умолчанию robocopy использует 8 потоков. Чтобы увеличить количество потоков, используйте команду /mt. В приведенном ниже примере будет использоваться 32 потока.
robocopy c:\source \\srv-vm2\share /z /e /mt:32 Вам необходимо протестировать этот параметр и посмотреть, какое количество потоков лучше всего работает в вашей сети и на вашем компьютере.
Копировать файлы старше 14 дней
При этом будут скопированы файлы с временной отметкой не менее 14 дней.
ROBOCOPY C:\source \\srv-vm2\share /minage:14 Добавление к существующему файлу журнала
Используйте команду /log+:logfile для добавления существующего файла журнала. Это будет добавляться в файл журнала каждый раз, когда вы запускаете robocopy.
robocopy c:\source \\srv-vm2\share /z /e /log+:c:\it\logs.txt



![[Исправлено] Ошибка проверки DST, оптимизированного для жесткого диска [Исправлено] Ошибка проверки DST, оптимизированного для жесткого диска](https://msconfig.ru/wp-content/uploads/2023/08/8e_aYxvHhO9PKH1Bn3CVEm4C2BU-120x120.jpg)