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

Содержание:

Когда вам нужно скопировать файлы на другой диск, вы обычно также используете обычный процесс выбора, копирования и вставки. Хотя этот процесс работает отлично, скорость становится узким местом, когда попытка передачи большого количества файлов может занять очень много времени. В этой статье мы поговорим о том, как использовать многопоточность Robocopy в Windows 10. Начнем!

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

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

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

Параметры :

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

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

/w : отображает сообщение «Press any key to begin copying file(s)» и ждет вашего ответа прежде чем начать копирование файлов.

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

: игнорирование ошибок.

: проверяет каждый файл после их записи на идентичность исходным. В Windows XP он не используется. Оставлен для совместимости с MS-DOS файлами

: тихий режим. Не выводит сообщения во время работы.

: отображает имена файлов при копировании.

: отобразить имена файлов которые будут копироваться.

: Копирование зашифрованных файлов в целевой каталог, не поддерживающий шифрование.

: копировать файлы которые изменены позже указаной даты, включаю указанную. Если не указать значение mm-dd-yyyy (месяц-день-год), xcopy будет копировать файлы которые более новые чем в папке назначения. Вообщем эта команда позволяет обновить файлы, которые изменились.

: копировать только те файлы которые уже есть в папке назначения. Т.е. обновить их.

: если это директория или содержит wildcards ( ну типа * ) и не указан, то xcopy предполагает что это директория и создает ее. По умолчанию xcopy запрашивает у вас это директория или файл.

: директории и поддиректории в которых нет файлов будут пропущены. Если опустить этот параметр, xcopy работает внутри одной директории.

: копировать все поддиректории, даже если они пустые. Эквивалентен сочетанию ключей . Совместим с ключом .

: Создание структуры каталогов без копирования файлов. Пустые каталоги и подкаталоги не включаются в процесс копирования. Для создания пустых каталогов и подкаталогов используйте сочетание ключей .

: при копировании сохраняется атрибут «только для чтения». По умолчанию он сбрасывается.

: перезапись файлов, предназначенных только для чтения.

: копировать скрытые и системные файлы. По умолчанию xcopy не копирует эти файлы.

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

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

: делает имена файлов и папок короткими. Может понадобиться в случае копирования с FAT на NTFS. Потомучто FAT ( 8.3 символа ) не поддерживает длинные имена как NTFS.

: копируется информация о пользователе файла и информация DACL (discretionary access control list).

: копирование параметров аудита файлов и информация SACL (подразумевает ключ ).

… : список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.

: чтобы не спрашивал когда нужно перезаписать уже существующий файл.

: противоположность ключу .

: копировать по сети в возобновляемом режиме.

: вывести помощь. Подсказки по параметрам команды.

Некоторые особенности жестких ссылок Windows

Изучая свойства жестких ссылок в Windows, обнаружил следующее:

— Изменения в правах доступа к файлу видны сразу во всех жестких ссылках на этот файл, а время изменения файла — не сразу во всех.

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

— Измененные атрибуты файла ведут себя так же как и время изменения файла (см. выше).

— Если изменить содержимое файла (например находящегося в папке «куда»), используя внешнюю жесткую ссылку на этот файл, то программа Robocopy в некоторых случаях может этого не увидеть, т.к. например время изменения файла обновилось только в той внешней ссылке, через которую он был изменен.

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

* Все вышеперечисленное касается точно только последних версий Windows. В устаревших (например XP или Vista) все может быть иначе — это нужно проверять отдельно.

Интересные ключи Robocopy

Некоторые полезные и малопонятные параметры (ключи):

— исключить (из операций) файлы, которые (в папке откуда) старее («older»):

— если старее окажется файл в папке куда, то он будет в ней перезаписан — все как обычно

— если файл в папке куда вдруг окажется новее, то он останется нетронутым

ВАЖНО! Файл будет перезаписан (в первом случае), или не затронут (во втором случае) независимо того какой у него размер или атрибуты. Кроме того, если у обрабатываемых файлов есть посторонние внешние жесткие ссылки, то обрабатываемые файлы могут быть неверно прочитаны Robocopy — см

об этом здесь ниже в разделе о .

— исключить (из операций) файлы, которые (в папке откуда) новее («newer»):

— если новее вдруг окажется файл в папке куда, то он будет в ней перезаписан

— если файл в папке куда окажется старее, то он останется нетронутым

ВАЖНО! Файл будет перезаписан (в первом случае), или не затронут (во втором случае) независимо того какой у него размер или атрибуты. Кроме того, если у обрабатываемых файлов есть посторонние внешние жесткие ссылки, то обрабатываемые файлы могут быть неверно прочитаны Robocopy — см

об этом здесь ниже в разделе о .

