Robocopy

From TÜ Narva Kolledži Wiki
Jump to navigation Jump to search
"Копирует данные файлов из одного расположения в другое."
―официальное описание утилиты на сайте Microsoft Learn

Robocopy (сокращение от Robust File Copy) – это утилита командной строки для Microsoft Windows. Она предназначена для отказоустойчивого копирования или репликации файлов и каталогов везде, куда имеет доступ компьютер, включая локальные диски, съёмные диски, локальную сеть и удалённые серверы, при этом сохраняя все свойства копируемых файлов. Функционально утилита заменяет «XCOPY», добавляя больше возможностей. Впервые выпущена как часть Windows NT 4.0 Resource Kit, однако стала стандартной функцией Windows, начиная с Windows Vista и Windows Server 2008.

Robocopy

Возможности

Возможности Robocopy сильно превосходят другие встроенные команды Windows, такие, как «copy» и «xcopy». В отличие от ранее упомянутых команд, Robocopy:

  • Устойчива к обрывам сети (может продолжить копирование после восстановления сети);
  • Обладает возможностью копирования всех (или выборочных) свойств файлов;
  • Позволяет копировать файлы и директории, запрещённые для доступа даже администратору;
  • Имеет индикатор прогресса копирования;
  • Имеет возможность безошибочного копирования путей, превышающих 259 символов – вплоть до теоретического предела около 32 000 символов;
  • Благодаря эффективным алгоритмам и многопоточности выполняет копирование намного быстрее, чем обычное копирование средствами Windows;
  • И т.д.

Пример синтаксиса

 robocopy <источник> <назначение> [<файл>[...]] [<параметры>]
Параметры
Параметры Описание
<источник> Указание пути к исходной папке (диск:\путь или \\сервер\общий ресурс\путь).
<назначение> Указание пути к конечной папке (диск:\путь или \\сервер\общий ресурс\путь).
<файл> Указывает файл или файлы для копирования. (По умолчанию - *.*)
<параметры> Задаёт параметры, используемые командой robocopy, включая параметры копирования, выбора файлов, повторных попыток, ведения журнала и задания.

Полный синтаксис утилиты Robocopy (все параметры и их описания) можно посмотреть, используя команду robocopy /? в «Командной строке / Command Prompt».

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

Копирование папки

Одна из самых простых операций в Robocopy – это копирование исходной папки в конечную.

1. В данном примере производится копирование папки «Example» из диска «C» в диск «E».

2. Команда: robocopy "C:\Example" "E:\Example".

После завершения операции Robocopy предоставляет пользователю подробную информацию:

  • «Начало / Started» - показывает время начала операции;
  • «Источник / Source» - показывает путь к исходной папке;
  • «Назначение / Dest» - показывает путь к конечной папке;
  • «Файлы / Files» - показывает то, какие файлы были скопированы (по умолчанию - *.*);
  • «Параметры / Options» - показывает заданные параметры;
  • «Всего / Total» - показывает общее количество файлов и папок;
  • «Скопировано / Copied» - показывает число скопированных файлов и папок;
  • «Пропущено / Skipped» - показывает число не скопированных файлов и папок.

3. Папка «Example» и её содержимое были успешно скопированы из диска «C» в диск «E».

Копирование папки на удалённую систему или общий ресурс

Аналогичным способом, с помощью Robocopy возможно копировать файлы и папки на удалённую систему. Для этого перед путём к конечной папке необходимо указать имя устройства или IP-адрес удалённой системы. Пример: \\<имя устройства>\<общий ресурc>\<путь> или \\<IP-адрес>\<общий ресурс>\<путь>.

1. В данном примере производится копирование папки «Example» из предыдущего примера с диска «C» на удалённую систему с IP-адресом 192.168.56.113 в общедоступную папку «shared».

2. Команда: robocopy "C:\Example" \\192.168.56.113\shared\Example.

3. Папка «Example» и её содержимое были успешно скопированы из диска «C» на удалённую систему.

Копирование файлов с определённым расширением

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

1. В данном примере производится копирование файлов, название которых содержит «praktikum_» в начале или имеющих расширение «.png».

2. Команда: robocopy "C:\Example" "E:\Example" praktikum_* *.png.

3. Указанные файлы из папки «Example» были успешно скопированы из диска «C» в диск «E».

Копирование вложенных папок

По умолчанию в конечную папку копируются только каталоги первого уровня. Чтобы скопировать все вложенные папки, кроме пустых, необходимо добавить параметр /S в конце команды. Параметр /E позволяет копировать все вложенные папки, включая пустые.

1. В данном примере производится копирование всех файлов и каталогов из папки «Example» с диска «C» на диск «E».

2. Команда: robocopy "C:\Example" "E:\Example" /S.

3. Папка «Example» и её содержимое, включая находящиеся в ней вложенные папки, были успешно скопированы из диска «C» в диск «E».

Копирование файлов определённого размера

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

1.1. В данном примере производится копирование файлов, вес которых меньше 10 килобайт.

1.2. Команда: robocopy "C:\Example" "E:\Example" /S /MAX:10000.

1.3. Файлы из папки «Example», которые весят меньше 10 килобайт были успешно скопированы из диска «C» в диск «E».

2.1. В данном примере производится копирование файлов, вес которых больше 10 килобайт.

2.2. Команда: robocopy "C:\Example" "E:\Example" /S /MIN:10000.

2.3. Файлы из папки «Example», которые весят больше 10 килобайт были успешно скопированы из диска «C» в диск «E».

Перемещение файлов

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

1. Команда: robocopy "C:\Example" "E:\Example" /S /MOVE.

2. Папка «Example» и её содержимое были успешно перемещены из диска «C» в диск «E».

3. Папка «Example» теперь отсутствует на диске «C».

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

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

Флаги копирования:

  • D – данные;
  • A – атрибуты;
  • T – метки времени;
  • X – пропуск альтернативных потоков данных;
  • S – Безопасность = NTFS ACLs (списки контроля доступа);
  • O – сведения о владельце;
  • U – сведения аудита.

По умолчанию параметр /copy имеет значение /copy:DAT, то есть Robocopy автоматически копирует данные, атрибуты и метки времени. Если же пользователь хочет скопировать все сведения о файлах, можно воспользоваться командой /copyall, что эквивалентно команде /copy:DATSOU. Команда /nocopy не копирует никаких сведений о файлах.

1. В данном примере производится копирование папки «Example» из диска «C» в диск «E» с сохранением всех её свойств.

2. Команда: robocopy "C:\Example" "E:\Example" /S /copyall.

3. Папка «Example» и её содержимое были успешно скопированы из диска «C» в диск «E» с сохранением всех свойств.

4. Пользователь test, не являющийся администратором на данном компьютере, не имеет доступа к редактированию папки «Example» даже после её копирования.

Синхронизация конечной папки с исходной

Чтобы синхронизировать конечную папку с исходной, Robocopy предоставляет пользователю параметр /purge. Данный параметр удаляет из конечной папки все файлы, которых больше нет в источнике.

1. В данном примере производится синхронизация папки «Example» на диске «E» с исходной папкой, находящейся на диске «C».

2. Команда: robocopy "C:\Example" "E:\Example" /purge.

3. Папка «Example» на диске «E» стала идентичной исходной папке, находящейся на диске «C».

Графический интерфейс

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

Примеры:

  • Easy RoboCopy, последняя версия 1.0.16 (11.01.2022)

  • WinRoboCopy, последняя версия 1.3.5953.40896 (19.04.2016)

Полезные ссылки