Копирование в windows в несколько потоков

использования утилиты Robocopy, приведу примеры использования, поговорю о параметрах утилиты и покажу, как у Robocopy использовать графический интерфейс (GUI)

Обновлено 21.08.2020

robocopy logo

Доброе времени суток. Уважаемые читатели и гости, крупного IT блога Pyatilistnik.org, занимающего в рейтинге Яндекс.Радар 2500 место, среди всех сайтов России. В прошлый раз, мы с вами решили проблему со сбоем запроса устройства. Сегодня я не хочу рассматривать новые ошибки, а поделюсь своим опытом использования утилиты Robocopy, приведу примеры использования, поговорю о параметрах утилиты и покажу, как у Robocopy использовать графический интерфейс (GUI). Данной программкой просто обязан пользоваться каждый системный администратор, ну или хотя бы знать. о ее существовании, лично у меня она находится на почетном месте в моем наборе системного инженера.

Что такое robocopy (Robust File Copy Utility)

Утилита Robocopy  (Robust File Copy Utility) — это специализированное средство, в задачи которого входит тонкая настройка процесса копирования, синхронизации, удаления и переноса файлов и папок, между дисками компьютера, компьютерами, сетевыми шарами и лесами, с сохранением атрибутов, прав разрешений и многое другое.

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

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