— исключить (из операций) измененные («changed») файлы:

— только одинаковое время (!) и разный размер означают, что файлы «changed»

— если файлы имеют одинаковое время и разный размер — файл в папке куда останется нетронутым (будет исключен из обработки)

— если файлы имеют разное время то даже разный размер не будет иметь значения, — файл в папке куда НЕ будет считаться «changed» и НЕ будет исключен из обработки (а будет видимо перезаписан).

— атрибуты файлов для этого ключа вообще не важны

ВАЖНО! Если одноименные файлы в папках откуда и куда имеют одинаковые метки времени, одинаковый размер (!), но разное содержимое (а такое тоже бывает), то Robocopy этого к сожалению не увидит — в этом случае его будет интересовать только размер файлов. Так же надо учитывать что посторонние жесткие ссылки на обрабатываемые файлы могут сильно повлиять на достоверность результата, поскольку информация о новом размере файла может отсутствовать (даже если размер был изменен — см

ниже о )

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

— исключить (из операций) «дополнительные» («extra») файлы и папки, — которых НЕТ в папке откуда, но они есть в папке куда.

— исключить (из операций) «одинокие» («lonely») файлы и папки, — которые ЕСТЬ в папке откуда, но отсутствуют в папке куда.

— включить одинаковые («same») файлы, — которые полностью идентичны (по времени, размеру и атрибутам)

— включить «твикнутые» («tweaked») файлы, — которые имеют одинаковый размер и метки времени, но разные атрибуты.

Полезная таблица для понимания классификации файлов в Robocopy:

File        Exists In   Exists In        Source/Dest     Source/Dest   Source/Dest
Class       Source      Destination      File Times      File Sizes    Attributes
=========== =========== ================ =============== ============= ============
Lonely      Yes         No               n/a             n/a           n/a
Tweaked     Yes         Yes              Equal           Equal         Different
Same        Yes         Yes              Equal           Equal         Equal
Changed     Yes         Yes              Equal           Different     n/a
Newer       Yes         Yes              Source > Dest   n/a           n/a
Older       Yes         Yes              Source < Dest   n/a           n/a
Extra       No          Yes              n/a             n/a           n/a
Mismatched  Yes (file)  Yes (directory)  n/a             n/a           n/a

Разбор команд Robocopy — многопоточность Robocopy

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

  • / S — Копируйте подкаталоги, но не пустые.
  • / E — Скопируйте подкаталоги, в которых также есть пустые.
  • / Z — Фактически копируйте файлы в перезапускаемом режиме.
  • / ZB — Использует перезапускаемый режим, если в доступе отказано, используйте режим резервного копирования.
  • / R: 5 — Фактически повторите попытку 5 раз (вы также можете указать другое число, фактически по умолчанию 1 миллион).
  • / Вт: 5 — Подождите 5 секунд, прежде чем повторить попытку (вы также можете указать другое число, по умолчанию 30 секунд).
  • / TBD — Подождите, пока не будут определены имена общих ресурсов (ошибка повтора 67).
  • / NP — Нет прогресса — не отображать процент скопированных.
  • / V — Создавать подробный вывод, показывая также пропущенные файлы.
  • / MT: 32 — Делайте многопоточные копии вместе с n потоками (по умолчанию 8).

FastCopy

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

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

Встроенная функция NonStop делает процесс более удобным (даже при выявлении ошибок процесс будет продолжаться).

Также представлена портативная версия FastCopy Portable, осуществляющая только одну функцию — копирование, но значительно быстрее, чем это делает стандартный Explorer, при этом его даже не нужно устанавливать на компьютер. Достаточно загрузить улиту на флешку и использовать на разных девайсах.

Параметры

Параметр Описание
источник Обязательный параметр. Задает местонахождение и имена файлов для копирования. Параметр должен задавать или диск, или путь.
результат Задает место, куда будут скопированы файлы. Параметр может включать имя диска с двоеточием, имя каталога, имя файла или их комбинацию.
/w Выводит следующее сообщение с ожиданием подтверждения начала копирования: Нажмите любую клавишу, чтобы начать копирование файлов
/p Запрашивает подтверждение при создании каждого файла-результата.
/c Игнорирует ошибки.
/v Проверяет каждый скопированный файл на соответствие его оригиналу.
/q Отменяет вывод на экран сообщений команды xcopy.
/f Выводит имена исходных файлов и файлов-результатов в процессе копирования.
/l Отображает список копируемых файлов.
/g Создает незашифрованные файлы-результаты.
/d Копирует только файлы, измененные не ранее заданной даты. Если не включить значение мм-дд-гггг, команда xcopy копирует все файлы-источники, которые новее существующих файлов-результатов. Эта возможность позволяет обновлять только измененные файлы.
/u Копирует (обновляет) только те файлы-источники, которые уже существуют в каталоге результата.
/i Если источником является каталог или источник содержит подстановочные знаки и результат не существует, команда xcopy считает, что результат — это имя каталога, и создает новый каталог. Затем xcopy копирует все указанные файлы в новый каталог. По умолчанию команда xcopy запрашивает подтверждение, является ли параметр результат каталогом или файлом.
/s Копирует каталоги и подкаталоги, если они не пусты. Если параметр /s не задан, команда xcopy будет работать только с одним каталогом.
/e Копирует все подкаталоги, включая пустые. Параметр /e используется с параметрами /s и /t. /t Копирует только структуру подкаталога (т. е. дерево), а не файлы. Для копирования пустых каталогов следует задать ключ /e.
/k Копирует файлы с атрибутом «только для чтения» с сохранением этого атрибута для скопированных файлов, оригиналы которых имеют этот атрибут. По умолчанию команда xcopy удаляет атрибут «только для чтения».
/r Копирует файлы с атрибутом «только для чтения».
/h Копирует системные и скрытые файлы. По умолчанию команда xcopy не копирует системные и скрытые файлы.
/a Копирует только те файлы, которые имеют установленный атрибут «архивный». При использовании параметра /a атрибут «архивный» у исходных файлов не меняется.
/m Копирует только те файлы, которые имеют установленный атрибут «архивный». В отличие от параметра /a, параметр /m очищает атрибут «архивный» у скопированных файлов.
/n Копирует с использованием коротких имен файловой системы NTFS. Параметр /n требуется при копировании из файловой системы NTFS в файловую систему FAT или когда на диске-результате требуется использование соглашения об именах файлов как в файловой системе FAT (8.3). Файлы могут записываться в файловую систему FAT или NTFS.
/o Копирует сведения о принадлежности файлов и избирательной таблице управления доступом (DACL).
/x Копирует сведения о параметрах аудита файла и системной таблице управления доступом (SACL) (подразумевается наличие /p). /exclude:файл1]] Определяет список файлов, содержащих строки.
/y Устраняет выдачу запроса на подтверждение перезаписи существующего конечного файла.
/-y Выдает запрос на подтверждение перезаписи существующего конечного файла.
/z Копирует по сети в режиме перезапуска.
/? Отображает справку в командной строке.

Путь первый — ROBOCOPY

Данная утилита идет из коробки в Windows 7 и Server 2008. На более старых ОС ее может не оказаться (например, на XP и Server 2003 из коробки ее точно нет). В таком случае можно скачать и установить Windows Server 2003 Resource Kit Tools: вот отсюда

http://www.microsoft.com/download/en/details.aspx?id=17657

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

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5

В данном примере:
Мы копируем папку «исходная папка», находящуюся на локальном диске D:
Мы копируем эту папку на \\192.168.0.1 в папку «целевая папка»
/E : Мы копируем все подпапки и файлы
/Z : Включаем поддержку докачки (на случай обрыва связи)
/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)
/DCOPY:T : Копируем время создания папок
/M : Копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.
/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 миллионы, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.
/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.
Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.
Много больше опций Вы можете почерпнуть из хелпа:

robocopy /?

Чем эта утилита хороша по сравнению с XCOPY:

  • Она умеет работать с файлами, длина имени которых больше 256 символов
  • Она умеет делать зеркало, т.е. чистую синхронизацию, при которой файлы, удаленные в папке-источнике, будут удалены и в папке назначения.

Для того, чтобы зеркалировать папки (т.е. удалять в папке назначения все файлы, которые более не существуют в папке-источнике) — нужно добавить ключ «/PURGE»:

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /E /Z /COPY:TDASO /DCOPY:T /M /PURGE

А вот несколько примеров запуска этой утилитыСкопировать файлы, измененные за последние 5 дней (исключая сегодня):

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /maxage:5 /minage:1

Переместить все файлы (не копировать):

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка /move /e

Копировать только указанные файлы по шаблону

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка *.xls *.doc *.txt /e

Используйте инструмент командной строки Robocopy

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

robocopy source_directory target_directory / MIR

Замените source_directory и target_directory на соответствующие пути к папкам

Обратите внимание, что вам придется заключить его в кавычки, если в пути к папке есть пробелы

Это основная команда, которая вам понадобится. Он имеет только один ключ: / MIR. / MIR представляет собой комбинацию ключей / e и / purge, которые в совокупности копируют все подкаталоги (включая пустые подкаталоги) и удаляют файлы и каталоги, которых больше нет в исходном каталоге. / MIR также перезаписывает параметры безопасности каталога (в отличие от / e), если каталог уже существует.