Если обратиться к Википедии (https://ru.wikipedia.org/wiki/Robocopy), то там вы обнаружите, что она создавалась как средство репликации и шла в составе такого известного комплекса инструментов, как Windows Resource Kit.

Версии утилиты Robocopy

Первая версия robocopy появилась в 1997 году в составе инструментов Windows Resource Kit. На текущий момент самой свежей версией является 10.0.17763.1 входящей в состав Windows 10 1809, табличку в Википедии я подправил (https://en.wikipedia.org/wiki/Robocopy)

Версии robocopy

Где лежит Robocopy в системе?

Основной исполняемый файл Robocopy.exe располагается по пути C:WindowsSystem32. Утилита очень компактная и весит всего 132 килобайта, но это не уменьшает ее мощи и функционала.

местоположение файла robocopy

Где скачать утилиту Windows Robocopy

Начиная с Windows 7, данная программулька является ее составной частью, и я уже выше показал, что она лежит в папке C:WindowsSystem32, если по каким-то причинам у вас в ней нет файла robocopy.exe, то у вас есть несколько вариантов его скачать.

  • Первый вариант, это скопировать его из другой системы
  • Второй вариант, это загрузить средство Windows Server 2003 Resource Kit Tools по ссылке (https://www.microsoft.com/en-us/download/details.aspx?id=17657). В состав этого пакета входит утилита Robust File Copy Utility.

скачать robocopy

Далее полученный файла robocopy, вам необходимо разархивировать данный файл, для этого у вас должен быть архиватор winrar или 7-zip. Через правый клик извлекаем его содержимое.

Скачать robocopy.exe-01

Далее 7-Zip-ом распаковываем msi пакет rktools.msi.

Скачивание robocopy

Перейдите в папку rktools, там вас будет ждать файл robocopy.exe, который вы можете скачать куда угодно.

файл robocopy.exe

Возможности утилиты Robocopy (Robust File Copy Utility)

И так давайте разбираться, какими функциональными возможностями обладает данная утилита. Как я и писал выше Robocopy умеет:

  • Производить копирование файлов и папок
  • Производить синхронизацию файлов и папок
  • Копировать по расширениям файлов
  • Переносить права на папки и файлы
  • Копирование и перенос файлов по датам и за нужный период
  • Удалять файлы и папки

Чтобы посмотреть все ключи и их назначение, нам нужно открыть командную строку, желательно от имени администратора и ввести команду:

справка утилиты robocopy

У вас появится небольшая справка, в которой вам отобразят конструкцию построения команд и несколько примеров реализации. Чтобы вывести все доступные параметры Robocopy вам необходимо ввести команду:

Тут ключи и параметры будут разбиты на несколько подкатегорий:

  1. Параметры копирования
  2. /COPY:флаги копирования
  3. /DCOPY:флаги копирования
  4. Параметры выбора файлов
  5. Параметры повторных попыток
  6. Параметры ведения журнала
  7. Параметры задания
  8. Комментарии

Параметры утилиты robocopy

Ключи параметров копирования:

  • /S — данный параметр позволит вам произвести копирование вложенных папок, за исключением пустых. Очень удобно, чтобы не перетаскивать не используемые каталоги
  • /E — данный ключ, альтернатива параметру /S, так как он позволит скопировать вложенные папки, в том числе и пустые.
  • /LEV:n — данный параметр копирования Robocopy позволит вам скопировать n-число уровней у текущего каталога папок. Предположим у вас есть папка, которая включает в себя еще 10 подпапок, задав n равное 5, вы скопируете структуру, только первых пяти верхних каталогов, а все, что ниже не будет затронуто.
  • /Z — параметр позволяет возобновлять копирование в случае какого-то сбоя
  • /B — Копирование файлов в режиме архивирования.
  • /ZB — совмещение параметров Robocopy.exe, в данном случае вначале будет использоваться режим с возобновлением, но если доступа к каким либо файлам не будет, то утилита переключиться в режим архивации.
  • /J — данный параметр Robocopy.exe используется при копировании крупного размера файлов, где применяется небуферезированный ввод-вывод
  • /EFSRAW — будет произведено копирование всех зашифрованных файлов в режиме EFS RAW

Ключи /COPY:флаги копирования

Ключ /COPY это один из базовых ключей, который вы будите применять в своих сценариях синхронизации или копирования, он переносит (Флаги копирования: D=Данные, A=Атрибуты, T=Метки времени). (S=Безопасность=NTFS ACLs, O=Сведения о владельце, U=Сведения аудита)

  • /SEC — данный флаг позволит вам скопировать файлы и каталоги вместе с их параметрами безопасности (эквивалентно /COPY:DATS)
  • /COPYALL — данный ключ скажет утилите Robocopy.exe, что нужно при копировании перенести все сведения о файле (Аналог /COPY:DATSOU)
  • /NOCOPY — данный ключ скажет, что не нужно копировать никаких сведений о файле (полезно с параметром /PURGE).
  • /SECFIX — данный ключ будет полезен при синхронизации, когда нужно перезаписать и исправить параметры безопасности на всех папках и файлах. Простой пример, вы сделали первое копирование одного каталога с файлами в другой, и перенесли параметры безопасности (NTFS), в какой-то момент в исходном каталоге у вас поменялись разрешения на некоторые файлы, и если вы произведете синхронизацию, без этого ключа, то эти новые права доступа не перенесутся в новое место, поставив ключ /SECFIX, вы этого избежите и все будет обновлено.
  • /TIMFIX — этот флаг позволит исправить атрибуты времени у всех файлов, в том числе и пропущенных
  • /PURGE — позволит удалить каталоги и файлы в папке назначения, которые уже не существуют в источнике.
  • /MIR — в данном случае будет создана полная копия (зеркальная) источника в назначении, аналогично выполнению Robocopy.exe с ключами /E /PURGE
  • /MOV — данный ключ позволит перемещать файлы (удаление из источника после копирования, я бы назвал это аналогов вырезать в Windows)
  • /MOVE — похоже на ключ /MOV, но уже вырезаться будут файлы с папками.
  • /A+:[RASHCNET] — данный флаг позволяет вам добавлять атрибуты к скопированным файлам
  • /A-:[RASHCNET] — данный флаг сообщает утилите Robocopy, что нужно удалить заданные атрибуты у скопированных файлов
  • /CREATE — данный флаг создает дерево каталогов и файлы нулевой длины
  • /FAT — Создать файлы назначения только в формате 8.3 FAT
  • /256 — отключает поддерживание длинных путей свыше 256 знаков, на практике не встречал таких сценариев.
  • /MON:n — robocopy в данным флагом в параметрах, будет производить мониторинг источника, и перезапустит выполнение после n изменений
  • /MOT:m — Наблюдать за источником; перезапустить через m минут, если произошли изменения.
  • /RH:hhmm-hhmm — тут вы говорите для Robocopy.exe в какое время нужно производить запуск, в какой момент будет запущено задание копирования файлов.
  • /PF — Проверять часы запуска по файлам (не по проходам)
  • /IPG:n — данный ключ поможет снизить нагрузку на сеть, когда у вас не очень хороший канал, n интервал задержки в миллисекундах.
  • /SL — копирует сами символические ссылки, за место копирования целевых объектов, на которые эти селинки ссылаются.
  • /MT[:n] — использование многопотокового режима, позволяет существенно увеличить скорость копирования, за счет использования процессорных моoностей системы. n может иметь значение от 1 до 128 потоков. Нельзя использовать с параметрами /IPG и /EFSRAW. Для повышения производительности перенаправьте вывод с помощью параметра /LOG.

Ключи /DCOPY:флаги копирования

Данный раздел флагов отвечает за то, что копировать для каталогов (D=Данные, A=Атрибуты, T=Метки времени)

  • /NODCOPY — не производить копирование любых сведений о каталоге
  • /NOOFFLOAD — Robocopy будет копировать файлы без использования механизма разгрузки копий Windows

Параметры выбора файлов

Утилита Robocopy очень тонко позволяет производить тонкую фильтрацию файлов при копировании, для этого есть огромное количество ключей и флагов.

  • /A — флаг задает копирование файлов с атрибутом «Архивный»
  • /M — задает копирование файлов с атрибутом «Архивный» и потом его сбросить на конечной стороне
  • /IA:[RASHCNETO] — переносить файлы на которых установлены заданные атрибуты (объявленные заранее)
  • /XA:[RASHCNETO] — при копирование будут исключены файлы с объявленными атрибутами
  • /XF file [файл] — позволяет исключать файлы, у которых заданные имена, пути и подстановочные знаки
  • /XD dirs [папки] — исключает каталоги, с заданными именами и путями
  • /XC — robocopy не копирует измененные файлы
  • /XN — исключить более поздние файлы
  • /XO — Исключить более ранние файлы
  • /XX — Исключить дополнительные файлы и папки
  • /XL — Исключить отдельно расположенные файлы и папки
  • /IS — Включить те же файлы
  • /IT — Включить оптимизированные файлы
  • /MAX:n — Robust File Copy Utility исключит файлы, у которых размер более n-байт, можно это назвать максимальным размеров копируемых файлов
  • /MIN:n — данный параметр Robocopy установит минимальный размер копируемого файла, позволит исключить файлы у которых n-байт меньше заданного
  • /MAXAGE:n — тут мы задаем максимальный возраст файлов. Мы исключим при копировании файлы, у которых возраст больше n дней
  • /MINAGE:n — тут мы задаем минимальный возраст файлов. Мы исключим при копировании файлы, у которых возраст меньше n дней
  • /MAXLAD:n — Наиболее поздняя дата последнего обращения. Будут скопированы данные, которые не использовались с даты n
  • /MINLAD:n — Наиболее ранняя дата последнего обращения. Robocopy исключит файлы, которые были использованы после даты указанной в n. (Если n < 1900, то n = n дней, в противном случае n — дата в формате ДД.ММ.ГГГГ)
  • /XJ — отключение точек соединения, которые по умолчанию включаются
  • /FFT — Использовать время файлов FAT (двухсекундная точность)
  • /DST — Тут задается. будет ли Robocopy учитывать одно часовую разницу при переходе на летнее время
  • /XJD — Исключить точки соединения для папок
  • /XJF — Исключить точки соединения для файлов

Ключи параметров повторных попыток

  • /R:n — Число повторных попыток для неудавшихся копий, по умолчанию — 1 миллион.
  • /W:n — Тут вы зададите период ожидания между повторными попытками: по умолчанию это 30 секунд.
  • /REG — Сохранить /R:n и /W:n в реестре как параметры по умолчанию.
  • /TBD — Ждать, пока будут определены имена общих ресурсов (ошибка повторной попытки 67).

Ключи параметров ведения журнала

  • /L — получить только список, в данном случае Robust File Copy Utility файлы не копирует, не удаляет, не помечается метками времени.
  • /X — Сообщать обо всех дополнительных файлах, а не только о выбранных.
  • /V — Подробный вывод с указанием пропущенных файлов.
  • /TS — Включать в вывод меток времени исходных файлов.
  • /FP — Включать в вывод полные пути файлов.
  • /BYTES — Печатать размеры файлов в байтах.
  • /NS — Режим без размера, у вас не будет заноситься информация, о размерах файлов в журнал.
  • /NC — Режим без класса, не заносить в журнал классы файлов.
  • /NFL — Режим без списка файлов, не заносить в журнал имена файлов.
  • /NDL — Режим без списка папок, не заносить в журнал имена папок.
  • /NP — Режим без хода процесса, не отображать число скопированных процентов.
  • /ETA — Показывать оценку времени окончания копирования файлов.
  • /LOG:файл — Производить запись состояния в файл журнала (перезаписывать существующий журнал).
  • /LOG+:файл — Производить запись состояния в файл журнала (добавлять к существующему журналу).
  • /UNILOG:файл — Производить запись состояния в файл журнала в формате Юникод (перезаписывать существующий журнал).
  • /UNILOG+:файл — Производить запись состояния в файл журнала в формате Юникод (добавлять к существующему журналу).
  • /TEE — Направлять выходные данные в окно консоли и в файл журнала.
  • /NJH — Без заголовка задания.
  • /NJS — Без сведений о задании.
  • /UNICODE — Состояние вывода в формате Юникод.

Ключи параметров задания

  • /JOB:имя_задания — Взять параметры из указанного файла задания.
  • /SAVE:имя_задания — Сохранить параметры в указанный файл задания
  • /QUIT — Выйти после обработки командной строки (для просмотра параметров).
  • /NOSD — Не указывается исходная папка.
  • /NODD — Не указывается папка назначения.
  • /IF — Включить следующие файлы.

Как видите у утилиты Robocopy много параметров и ключей, и я рад, что Microsoft не забросила свою полезную программку, которую я полюбил еще в Windows Server 2003 Resource Kit Tools.

Более подробно почитать, о параметрах Robocopy вы можете почитать на сайте Microsoft (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc733145(v=ws.10))

Варианты и примеры использования на практике

Теперь когда мы с вами разобрали параметры Robocopy, остается научиться их использовать и применять в ваших сценариях. Сценариев может быть огромное количество. например:

  • Нужно скопировать только измененные файлы
  • Нужно скопировать только новые файлы
  • Нужно скопировать только папки или файлы с определенным расширением, например, PDF
  • Нужно копировать файлы из локального расположения в сетевое

Самый простой пример использования Robocopy, это простое копирование одного каталога в другой в рамках одного диска. Предположим мне нужно продублировать содержимое папки C:Temp в C:Test_robocopy

В командной строке пишем вот такую команду

robocopy C:Temp C:Test_robocopy /E

примеры использования robocopy

Напоминаю параметр /E копирует файлы и папки, в том числе и пустые. Сам процесс выглядит поэтапным копированием в один поток файлов.

По окончании выполнения команды вы увидите сводную таблицу, в которой будет статистика по каталогам, файлам, времени, пропущенным файлам и скорости.

 robocopy примеры применения

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

Перенос прав на файл через robocopy

Чтобы скопировать и исправить на файлах в каталоге назначения все права доступа (перезаписав текущие и подставив туда из источника), вам необходимо выполнить вот такую команду:

robocopy C:Temp C:Test_robocopy /E /COPYALL /SECFIX

Ключ /COPYALL переносит все сведения о файле, а параметр этого ключа /SECFIX исправит все сведения на вкладке «Безопасность».

Если у вас не перенеслись новые права на файлы, то со 100% вероятностью у вас консоль cmd в которой вы запускаете сценарии Robocopy, работает не от имени администратора, старайтесь всегда делать из под данного режима

robocopy перенос прав на файл

Напомню, что есть ключ /MIR параметра robocopy, он делает зеркальную копию каталогов, вот его пример использования:

robocopy C:Temp C:Test_robocopy /MIR /Z

В момент такого зеркального копирования, утилита Robust File Copy Utility, сделает на конечной стороне полную копию источника, и со всеми списками доступа (ALC) на вкладке безопасности, так же будут перенесены все атрибуты данных. При повторном запуске, будут перенесены, только изменения.

Зеркальное копирование в robocopy

Чтобы осуществить перенос данных на сетевую шару, вы можете использовать вот такую конструкцию:

При простом копировании robocopy C:Temp \c-10-5210Test_robocopy /E

Тот же пример с синхронизацией прав robocopy C:Temp \c-10-5210Test_robocopy /E /COPYALL /SECFIX

Ну и пример использования при зеркалировании каталоговrobocopy C:Temp \c-10-5210Test_robocopy /MIR /Z

Теперь представим задачу, что вам необходимо скопировать файлы, которые были изменены за последние 5 дней, выполняем вот такую команду:

robocopy C:Temp \c-10-5210Test_robocopy /MAXAGE:5

Копирование файлов за 5 дней в robocopy

Если нужно исключить сегодняшний день, то нужно добавить ключик /MINAGE:1

robocopy C:Temp \c-10-5210Test_robocopy /MAXAGE:5 /MINAGE:1

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

robocopy C:Temp \c-10-5210Test_robocopy /MINAGE:1

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

Вырезать файлы в robocopy

Иногда может возникнуть задача, перенести все, кроме срытых файлов системы, для этого сценария Robust File Copy Utility имеет ключ /XA:H

robocopy C:Temp C:Test_robocopy /E /XA:H

Можно переносить файлы с пометкой «Только для чтения», через такую структуру

Копирование файлов только для чтения в robocopy

Копирование данных только с определенными форматами, например, exe и mp3, и не копировать пустые папки.

robocopy C:Temp C:Test_robocopy *.exe *.mp3 /S

robocopy копирование файла определенного формата

Также можно делать выборку по размеру файлов, например, мне нужно скопировать, все, что больше 100 килобайт и меньше 100 мегабайт.

robocopy C:Temp C:Test_robocopy /E /MAX:102400000 /MIN:102400

robocopy копирование файла определенного размера

При копировании данных можно исключить не нужные вам каталоги, вот пример команды, где исключается папка CrystalDiskMarkPortable:

robocopy C:Temp C:Test_robocopy /MIR /XA:SH /XD CrystalDiskMarkPortable /XJD

robocopy исключить определенный каталог

Что еще полезного умеет Robocopy, например, автоматическое копирование папок по расписанию да и еще не в один поток. Что такое поток копирования, по сути когда вы в проводнике Windows, запускаете простое копирование, то у вас в диспетчере задач, появляется задача «Проводник», которая последовательно запускает процесс и перенос данных. Когда же Robocopy делает таких потоков больше, то у вас сам процесс идет в разы быстрее, но затрачиваются больше процессорных мощностей, но в виду того, что современные процессору зачастую не дозагружаются даже на 20-30%, то глупо было бы это не использовать, особенно с серверными CPU.

Копирование файлов в один поток

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

robocopy C:Temp \c-10-5210Test_robocopy /sec /E /Z /XO /R:3 /W:5 /MT:32

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

Еще полезной командой будет, когда вам нужно обновить только ACL (Вкладку безопасность на всех файлах, без их повторного копирования)

robocopy <source /> /secfix /xo /xn /xc

Ошибки работы Robocopy

У данной утилиты, конечно же могут возникать и проблемы, но чаще всего они не значительные и решаются очень просто, например вы можете встретить ошибку «ОШИБКА 5 (0x00000005) Копирование параметров безопасности NTFS для конечного файла». Данная ошибка гласит, что у вас не хватает прав на перенос параметров и прав на файлы, все дело в том, что ваша cmd-консоль запущена в режиме администратора.

ОШИБКА 5 (0x00000005)

Таблица кодов ошибок, которые появляются в Robocopy

Вот вам подробная, сводная таблица в которой отражены все коды ошибок от 0-8 в данной утилите и дано подробное описание в чем проблема. (Подробнее на https://support.microsoft.com/ru-ru/help/954404/return-codes-that-are-used-by-the-robocopy-utility-in-windows-server-2)

Коды ошибок robocopy

Автоматическое копирование папок по расписанию с Robocopy

Чем хороша данная утилита, так это тем, что с ее помощью можно писать скрипты и сценарии, например в том же PowerShell. Все выше описанные команды, вы можете поместить в текстовый файл (txt), затем сменить ему расширение на bat или cmd, чтобы он стал исполняемым и далее использовать его, либо в групповой политике, или же создать с помощью него задачу в «Планировщике заданий Windows», хотя можно и прямо в нем вписывать все ключи и параметры Robocopy. Про создание задач в планировщике заданий Windows читайте по ссылке. Обратите внимание, что ключи я вписываю в поле аргументы.

Robocopy в планировщике заданий

Примеры скриптов при резервном копировании или синхронизации. Предположим у вас есть рабочая папка и вы бы хотели ее синхронизировать с другой или сетевой шарой, как я и писал выше вы делаете исполняемый файл или создаете задание в планировщике, вот пример команды, которая перенесет файлы, будет их синхронизировать, перенесет все атрибуты и права, а так же будет их обновлять. Папка C:Test, это источник, а вот каталог \c-10-5210shareTest, уже назначения.

robocopy C:Test \c-10-5210shareTest /sec /E /Z /XO /SECFIX /R:3 /W:5 /MT:32

если по каким-то причинам вам нужно монтировать перед эти диск, то будет выглядеть вот так:

net use z: /delete

net use z: \c-10-5210share

robocopy C:Test Z: /sec /E /Z /XO /SECFIX /R:3 /W:5 /MT:32

На самом деле примеров использования Robocopy очень много, если будет чем поделиться, пишите в комментариях.

Графический (GUI) интерфейс в Robocopy

С примерами утилиты Robocopy мы ознакомились, теперь предлагаю вам посмотреть для нее графическую оболочку, которая как ни странно есть, и я узнал, о ее существовании буквально недавно. Называется она RoboCopy GUI Utility ver. 3.1, к сожалению она использует robocopy.exe не самой последней версии, но все работает и в Windows 10 1809.

Скачать RoboCopy GUI Utility ver. 3.1 можно с официального сайта https://docs.microsoft.com/en-us/previous-versions/technet-magazine/cc160891(v=msdn.10) или у меня по ссылке с mail облака

Скачать RoboCopy GUI Utility ver. 3.1

После загрузки RoboCopy GUI Utility ver. 3.1, нам его необходимо установить. Запускаем исполняемый файл. Соглашаемся с лицензионным соглашением.

Установка windows robocopy gui-01

Утилита вам предложит указать каталог куда будут извлечены файлы.

Установка windows robocopy gui-02

Соглашаемся с извлечением.

Извлечение файлов RoboCopy GUI Utility ver. 3.1

В итоге вы получите вот такую структуру файлов. Запускаем setup.exe.

Файлы RoboCopy GUI Utility ver. 3.1

У вас появится тривиальный мастер установки GUI интерфейса для Robocopy. Нажимаем next.

Установка windows robocopy gui-05

Принимаем лицензионное соглашение «I gree»

Установка windows robocopy gui-06

Указываете будет ли утилита устанавливаться только для вас или для всех.

Установка windows robocopy gui-07

next.

Установка windows robocopy gui-08

Установка графического интерфейса для Robocopy завершено.

Установка windows robocopy gui-09

У вас на рабочем столе появится ярлык Microsoft Robocopy GUI. Запускаем его и посмотрим, что из себя представляет эта утилита.

Установка windows robocopy gui-10

Обзор RoboCopy GUI Utility ver. 3.1

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

  1. Первое, это нужно через «Source Path выбрать, что мы будем копировать»
  2. Второе действие, это в «Target Path мы задаем, куда мы будем переносить данные, при желании вы можете смонтировать сетевой диск, через пункт «Map Drive»»

Обзор RoboCopy GUI Utility ver. 3.1-01

На вкладке «Copy Options», вы увидите уже знакомые параметры использования Robocopy, тут есть и ключи /SEC для переноса прав и команда /MOVE, которую мы применяли для вырезания файлов и многое другое. Тут же вы задаете количество потоков копирования.

Robocopy и примеры использования с параметрами

Вкладка «Drive Mapping» поможет присоединить сетевой диск, тут вы указываете ip-адрес или DNS имя сервера, и учетные данные для подключения.

Robocopy и примеры использования с параметрами

Вкладка «Filters» позволит вам указать, что именно нужно переносить и сделать фильтрацию, например, не переносить файлы длина которых в имени составляет более 256 символов, или только txt файлы.

Robocopy и примеры использования с параметрами

Вкладка «Logging» задает параметры ведения логирования вашего задания.

Robocopy и примеры использования с параметрами

Вкладка «Monitoring Options» будет полезна для наблюдения за источником копирования, в случае проблем, все можно идентифицировать и перезапустить.

Robocopy и примеры использования с параметрами

Аналоги утилиты Robocopy

Robust File Copy Utility не единственная утилита, которая позволяет копировать файлы, каталоги с атрибутами и правами, ее аналогами можно назвать утилиты:

  • Total Commander
  • icacls
  • Xcopy
  • Far
  • Rsync

Вот такая вот полезная и богатая функционалом утилита Robust File Copy Utility или Robocopy.exe, надеюсь, что данный материал был для вас полезен и вы им поделитесь в социальных сетях. А с вами был Семин Иван, автор и создатель IT блога Pyatilistnik.org.

On Windows 10, when you have to copy files to another drive, you typically use the standard select, copy, and paste process. Although this works perfectly fine, speed becomes a bottleneck as transferring many files can take a very long time.

As an alternative, many savvy users use Robocopy (Robust File Copy), a command-line tool built into Windows 10, which offers more features to quickly move data to a different location (to another drive or computer over the network). One feature that makes Robocopy special (and often overlooked) is its multi-threaded feature that allows multiple files to be copied simultaneously. Instead of one file at a time using the copy feature from File Explorer.

This guide will teach you the steps to use the multi-threaded copies feature on Robocopy to speed up the transfer process of files and folders to another drive on Windows 10.

To use the Robocopy multi-threaded feature to copy files and folders to another drive on Windows 10, use these steps:

  1. Open Start on Windows 10.

  2. Search for Command Prompt, right-click the result, and select the Run as administrator option.

  3. Type the following command to copy the files and folders to another drive and press Enter:

    robocopy C:sourcefolderpath D:destinationfolderpath /S /E /Z /ZB /R:5 /W:5 /TBD /NP /V /MT:32

    In the command, change the source and destination paths and the options. For example, this command copies data from the drive “C” to “D” and uses the “32” threads for copying:

    robocopy C:UsersadminDocuments D:UsersadminDocuments /S /E /Z /ZB /R:5 /W:5 /TBD /NP /V /MT:32

    Robocopy with multi-threaded option

    Robocopy with multi-threaded option

Robocopy command description

Robocopy has many features, and in the command shown above, we use the following switches to make copy reliable and fast.

  • /S — Copy subdirectories, but not empty ones.
  • /E — Copy Subdirectories, including empty ones.
  • /Z — Copy files in restartable mode.
  • /ZB — Uses restartable mode. If access is denied, use backup mode.
  • /R:5 — Retry 5 times (you can specify a different number, the default is 1 million).
  • /W:5 — Wait 5 seconds before retrying (you can specify a different number, the default is 30 seconds).
  • /TBD — Wait for share names To Be Defined (retry error 67).
  • /NP — No Progress – don’t display percentage copied.
  • /V — Produce verbose output, showing skipped files.
  • /MT:32 — Do multi-threaded copies with n threads (default is 8).

The most important switch to focus on in the above command is /MT, which is the switch that enables Robocopy to copy files in multi-threaded mode. If you do not set a number next to the /MT switch, the default number will be 8, which means that Robocopy will try to copy eight files simultaneously. However, Robocopy supports 1 to 128 threads.

In this command, we are using 32, but you can set it to a higher number. The only caveat is that a higher number will cause higher resource usage and bandwidth. Using a high number will affect performance if you have an older processor. As a result, test before executing the command with more threads.

Once you complete the steps, you will notice that copying files and folders will take significantly less time. 

You are not limited to copying files and folders to an external or internal drive. You can also use this to migrate files over the network.

We may earn commission for purchases using our links to help keep offering the free content. Privacy policy info.

All content on this site is provided with no warranties, express or implied. Use any information at your own risk. Always backup of your device and files before making any changes. Privacy policy info.

  1. Простой способ удалить папку с длинным именем в Windows
  2. Как включить функцию безопасности Site Isolation в Chrome
  3. Аварийное обновление Windows 10 KB4056892 (сборка 16299.192)

Когда необходимо скопировать большое количество файлов на другой диск, Robocopy может ускорить процесс с помощью своей многопоточной функции. Давайте в этой статье TipsMake.com расскажем, как использовать многопоточную функцию Robocopy для ускорения копирования файлов в Windows 10!

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

Вместо этого многие технически подкованные пользователи используют Robocopy (Robust File Copy), инструмент командной строки, встроенный в Windows 10, предоставляет больше возможностей для более быстрого перемещения данных в другое место.

Изображение 1: Использование многопоточной функции Robocopy для ускорения копирования файлов в Windows 10

Функция, которая делает Robocopy особенной (и часто игнорируемой), — это многопоточная функция, которая позволяет копировать несколько файлов одновременно. Вместо копирования каждого файла используйте встроенную функцию копирования в проводнике.

В этом руководстве вы узнаете, как использовать многопоточную функцию в Robocopy, чтобы ускорить процесс передачи файлов и папок на другие диски в Windows 10.

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

1. Откройте Пуск.

2. Найдите в командной строке, щелкните результат правой кнопкой мыши и выберите Запуск от имени администратора.

3. Введите следующую команду, чтобы скопировать файлы и папки на другой диск, и нажмите Enter:

robocopy C: путь к исходной папке D: путь к папке назначения / S / E / Z / ZB / R: 5 / W: 5 / TBD / NP / V / MT: 32

Например:

robocopy C: UsersadminDocuments D: UsersadminDocuments / S / E / Z / ZB / R: 5 / W: 5 / TBD / NP / V / MT: 32

В приведенной выше команде не забудьте изменить пути источника и назначения в соответствии с вашей конфигурацией.

Проблема с командой Robocopy

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

  1. / S — копировать подкаталоги, исключая пустые каталоги.
  2. / E — копировать подкаталоги, включая пустые каталоги.
  3. / Z — копировать файлы в режиме перезапуска.
  4. / ZB — Использование режима перезапуска, если доступ запрещен, использовать режим резервного копирования.
  5. / R: 5 — повторить попытку 5 раз (можно указать другой, по умолчанию 1 миллион).
  6. / W: 5 — Подождите 5 секунд перед повторной попыткой (вы можете указать другое число, по умолчанию 30 секунд).
  7. / TBD — дождаться определения общих имен (ошибка повтора 67).
  8. / NP — Нет прогресса — не отображает скорость копирования.
  9. / V — Создать вывод, показать пропущенные файлы.
  10. / MT: 32 — Сделать многопоточную копию с n thread (по умолчанию 8).

Самый важный переключатель, позволяющий сосредоточиться на приведенной выше команде, — это / MT, это переключатель, который позволяет Robocopy копировать файлы в многопоточном режиме. Если вы не поставите число рядом с переключателем / MT, по умолчанию будет установлено 8, что означает, что Robocopy попытается скопировать 8 файлов одновременно. Однако Robocopy поддерживает от 1 до 128 потоков.

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

Когда вы выполните эти шаги, вы заметите, что скопированные файлы и папки займут меньше времени.

У вас есть возможность не только копировать файлы и папки на внешние или внутренние диски, но и перемещать файлы по сети.

Если вам нужна дополнительная помощь о том, как работает Robocopy, отправьте нам вопрос в разделе комментариев ниже!

Обратитесь к еще нескольким статьям:

  1. Как устранить неполадки OneDrive после сброса в Windows 10
  2. Как удалить или обновить ключ продукта в Windows 10
  3. Как проверить, включена ли функция «Наборы» в сборке Windows 10 Insider Preview

Веселиться!

Robocopy – это консольная утилита Windows для копирования файлов, которую можно использовать для синхронизации/репликации файлов и каталогов, и в сценариях резервного копирования. Robocopy (Robust File Copy) доступна начиная с Windows NT 4.0 Resource Kit, но по умолчанию эта функция появилась только в Windows Vista и Windows Server 2008. Robocopy заменяет Xcopy и copy, как более функциональная.

Содержание:

  • Основные возможности Robocopy
  • Синтаксис и параметры robocopy
  • Использование robocopy для зеркалирования каталогов
  • Инкрементальное копирование с помощью robocopy
  • Robocopy: перемещение файлов
  • Пример использование robocopy в планировщике задач
  • Отслеживание изменений в каталогах с помощью robocopy
  • Коды возврата (ошибки) robocopy

Основные возможности Robocopy

Кроме обычного копирования файлов и папок из папки источника в каталог назначения, в Robocopy есть множество очень полезных функций:

  • Устойчивость к обрывам сети (robocopy может продолжить копирования после восстановления сетевого доступа);
  • Корректное копирование файлов с их атрибутами и NTFS правами доступа;
  • Копирование с сохранением исходной временной метки;
  • Возможность копирования файлов и директорий, запрещенных для доступа даже администратору, с помощью ключа /B (ключ позволяет игнорировать проверку прав доступа, ключ доступен только для участников группы Администраторы или Операторы архива);
  • Возможность задать количество попыток копирования файла, если файл недоступен;
  • Режим полного зеркалирования директорий;
  • Пропуск уже существующих файлов (с одинаковым размером или временной меткой timestamp);
  • Индикатор прогресса копирования;
  • Корректная работа с длинными путями (более 260 символов);
  • Эффективные алгоритмы и многопоточность позволяют выполнять копирование файлов намного быстрее, чем обычное копирование средствами Windows;
  • Поддержка коды возврата (что позволяет использовать robocopy в различных внешних скриптах и утилитах).

Официальной графической версии robocopy (c GUI) от Microsoft нет. Существуют пользовательские версии, но их поддержка прекращена. Список неофициальных GUI для robocopy (это сторонние программы):

  • EazyCopy
  • RoboMirror
  • RichCopy

Синтаксис и параметры robocopy

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

Официальная документация: https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy

Синтаксис robocopy состоит из двух обязательных параметров (исходный и целевой каталог) и двух необязательных (фильтр файлов и параметры):

robocopy <source> <dest> [фильтр файлов] [параметры]

Поддерживаются как локальные пути, так и UNC, например, \serverdirectory

Полный синтаксис утилиты robocopy (все параметры и их описания) доступны по команде:

robocopy /?

использование утилиты robocopy в windows для копирование и синхронизации файлов и каталогов

Исполняемы файл robocopy.exe находится в каталоге C:WindowsSystem32.

Поскольку ключей в robocopy много, мы будем рассматривать их на практике, в готовых командах. Мы не будем рассматривать самые простые примеры использования robocopy, т.к. обычно они не вызывают вопросов. Ниже представлены готовые к применению более сложные команды robocopy, которые можно использовать в реальных сценариях.

Для тестирование различных команд robocopy без выполнения операций (копирования, перемещения или удаления) с файлами используется параметр
/L
. Данный параметр вернет список файлов и папок, которые будут скопированы вашей командой.

Использование robocopy для зеркалирования каталогов

Вы можете зеркалировать (синхронизировать) содержимое двух каталог с помощью следующей команды robocopy (под зеркалированием понимается копирование файлов из целевой папки с удалением файлов в целевом каталоге, если они удалены в источнике).

robocopy \testnode1C$source \testnode2c$dest *.txt /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%robocopy.log

  • \testnode1C$source
    — исходный каталог, откуда копируются файлы
  • \testnode2C$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 даже если вы копируете небольшие файлы по устойчивому каналу. Он не несёт дополнительных расходов при использовании, но в случае обрыва, вы сможете продолжить копирование просто повторно запустив скрипт.

При копировании больших файлов (более 2 Гб) с некоторых iSCSI/SAN томов, процесс robocopy может существенно использовать оперативную память сервера. Проблем обычно связано с тем, что для данного LUN в настройках RAID используется write-through кэширование вместо write-back.

Инкрементальное копирование с помощью robocopy

Сам по себе robocopy не может полностью обеспечить инкрементальное резервное копирование каталога (копирование новых и измененных файлов), для этого мы будем использовать небольшой bat скрипт:

@echo off
set date_=%date:/=-%
set source=C:source
set dest=\testnode2C$dest%date_%
mkdir %dest%
robocopy "%source%" "%dest%" /maxage:1 /E /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+: /LOG+:%appdata%robocopy.log
@echo on
  • set date_=%date:/=-%
    — эта строчка присваивает значение переменной date_ в формате DD.MM.YYYY
  • /maxage:1
    — Максимальный возраст файла. Исключает файлы старше N дней или даты. Дата указывается в формате YYMMDD, например, /maxage:20200421
  • /E
    – копирует подпапки, без ограничения уровня вложенности. Для контроля уровня вложенности директорий можно использовать параметр /lev, например, /lev:3

Инкрементальность осуществляется за счёт параметра /maxage:1 — файлы старше суток копироваться не будут. Для первого, “базового” копирования, можно выполнить этот скрипт без параметра /maxage.

Заметка. Если файловые системы source или dest не являются NTFS, используйте ключ
/FFT
, так как на других файловых системах (включая эмулированные NTFS) может возникнуть ошибка, из-за которой robocopy будет видеть старые файлы как измененные, из-за отличий в метке времени.

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

Примечание. Поведение robocopy при использовании ключей
/MOVE
и
/MOV
не интуитивно.

  • Если вы используете ключ /MOVE с ключом /E, то вы перенесете все файлы, директории (включая файлы внутри них) и пустые директории. Файлы и директории удалятся из исходной папки. /MOVE с /S даст такой же результат, но пустые директории не перенесутся и будут удалены.
  • Если вы используете ключ /MOV с ключом /E, то вы перенесете все файлы, включая те, которые находятся в директориях и поддиректориях, также скопируются все директории (включая пустые), но они не будут удалены из исходного каталога, в отличие от файлов. Используя /MOV с /S, вы получите такой же результат, но пустые директории не будут скопированы.

Пример использование robocopy в планировщике задач

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

  • Исходный путь — \testnode1C$source
  • Целевая директория- \testnode2C$source

Запустите командную строку с правами администратора и введите: compmgmt.msc

Перейдите в System Tools -> Task Scheduler Library. Создайте новое задание планировщика (Create task).

создать задание планировшика robocopy

Укажите имя задания, и выберите пользователя из-под которого будет выполняться задание. Пользователь должен иметь доступ на чтению и запись в обоих каталогах (при копировании по сети между серверами домена можно использовать аккаунт System, в этом случае нужно предоставить на целевой каталог права RW для объекта computer сервера-источника) .

Выберите опцию Run whether user is logged on or not, для того чтобы задание выполнялось в фоновом режиме. Также отметьте Run with highest privileges. Эта опция сработает если аккаунт из-под которого выполняется задание, будет иметь права администратора.

задание зеркалирования robocopy

Перейдите на вкладку Triggers и создайте новый триггер.

Выберите параметр On a schedule (по расписанию), выберите время начала и отметьте Repeat task every, указав интервал выполнения. В моём случае это 5 минут – каждые 5 минут, начиная с часа дня 22 апреля (обязательно измените эту дату на ту, которая нужна вам), директории будут синхронизированы. В for a duration of поставьте Indefinitely (бесконечно)

расписание запуска

Перейдите во вкладку Actions и нажмите New

Выберите Start a program, и укажите путь к .bat скрипту.

Содержание robocopy-mirror.bat:

@echo off
robocopy \testnode1C$source \testnode2c$dest /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:C:robocopy.log
@echo on

Помимо журнала выполнения задания планировщика, robocopy будет писать собственный лог файл копирования в C:robocopy.log. Если аккаунт из-под которого будет выполняться скрипт не имеет прав администратора, смените C:robocopy.log на нужный вам путь.

запуск команды robocopy через планировшик

Остальные настройки заполнять не надо. После нажатия на кнопку ОК, вас попросит ввести пароль от учетной записи, которую вы выбрали для запуска задания.

Если вы всё настроили правильно, директории должны начать синхронизироваться. события запуска задания планировщика

Если у вас возникли проблемы с выполнением скрипта, то обязательно проверьте вкладку History вашей задачи

журнал запуска планировщика robocopy

Отслеживание изменений в каталогах с помощью robocopy

В robocopy есть встроенный механизм отслеживания изменений в исходном каталоге (и их последующего копирования) и встроенный планировщик – параметры
/mon
и
/mot
.

  • /mon:N
    – проверяет исходную директорию на предмет изменений каждую 1 минуту, и если изменений в директории больше чем N, то будет произведено копирование в целевую директорию. Если задан параметр /mot:Y, то изменения будут проверяться каждые Y минут.
  • /mot:N
    – проверяет исходную директорию на предмет изменений каждые N минут. Минимальное значение N = 1, в минутах. Если параметр /mon не задан, то будет считаться что /mon:1

.bat скрипт для зеркалирования с отслеживанием изменений с интервалом в 1 минуту. Этот скрипт нужно запускать из-под аккаунта с правами администратора.

@echo off
robocopy \testnode1C$source \testnode2c$dest /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:%appdata%robocopy.log /mon:1 /mot: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 или используете цепочки автоматизации с другими языками программирования.

Robocopy («Робокопи» или от англ. Robust File Copy) — утилита командной строки для копирования и создания «зеркал» каталогов (папок). Утилита с большим количеством опций создана для надежного копирования данных и доступна с ОС Windows Vista, заменяющая Xcopy.

Из плюсов Robocopy:

  • Сохраняются все параметры файлов и папок (метки времени, атрибуты).
  • Возможность копирования имен файлов и папок, превышающих 256 символов.
  • Возможность докачки.
  • Настройка количества повторных и времени между повторными попытками при недоступности файлов и папок.
  • Ведение лога.
  • Поддержка нескольких потоков копирования.

Исполняемый файл «Robocopy.exe» находится в папке «C:WindowsSystem32». Последняя версия утилиты весит всего 196 килобайта. Несмотря на небольшой размер утилита очень функциональна.

Синтаксис Robocopy

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

robocopy Источник Назначение [Файл [Файл]...] [Параметры]
  • «Источник» — Путь откуда необходимо копировать файлы и папки. Путь может быть локальным или сетевым.
  • «Назначение» — Путь куда необходимо скопировать файлы и папки. Путь может быть локальным или сетевым.
  • «[Файл [Файл]…]» — файлы которые необходимо скопировать. Доступно использование «wildcard» символов (* или ?). Если фильтр не задан, то по умолчанию используется «*.*».
  • «[Параметры]» — Параметры копирования.

Для получения справки используем следующую команду:

robocopy /help


Для получения более подробной справки по параметрам копирования и ключам необходимо использовать команду:

robocopy /?

Примеры использования Robocopy

1. Самый простой пример использования Robocopy — полное копирование содержимого из одной папки в другую, включая пустые файлы и папки:

robocopy "C:folder1" "C:folder2" /E

2. Создания зеркала. В «folder2» будут удалены все файлы и папки, которых нет в копируемой папке «folder1»:

robocopy "C:folder1" "C:folder2" /MIR

3. Копирования всех файлов с расширением «.txt»:

robocopy "C:folder1" "C:folder2" *.txt

4. Пример копирования профиля пользователя в доменной сети с логированием процесса копирования, сохранением меток, повтором копирования в случае неудачи:

robocopy "\computer1C$UsersUsername" "\computer2backup" /mir /copy:DAT /xo /r:1 /w:1 /log:"C:log.txt"

Параметры Robocopy

Параметры копирования

  • /S — Копировать вложенные папки, кроме пустых. 
  • /E — Копировать вложенные папки, включая пустые. 
  • /LEV:n — Копировать только верхние n уровней исходного дерева папок. 
  • /Z — Копирование файлов с возобновлением. 
  • /B — Копирование файлов в режиме архивирования. 
  • /ZB — Используется режим с возобновлением; если доступ запрещен, используется режим архивации. 
  • /J — Копирование с использованием небуферизованного ввода-вывода (рекомендуется для больших файлов). 
  • /EFSRAW — Копирование всех зашифрованных файлов в режиме EFS RAW. 
  • /COPY:флаги копирования — Что копируется для файлов (по умолчанию /COPY:DAT). (флаги копирования: D=данные, A=атрибуты, T=метки времени, X=пропускать альтернативные потоки данных). (S=Безопасность=NTFS ACLs, O=Сведения о владельце, U=Сведения аудита). 
  • /SEC — Копировать файлы с параметрами безопасности (эквивалентно /COPY:DATS). 
  • /COPYALL — Копировать все сведения о файле (эквивалентно /COPY:DATSOU). 
  • /NOCOPY — Не копировать никаких сведений о файле (полезно с параметром /PURGE). 
  • /SECFIX — Исправлять параметры безопасности для всех файлов, даже пропущенных. 
  • /TIMFIX — Исправлять атрибуты времени для всех файлов, даже пропущенных. 
  • /PURGE — Удалять файлы и папки назначения, которых больше не существует в источнике. 
  • /MIR — Создать зеркало дерева папок (эквивалентно /E  с /PURGE). 
  • /MOV — Перемещать файлы (удаление из источника после копирования). 
  • /MOVE — Перемещать файлы и папки (удаление из источника после копирования). 
  • /A+:[RASHCNET] — Добавлять заданные атрибуты скопированным файлам. 
  • /A-:[RASHCNETO]— из скопированных файлов удаляются указанные атрибуты. 
  • /CREATE — Создать только дерево папок и файлы нулевой длины. 
  • /FAT — Создать файлы назначения только в формате 8.3 FAT. 
  • /256 — Отключить поддержку длинных путей ( > 256 знаков). 
  • /MON:n — Наблюдать за источником; перезапустить после n изменений. 
  • /MOT:m — Наблюдать за источником; перезапустить через m минут, если произошли изменения. 
  • /RH:hhmm-hhmm — Часы запуска — время, когда можно запускать новое копирование. 
  • /PF — Проверять часы запуска по файлам (не по проходам). 
  • /IPG:n — Интервал между пакетами (мс) для снижения нагрузки на сеть при низкоскоростных подключениях. 
  • /SJ — копировать соединения как соединения, а не как целевые объекты соединений. 
  • /SL — копировать символические ссылки как ссылки, а не как целевые объекты ссылок. 
  • /MT[:n] — Выполнить многопотоковое копирование с помощью n потоков (по умолчанию 8). n должно быть не меньше 1 и не больше 128. Этот параметр несовместим с параметрами /IPG и /EFSRAW. Перенаправляйте выходные данные с помощью параметра /LOG, чтобы повысить производительность. 
  • /DCOPY:флаги копирования — Что копировать для каталогов (по умолчанию /DCOPY:DA). 
  • (флаги копирования: D=данные, A=атрибуты, T=метки времени, E=расширенные атрибуты, X=пропускать альтернативные потоки данных). 
  • /NODCOPY — Не копировать никаких сведений о каталоге (по умолчанию выполняется /DCOPY:DA). 
  • /NOOFFLOAD — Копирование файлов без использования механизма разгрузки копий Windows. 
  • /COMPRESS— запрашивать сетевое сжатие во время передачи файла, если применимо. 

Параметры регулирования копирования файла

  • /IoMaxSize:n[KMG] — запрошенный максимальный размер ввода-вывода на цикл {read,write}, в n [KMG] байт. 
  • /IoRate:n[KMG] — запрошенная скорость ввода-вывода, в n [KMG] байт в секунду. 
  • /Threshold:n[KMG] — пороговое значение размера файла для регулирования, в n [KMG] байт (см. примечания). 

Параметры выбора файлов

  • /A — Копировать только файлы с установленным атрибутом «Архивный». 
  • /M — Копировать только файлы с атрибутом «Архивный» и сбросить его. 
  • /IA:[RASHCNETO] — Включить файлы, у которых установлен какой-либо из заданных атрибутов. 
  • /XA:[RASHCNETO] — Исключить файлы, у которых установлен какой-либо из заданных атрибутов. 
  • /XF file [файл]… — Исключить файлы, соответствующие заданным именам, путям и подстановочным знакам. 
  • /XD dirs [папки]… — Исключить папки, соответствующие заданным именам и путям. 
  • /XC — Исключить измененные файлы. 
  • /XN — Исключить более поздние файлы. 
  • /XO — Исключить более ранние файлы. 
  • /XX — Исключить дополнительные файлы и папки. 
  • /XL — Исключить отдельно расположенные файлы и папки. 
  • /IS — Включить те же файлы. 
  • /IT — Включить оптимизированные файлы. 
  • /MAX:n — Максимальный размер файла — исключить файлы, размер которых более n байт. 
  • /MIN:n — Минимальный размер файла — исключить файлы, размер которых менее n байт. 
  • /MAXAGE:n — Максимальный возраст файла — исключить файлы, возраст которых превышает n дней. 
  • /MINAGE:n — Минимальный возраст файла — исключить файлы, возраст которых менее n дней. 
  • /MAXLAD:n — Наиболее поздняя дата последнего обращения — исключить файлы, которые не использовались с даты n. 
  • /MINLAD:n — Наиболее ранняя дата последнего обращения — исключить файлы, которые использовались после даты n. (Если n < 1900, то n = n дней, в противном случае n — дата в формате ДДММГГГГ). 
  • /FFT — использовать время файлов FAT (двухсекундная точность). 
  • /DST — учитывать одночасовую разницу при переходе на летнее время. 
  • /XJ — исключить символьные ссылки (для файлов и каталогов) и точки соединения. 
  • /XJD — исключить символические ссылки для каталогов и точки соединения. 
  • /XJF — исключить символические ссылки для файлов. 
  • /IM — Включение измененных файлов (отличающееся время изменения). 

Параметры повторных попыток

  • /R:n — Число повторных попыток для неудавшихся копий: по умолчанию — 1 миллион. 
  • /W:n — Время ожидания между повторными попытками: по умолчанию — 30 секунд. 
  • /REG — Сохранить /R:n и /W:n в реестре как параметры по умолчанию. 
  • /TBD — Ждать, пока будут определены имена общих ресурсов (ошибка повторной попытки 67). 
  • /LFSM — работать в режиме нехватки свободного места, включая паузу и возобновление копирования (см. примечания). 
  • /LFSM:n[KMG] — /LFSM, задающий размер основания в n [К: кило, М: мега, Г: гига] байт. 

Параметры ведения журнала

  • /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 — Включить следующие файлы. 

Об авторе Эта статья предоставлена ​​MVP Fu Haijun. Спасибо MVP за то, что поделился своей технической информацией и личным опытом.

Основной текст Почему нельзя ускорить функцию копирования / передачи файлов в Windows 7 под Windows 7? Можно использовать robocopy Осуществить реализацию многопоточного копирования файлов.

Друзья, которые часто выполняют операции управления файлами, упоминая операцию копирования / вставки, по-видимому, многие люди вспомнят чрезвычайно медленную скорость копирования Vista в начале и не удовлетворены встроенной функцией копирования системы Windows, потому что это слишком быстрый. Итак, все используют программное обеспечение, такое как FastCopy и TeraCopy, для ускорения копирования. Позднее в Windows 7 эта проблема была исправлена, но эффект оказался неудовлетворительным. Но знаете ли вы, что в Windows 7 есть встроенная функция быстрого копирования?

Если вы хотите скопировать каталог, содержащий несколько файлов большой емкости, вам необходимо использовать команду RoboCopy. Это команда копирования каталога из командной строки. Начиная с Windows NT 4.0, она стала частью набора ресурсов Windows. Затем в В качестве стандартных функций встроены Windows Vista, Windows 7 и Windows Server 2008. Этот инструмент не только имеет очень высокую скорость копирования, но также поддерживает возобновляемую передачу и даже поддерживает копирование в указанное время. Эта функция в Windows 7 также была обновлена ​​- она ​​уже может поддерживать многопоточность, что означает, что скорость репликации может быть значительно увеличена. Кроме того, с помощью этой функции можно создать две полные зеркальные копии файловой структуры без копирования ненужных файлов-дубликатов.Она также позволяет сохранить всю соответствующую информацию о файле, включая дату и время, список управления доступом (ACL) и т. Д. Копирование каталога с более чем N небольшими файлами может увеличить скорость на порядок: несколько тысяч файлов можно скопировать за 3 секунды, в то время как обычный метод копирования и вставки занимает около 45 секунд.

Например, поставить CDF:Скопируйте все файлы вEDishedCDВ каталоге вы можете выполнить следующую команду:

Robocopy /s F: E:CD

Даже если диск внезапно вынут в это время, это не имеет значения, robocopy будет ждать, пока диск снова не будет вставлен в оптический привод, и копирование начнется автоматически.

Robocopy также поддерживает копирование в локальную сеть и даже может переместить всю структуру каталогов указанного каталога на сервере локальной сети на локальный. Robocopy поддерживает регулярные операции, поэтому операцию копирования можно выполнять ночью, чтобы избежать перегрузки локальной сети и причинения неудобств. другим.

Давайте посмотрим на использование этой команды, как показано на рисунке ниже:

Например: RoboCopy dir_from dir_to / E / MT: 50 /LOG:copy.log

Среди них / E означает включение подкаталогов, / MT: 50 — использование 50 потоков (по умолчанию — 8 потоков, максимальное значение может быть равно 128), а / LOG — перенаправить вывод. Дополнительные параметры можно просмотреть с помощью robocopy / ?.

Синтаксис команды: Источник назначения ROBOCOPY [файл [файл] …] [параметры]

Источник: исходный каталог (диск: путь или \ сервер общий ресурс путь)

Цель: целевой каталог (диск: путь или \ сервер общий ресурс путь)

Файл: файл, который нужно скопировать (имя / подстановочный знак: по умолчанию «*. *»)

Чтобы проверить скорость копирования файлов, был проведен следующий тест

Из приведенного выше рисунка видно, что в случае 120 потоков копируется один файл размером 878,16 МБ, начиная с 14:56:31 и заканчивая 14:57:06, что занимает 35 секунд.

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

for($i=128;$i –lt 129;$i++){

Robocopy /s C:CD C:testCD$i /MT:$i /LOG:log/copy$i.log

remove-item C:\testCD$i*.*

«$i ,» >>log/answ.txt

(Get-Content C:logcopy$i.log -TotalCount 6)[-1] >>log/answ.txt

«,» >>log/answ.txt

(Get-Content C:logcopy$i.log -TotalCount 10000)[-1] >>log/answ.txt}

Содержимое вывода скрипта форматируется и импортируется в Excel через формат CSV, а линейная диаграмма строится, как показано на рисунке ниже.Серия 1«линия:

В скопированном целевом каталоге всего 324 файла. Размер одного файла составляет от 1 МБ до 2 МБ. Общий размер файла составляет 549 МБ. По сравнению с одним файлом размером 878,16 МБ, указанным выше, время копирования больше. чем раньше, из-за количества файлов. Их много, копирование одного за другим занимает много времени, и во многих экспериментах будут ошибки. После нормализации, как показано желтой линией «линейная (серия 1)» на на рисунке вы можете видеть то же самое Скорость копирования файловой группы отличается при использовании разных потоков.По мере увеличения количества потоков время копирования уменьшается линейно.

На самом деле существует множество эффективных способов использования robocopy. Читатели могут использовать команду robocopy /? Для запроса или проверить подробные параметры команды RoboCopy во вложении в конце этой статьи. Читатели найдут для этого более эффективные возможности. команда.

Приложение: Подробные параметры команды RoboCopy

Параметры копирования

/ 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: удалить целевые файлы / каталоги, которых больше нет в источнике.

/ MIR: зеркало дерева каталогов (эквивалент / E и / PURGE).

/ MOV: переместить файлы (удалить из источника после копирования).

/ MOVE: перемещать файлы и каталоги (удалять из источника после копирования).

/ A +: [RASHCNET]: добавить указанные атрибуты в скопированный файл.

/ A -: [RASHCNET]: удалить данный атрибут из скопированного файла.

/ CREATE: создавать только дерево каталогов и файлы нулевой длины.

/ FAT: использовать для создания целевого файла только имя файла 8.3 FAT.

/ 256: отключить поддержку сверхдлинных путей (> 256 символов).

/ MON: n: отслеживать источник; запускать снова, когда обнаружено более n изменений.

/ MOT: m: контролировать источник; в случае изменения запустить снова в течение m минут.

/ RH: ччмм-ччмм: Часы работы — время, когда может быть запущена новая копия.

/ PF: проверять часы работы для каждого файла (не для каждого шага).

/ IPG: n: интервал между программными пакетами (мс) для освобождения полосы пропускания на низкоскоростных линиях.

/ SL: скопировать символьную ссылку на цель.

/ MT [: n]: использовать n потоков для многопоточной репликации (значение по умолчанию — 8). n должно быть не меньше 1, но не больше 128. Этот параметр несовместим с параметрами / IPG и / EFSRAW. Используйте параметр / LOG для перенаправления вывода для повышения производительности.

Параметры выбора файла

/ A: копировать только файлы с установленным атрибутом архива.

/ M: копировать только файлы с атрибутами архива и сбрасывать атрибуты архива.

/ IA: [RASHCNETO]: включать только файлы с любым заданным набором атрибутов.

/ XA: [RASHCNETO]: исключить файлы с любым заданным набором атрибутов.

/ XF файл [файл] …: исключить файлы, соответствующие заданному имени / пути / подстановочному знаку.

/ XD Directory [Directory] …: исключить каталоги, соответствующие заданному имени / пути.

/ XC: исключить файлы, которые были изменены.

/ XN: исключить более новые файлы.

/ XO: исключить старые файлы.

/ XX: исключить избыточные файлы и каталоги.

/ XL: исключить потерянные файлы и каталоги.

/ IS: содержать те же файлы.

/ IT: Содержит настроенные файлы.

/ MAX: n: максимальный размер файла без файлов размером более n байтов.

/ MIN: n: минимальный размер файла без файлов размером менее n байт.

/ MAXAGE: n: Самый длинный файл без учета возраста файлов старше n дней / даты.

/ MINAGE: n: самый короткий файл без возрастных ограничений, файлы старше n дней / даты.

/ MAXLAD: n: Максимальное количество файлов, исключая дату последнего доступа, которые не использовались с n.

/ MINLAD: n: Наименьшие файлы с исключением даты последнего доступа, использованные с n. (Если n <1900, то n = n дней, иначе n = дата ГГГГММДД).

/ XJ: исключить суставы. (Обычно он включен по умолчанию).

/ FFT: Предполагается, что время файла FAT (детализация 2 секунды).

/ DST: компенсировать 1-часовую разницу во времени DST.

/ XJD: Исключить соединения каталогов.

/ XJF: исключить точки соединения файлов.

Параметры повтора

/ 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: File: вывести статус в файл журнала (перезаписать существующий журнал).

/ LOG +: file: вывести статус в файл журнала (добавить в существующий журнал).

/ UNILOG: file: вывести статус в файл журнала в режиме UNICODE (перезаписать существующий журнал).

/ UNILOG +: file: вывести статус в файл журнала в режиме UNICODE (добавить в существующий журнал).

/ TEE: вывод в окно консоли и файл журнала.

/ NJS: Нет описания вакансии.

/ UNICODE: статус вывода в режиме UNICODE.

Варианты работы

/ JOB: Имя задания: извлечь параметры из указанного файла задания.

/ SAVE: Имя задания: сохранить параметры в названном файле задания.

/ QUIT: выйти после обработки командной строки (для просмотра параметров).

/ NOSD: исходный каталог не указан.

/ NODD: целевой каталог не указан.

/ IF: содержит следующие файлы.

В этой статье я расскажу, как использовать утилиту Robocopy для создания точных дубликатов всех необходимых файлов в папке пользовательского профиля (C:UsersВаше имя) путем многопоточного копирования.Зачем использовать Robocopy?

Если вы — сознательный пользователь, вы наверняка и так регулярно создаете образ жесткого диска и осуществляете резервное копирование данных с помощью средства «Архивация и восстановление» (Backup and Restore) Windows 7. Однако не помешает создать и еще одну резервную копию — на всякий случай. Это можно сделать и вручную, путем перетаскивания нужных файлов на внешний жесткий диск, но если их слишком много, процесс может затянуться.

Утилита Robocopy позволяет использовать более восьмидесяти переключателей командной строки для создания эффективного сценария резервного копирования. Чтобы облегчить вам задачу, я объясню, как использовать возможности утилиты для создания зеркальной копии всех файлов в папке вашего профиля (C:UsersВаше имя).

Составление команды

В качестве примера я составлю команду для копирования содержимого моей пользовательской папки «C:UsersGreg Shultz» в папку «TheBackup» на внешнем жестком диске, примонтированном под литерой «G» (вы, разумеется, замените имена и адреса на собственные). Команда будет начинаться так:

Robocopy “C:UsersGreg Shultz” “G:TheBackup”

Я хочу скопировать все папки, даже пустые, потому что они могут пригодиться для будущих файлов. В то же время я хочу исключить из копирования файлы, которые уже удалил. Можно использовать для этого переключатели /S и /PURGE, но я предпочитаю обойтись одним переключателем для выполнения обеих задач — /MIR. Теперь команда выглядит так:

Robocopy “C:UsersGreg Shultz” “G:TheBackup” /MIR

В папке «C:UsersGreg Shultz» есть несколько скрытых системных файлов и папок, которые я не собираюсь копировать — например, «NTUSER.DAT» и «AppData». Кроме того, в папке профиля присутствуют несколько точек соединения, которые привязывают к ней системные папки — например, «Cookies» и «SendTo».

Чтобы исключить из копирования скрытые системные файлы, я использую переключатель /XA:SH, а чтобы не копировать папку «AppData» со всем содержимым — переключатель /XD. Наконец, переключатель /XJD позволяет исключить все точки соединения. В результате команда теперь выглядит так:

Robocopy “C:UsersGreg Shultz” “G:TheBackup” /MIR /XA:SH /XD AppData /XJD

Одна из самых полезных особенностей Robocopy связна с тем, как утилита обрабатывает открытые файлы. При обнаружении такого файла программа приостанавливает копирование и ждет, пока он закроется. Каждые 30 секунд Robocopy пытается возобновить копирование. По умолчанию, предусмотрен миллион попыток (я не шучу!), но в таком случае копированию вообще не суждено завершиться, поэтому количество попыток лучше сократить.

Для этого используется переключатель /R, а изменить интервал между попытками можно с помощью переключателя /W. Я сокращу количество попыток до пяти, а временной промежуток между ними — до 15 секунд. Тогда Robocopy сможет возобновить копирование, подождав некоторое время. Теперь команда выглядит так:

Robocopy “C:UsersGreg Shultz” “G:TheBackup” /MIR /XA:SH /XD AppData /XJD /R:5 /W:15

Сейчас можно добавить в команду переключатель многопоточного копирования /MT[:n], где n — это число потоков от 1 до 128. Значение n можно и не указывать, а обойтись одним лишь переключателем /MT. В таком случае будет использоваться восемь потоков. Я предпочитаю 32 потока. Обратите внимание, что многопоточное копирование не совместимо с переключателями /IPG и /EFSRAW. Итак, новая команда:

Robocopy “C:UsersGreg Shultz” “G:TheBackup” /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32

Как и все утилиты командной строки, Robocopy постоянно информирует пользователя о состоянии выполнения операции, но куда удобнее сохранить эти данные в форме отчета. Чтобы получить полную картину, я буду использовать переключатель /V, однако сведения о прогрессе копирования каждого отдельного файла мне не нужны, поэтому я добавлю в команду переключатель /NP. Файл отчета создается с помощью переключателя /LOG и перезаписывается при каждом следующем запуске утилиты. Окончательная команда выглядит так:

Robocopy “C:UsersGreg Shultz” “G:TheBackup” /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32 /V /NP /LOG:Backup.log

Создание и использование сценария

Теперь, когда вы знаете, как использовать переключатели, составьте нужную вам команду в Блокноте (Notepad) и сохраните файл с именем «RobocopyBackup.cmd». Чтобы открытые файлы сценария и отчета не препятствовали копированию, я создал в корневом каталоге папку «C:BackupTool» и сохранил их туда.

Файл отчета будет сохраняться в тот же каталог после каждого запуска утилиты. Хотя это простой текстовый файл, он может оказаться чересчур объемным для Блокнота, поэтому открывать его стоит в каком-нибудь другом текстовом процессоре — например, в Wordpad.

Теперь, когда вам понадобится создать дополнительную резервную копию, просто запустите файл «RobocopyBackup.cmd» двойным щелчком, а по окончании операции изучите файл отчета «Backup.log». С помощью Планировщика заданий (Task Scheduler) можно запрограммировать регулярный запуск файла «RobocopyBackup.cmd» по расписанию.

А что думаете вы?

Пользуетесь ли вы утилитой Robocopy в Windows 7? Какие еще переключатели вы бы добавили в команду для резервного копирования? Поделитесь своим мнением в комментариях!

Автор: Greg Shultz
Перевод

SVET

Оцените статью: Голосов

Копирование заблокированных файлов с HoboCopy
Автор: windata.ru Оригинальная статья взята здесь.

Предположим, что вы хотите скопировать файл, который намертво заблокирован другой программой. В результате Windows нам радостно сообщит о том, что системный процесс не может получить доступа к файлу, поскольку последний заблокирован другим процессом. Как же тогда скопировать такой файл?

Что же мешает, собственно говоря, освободить файл, закрыв заблокировавшую его программу? Да ничего, но представьте, что вы настраиваете автоматическое резервное копирование файлов. Если файл заблокирован, то программа резервного копирования здесь не справится и нужный файл не будет скопирован. Вот тут-то и понадобится один рецепт, который представлен в этой статье.

Robocopy — описание и примеры использования, XCOPY, HoboCopy

Начиная с Windows XP операционная система от Microsoft поддерживает технологию теневого копирования (она же Volume Shadow Copy). Данная технология используется для резервного копирования данных и восстановления системы. В частности, теневая копия представляет собой временный “снимок” файла или раздела жесткого диска. При этом одна программа может получить доступ чтения именно к снимку, в то время как другие программы могут в это же время работать с файлом или изменять его.

Именно это нам и нужно – чтение занятого файла. И поможет нам в этом утилита для командной строки HoboCopy, предназначенная для резервного копирования файлов.

На следующей странице можно загрузить HoboCopy для Windows XP и Windows Vista/7 в версиях 32/64 бит:

Скачать HoboCopy для различных версий Windows (GitHub)

Для работы HoboCopy (да и многих других программ для резервного копирования) нам надобятся две следующих службы Windows:

  • Теневое копирование тома
  • MS Software Shadow Copy Provider

Если вы забыли, где просмотреть службы, то в Windows 7 перейдите по пути Панель управления > Система и безопасность > Администрирование > Службы (а в Windows XP – Панель управления > Администрирование > Службы).

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

Резервное копирование одного файла с помощью HoboCopy

Как вы помните, HoboCopy – утилита командной строки. К слову сказать, в Windows 7 и Windows Vista ее нужно запускать в режиме администратора, для чего щелкните на файле программы правой кнопкой мыши, выберите команду Свойства > Дополнительно и установите флажок Запуск от имени администратора. Также будет не лишним ознакомиться со статьей Запуск программ Windows 7 в режиме администратора.

Синтаксис команды выглядит следующим образом:

Bash
1
hobocopy c:имя_папки d:папка_копирования <имя_файла>

К примеру, мы решили скопировать файл c:userswindatamailoutlook.pst прямо вот сюда: d:backupsoutlook.pst.

Команда будет выглядеть следующим образом:

Bash
1
hobocopy c:userswindatamail d:backups Outlook.pst

Резервное копирование каталога с помощью HoboCopy

Чем копировать по одному файлу, разумеется, куда лучше настроить резервное копирование целыми папками. Для этого нам понадобятся такие ключи:
/full – копирование всех файлов
/skipdenied – игнорировать любые сообщения ошибках, связанных с разрешением доступа
/r – рекурсивное копирование
/y – никаких запросов, копировать абсолютно все

Синтаксис команды следующий:

Bash
1
hobocopy /full /skipdenied /y /r c:имя_папки d:папка_копирования

Например, используя предыдущий пример, скопируем всю пользовательскую папку в папку d:backups. Для этого нам понадобится такая команда:

Bash
1
hobocopy /full /skipdenied /y /r c:userswindata d:backups

На копирование понадобится какое-то время, так что можно передохнуть, перекусить и потрещать вконтактике (шутка). Результатом станет полная копия всего каталога. Если при копировании были сообщения об ошибках, связанных с разрешением доступа, программа укажет на проблемные файлы.

Инкрементное копирование файлов с помощью HoboCopy

Утилита HoboCopy поддерживает и инкрементный тип копирования. Что это такое? Весьма полезная функция, она позволяет копировать только те файлы, что изменились с момента предыдущего резервного копирования. При этом последняя дата копирования хранится в файле, который вам нужно указать непосредственно в команде утилиты.

Для инкрементного копирования потребуются два ключа:
/statefile=имя_файла – это имя файла, в котором будут записаны данные о последнем копировании
/incremental – а это, как понятно из названия, ключ для инкрементного копирования

Синтаксис команды выглядит так:

Bash
1
hobocopy /incremental /statefile=имя_файла /y /r c:имя_папки d:папка_копирования

Пример:

Bash
1
hobocopy /incremental /statefile=d:lastbackup.dat /y /r c:userswindata d:backups

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

Таким образом, утилита HoboCopy позволяет настроить автоматическое копирование папок, для чего нужно лишь запланировать процедуру копирования. В Windows 7/Vista для этого используйте системную программу Планировщик заданий (Панель управления > Система и безопасность > Администрирование > Расписание выполнения задач), а в Windows XP – окно Назначенные задания (Панель управления > Назначенные задания).

Robocopy в Windows 10/8/7 – это надежный, гибкий и настраиваемый инструмент, содержащий более 80 переключателей. Он может обрабатывать любую партию или синхронную копию, которую вы имеете в виду. Robocopy предназначен для надежного зеркалирования каталогов или деревьев каталогов. Он имеет функции, обеспечивающие копирование всех атрибутов и свойств NTFS, и включает дополнительный код перезапуска для сетевых подключений, которые могут быть нарушены.

Robocopy или « Robust File Copy » – это команда репликации каталогов в командной строке, которая может копировать файлы и деревья каталогов. Некоторое время он был независимым инструментом, но, наконец, в Windows Vista кто-то счел целесообразным дать этому небольшому инструменту признание, которого он заслуживает, и в результате он теперь находится на высоком постаменте в каталоге system32 на каждом Установка Windows Vista.

Содержание

  1. Робокопия выключатели
  2. Robocopy в Windows
  3. Microsoft Robocopy GUI
  4. Разница между XCopy и Robocopy

Робокопия выключатели

Откройте CMD с повышенными правами, введите robocopy /? и нажмите Enter, чтобы просмотреть полный набор доступных параметров или переключателей.

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

Robocopy в Windows

Теперь в Windows 10/8/7 вы также можете копировать свои файлы в многопоточность!

Просто добавьте переключатель /MT и определите количество потоков и мгновенную многопоточную копию!

Для этого синтаксис команды:

 РОБОКОПИЯ/MT: 

Максимальное целое число, которое можно дать, равно 120.

Microsoft Robocopy GUI

Это не простой инструмент для использования. Вы можете скачать графический интерфейс Microsoft Robocopy.

В эту папку также входит полное справочное руководство по Robocopy с полным указателем всех команд и синтаксиса Robocopy.

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

Для получения дополнительной информации о каждой опции вы также можете просмотреть Руководство пользователя Robocopy.exe. Нажмите Справка> Руководство пользователя Robocopy.

Разница между XCopy и Robocopy

Robocopy заменяет XCopy в более новых версиях Windows – хотя вы найдете оба эти инструмента в Windows 10.

Основные различия между ними:

  1. Robocopy использует зеркальное отображение, XCopy не
  2. Robocopy может скопировать больше атрибутов файла, чем XCopy
  3. В Robocopy есть опция/RH, позволяющая установить время запуска копии
  4. В Robocopy есть опция/MON: n для проверки различий в файлах.

Объявления

Вы можете открыть CMD и ввести Robocopy /? и XCopy /? , чтобы просмотреть доступные параметры.

Понравилась статья? Поделить с друзьями:
  • Копирование больших файлов по сети windows
  • Копирование windows 10 на другой компьютер
  • Копирование windows 10 на другой ssd
  • Копирование windows 10 на ssd acronis true image
  • Копирование dvd дисков в windows 10 на жесткий диск