Просто введите приведенную выше команду в cmd.exe, чтобы это произошло.

Ход выполнения копирования файла будет показан в командном окне. После этого вы получите сводку переданных файлов. Здесь вы увидите, что 2 файла были скопированы, а 1 удален, потому что его не было в исходном каталоге. Только 1 каталог был скопирован, потому что другой каталог был корневым, который уже существовал.

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

Затем все, что вам нужно сделать, это дважды щелкнуть по нему, чтобы запустить его.

С помощью пакетного файла вы также можете автоматизировать его запуск один раз в неделю, ежедневно и т. Д., Аналогично моему предыдущему совету о том, как автоматически просыпаться и спать на компьютере с помощью планировщика задач Windows. Просто замените wake.bat и sleep.bat для mirror.bat.

Выход

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

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

В конце вывода находится таблица с номерами каталогов, файлов и байтов. Для каждого из них в таблице указано общее число, найденное в источнике, число скопированных (включая каталоги с пометкой «New Dir», даже если они не скопированы), число пропущенных (поскольку они уже существуют в целевом объекте) и количество несоответствий , FAILED и доп . «Сбой» может означать, что произошла ошибка ввода-вывода, препятствовавшая копированию файла, или отказано в доступе. Также есть строка затраченного времени (в которой время, потраченное на отказавшие файлы, кажется, не в том столбце).

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

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

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

Чтобы обновить файлы в каталоге \Reports файлами из каталога \Rawdata, измененными после 29 декабря 1993 года, введите:

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

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

Список файлов, которые были бы скопированы, находится в файле Xcopy.out.

Чтобы скопировать каталог \Customer и все подкаталоги \\Public\Address на сетевой диск H, сохранить у файлов атрибут «только для чтения», введите команду:

Чтобы выдать предыдущую команду, убедиться, что команда xcopy создает каталог \Address и устранить вывод сообщение о создании нового каталога, добавьте параметр /i следующим образом:

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

Эта пакетная программа может быть использована для копирования всех файлов каталога C:\Prgmcode и его подкаталогов на диск B следующим образом:

Командный интерпретатор подставляет C:\Prgmcode вместо параметра %1 и B вместо параметра %2, затем использует команду xcopy с параметрами /e и /s. Если при выполнении xcopy произошла ошибка, пакетная программа считывает код завершения и переходит на метку, указанную в соответствующей инструкции IF ERRORLEVEL. В результате на экран выводится сообщение о характере ошибки и осуществляется выход из пакетной программы.

Путь второй – XCOPY

Данная утилита более старая, чем ROBOCOPY, и имеет меньше возможностей. Так, она не поддерживает пути с длинной имени более 256 символов (как это не умело делать FAT) и она не умеет делать зеркалирование. Более того, у нее отмечаются проблемы с копированием прав доступа ACL NTFS, как минимум – при копировании файлов на Samba-сервер.

Вот пример ее запуска:

xcopy "d:\исходная_папка" \2.168.0.1\целевая_папка /D /E /C /I /H /R /K /Y /F /O

Здесь мы:

  • Копируем все файлы из директории “исходная папка”, находящейся на диске “D:”
  • Копируем все файлы на компьютер \\192.168.0.1 в папку “целевая папка”
  • /D : Копируем только измененные файлы (по дате изменения)
  • /E : Копируем подкаталоги, включая пустые
  • /C : Игнорируем ошибки, если они возникли во время копирования, и продолжаем копирование
  • /I : Целевой объект – это папка
  • /H : Копировать скрытые и системные файлы
  • /R : Перезаписываем файлы, предназначенные только для чтения
  • /K : Копируем атрибуты, такие, как “только для чтения”, “архивный”, “системный”, “скрытый”
  • /Y : Не спрашивать подтверждение на перезапись файлов
  • /F : Вывод полных имен исходных и целевых файлов (иначе – только имена файлов, без папок)
  • /O : Если установлен – копировать так-же ACL NTFS атрибуты доступа

По моему личному опыту ROBOCOPY лучше справляется со своей работой, в особенности, если Вы копируете файлы файловой помойки, куда лазят несколько сотен людей – бардака там бывает достаточно и длинна файловых имен с путем нередко больше 256 символов.

Post Views:
3 379

Вывод

В целом, Robocopy работает хорошо для меня. Он синхронизирует мои файлы, чтобы они были доступны для всех устройств в моей сети. И это кажется значительно быстрее, чем SyncToy. Обычно я синхронизируюсь сразу же, когда выполняю импорт, но если я забываю, он запускается один раз в день в 5 часов утра (что составляет около 15 минут, прежде чем я сижу за компьютером первым делом утром).

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: