Читатель сайта, Иван, прислал такой вопрос:
Что такое robocopy?
Это утилита командной строки Windows для копирования файлов из одной папки в другую. Причем, это не просто копирование, утилита выполняет репликацию. К сожалению, у меня нет опыта использования этой утилиты, но я так понимаю, что это что-то вроде rsync в unix. Это очень удобно для создания резервных копий (бэкапов), например.
Примеры использования robocopy
Вообще синтаксис команды прост. Указывается исходная папка и конечная для репликации. Если копируете в сетевое хранилище — то сначала пишется имя хоста. Стандартно сетевой путь начинается с двух обратных слешей:
robocopy C:\folder \\backupserver\backup
Можно копировать даже с одного сервера на другой :
robocopy \\myServer\myFolder\myFile.txt \\myOtherServer\myOtherFolder
(Такой «финт» например недоступен для утилит unix — rsync, scp. При копировании через SSH только одна сторона может быть удаленной — либо исходник, либо цель) Другие примеры можно посмотреть на страничке утилиты в wiki.
Полное описание опций утилиты
На просторах интернетов нашлась вот такая шикарная табличка, которая даёт исчерпывающую информацию по использованию утилиты:
ROBOCOPY Синтаксис
ROBOCOPY источник назначение [файл [файл]…] [Параметры]
Источник:: Исходная папка (диск:\путь или \\сервер\общий ресурс\путь).
Назначение :: Конечная папка (диск:\путь или \\сервер\общий ресурс\путь).
Файл :: Копировать файлы (имена и подстановочные знаки: по умолчанию «*.*»).
До версии Windows Vista поставлялась как часть пакета Resource Kit. Начиная с Windows Vista представлена как стандартный компонент.
Параметры копирования
/S | Копировать вложенные папки, кроме пустых. |
/E | Копировать вложенные папки, включая пустые. |
/LEV:n | Копировать только верхние n уровней исходного дерева папок. |
/Z | Копирование файлов с возобновлением. |
/B | Копирование файлов в режиме архивирования. |
/ZB | используется режим с возобновлением; если доступ запрещен, используется режим архивации. |
/EFSRAW | Копирование всех зашифрованных файлов в режиме EFS RAW. |
/COPY:флаги копирования | что копируется для файлов (по умолчанию /COPY:DAT). (флаги копирования: D=Данные, A=Атрибуты, T=Метки времени). (S=Безопасность=NTFS ACLs, 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:hhmm-hhmm | Часы запуска — время, когда можно запускать новое копирование. |
/PF | Проверять часы запуска по файлам (не по проходам). |
/IPG:n | Интервал между пакетами (мс) для снижения нагрузки на сеть при низкоскоростных подключениях. |
/SL | копирование самих символических ссылок вместо копирования целевого объекта этих ссылок. |
Параметры выбора файлов
/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 — дата в формате ДДММГГГГ). |
/XJ | исключить точки соединения. (по умолчанию обычно включаются). |
/FFT | Использовать время файлов FAT (двухсекундная точность). |
/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:файл | Записывать состояние в файл журнала (перезаписывать существующий журнал). |
/LOG+:файл | Записывать состояние в файл журнала (добавлять к существующему журналу). |
/UNILOG:файл | Записывать состояние в файл журнала в формате Юникод (перезаписывать существующий журнал). |
/UNILOG+:файл | Записывать состояние в файл журнала в формате Юникод (добавлять к существующему журналу). |
/TEE | Направлять выходные данные в окно консоли и в файл журнала. |
/NJH | Без заголовка задания. |
/NJS | Без сведений о задании. |
/UNICODE | Cостояние вывода в формате Юникод. |
Параметры задания:
/JOB:имя_задания | Взять параметры из указанного файла задания. |
/SAVE:имя_задания | Сохранить параметры в указанный файл задания |
/QUIT | Выйти после обработки командной строки (для просмотра параметров). |
/NOSD | Не указывается исходная папка. |
/NODD | Не указывается папка назначения. |
/IF | Включить следующие файлы. |
Заметки
Утилита robocopy («Robust File Copy» = «надежное копирование файлов») упрощает задачу резервного копирования большого количества файлов.
Она позволяет копировать только изменившиеся файлы, что дает значительное ускорение при постоянном резервном копировании. Изменение файла определяется по его дате, размеру и атрибутам.
При копировании данных с Windows систем на устройства сетевого хранения (NAS) может возникнуть ситуация, что ваш NAS не поддерживает точность времени создания файлов, принятую в NTFS (100 наносекунд). Это может привести к тому, что идентичные файлы будут квалифицированы как разные, что вызовет необходимость копирования. Параметр /FFT заставляет сравнивать метки создания файлов с двухсекундной точностью. Это может позволить избежать копирования одинаковых файлов.
Примеры
ROBOCOPY \\Server1\reports \\Server2\backup
Простое копирование
ROBOCOPY \\Server1\reports \\Server2\backup *.* /E
Копирование с поддиреториями
ROBOCOPY C:\work /MAX:33554432 /L
Список всех файлов в папке, размер которых более 32М
Графический интерфейс для robocopy
Для автоматизации, конечно, это не подходит, но оказалось что есть и такое.
Подробное описание доступно на сайте Microsoft.
А здесь кратко суть:
Что подтверждает обозначенную в самом начале догадку, что это похоже на rsync из мира Linux. Я именно его использую для своего генератора скриптов бэкапирования. Значит, можно построить аналогичный скрипт для windows на базе robocopy.
есть у меня такой фрагмент БАТника
forfiles /p «G:\Backup» /S /D -7 /C «cmd /c del /f /a /q @file»
forfiles /p «W:\» /S /D -14 /C «cmd /c del /f /a /q @file»
где G — локальный диск, а W это сетевая шара которая маунтится
net use w: \\fs\1c8_bup /user:1c8 pass /persistent:no
так вот удаление файлов (старше 7 дней) с локального диска G происходит на ура, а вот удаление файлов (старше 14 дней) с шары — нет
в логе ошибок нет
ЧЯДНТ ??
Комментарий на отдельной страницеМожет проблемы с правами? обычное удаление батник может делать?
Комментарий на отдельной страницеЗдравствуйте, надеюсь на Вашу помощь т.к. юзер-ламер )
Комментарий на отдельной страницеСуть задачи такова: Некое ПО создаёт раз в 30 минут две папки с одинаковым набором и названием файлов. Меня интересуют только файлы result.xml и необходимо чтобы эти два файла оказались в другой папке, например С:/In и были обработаны другим ПО. Если бы папки создавались хоть с каким-то временным лагом я бы разобрался как это сделать, а здесь они будут перезаписаны последним как я понимаю….Есть ли способ решения этой задачи? Конечные имена файлов в папке С:/In могут быть любыми.
Заранее спасибо, с уважением и надеждой )
Толком не понял в чем задача, и не понял в чем проблема. Так и копируйте свой result.xml с разными именами, если это можно, да и всё)
Комментарий на отдельной страницеРебят, кто хорошо разбирается в robocopy скажите мне что будет в моей ситуации?
имеем папки и файлы снимаю зеркальную копию на внешний_диск_1
через какое-то время делаю новый бекап зеркальной копии на внешний_диск_2
что будет потом если я по очереди буду подсовывать диск_1 и диск_2???
очень прошу помощи…
Комментарий на отдельной страницеДоброго времени суток, скорее всего перезапишит ваши копии
Комментарий на отдельной страницеЗдравствуйте!
Комментарий на отдельной страницеПодскажите вариант решения следующей задачи: Имеется папка с файлами и подпапками. Необходимо перенести в другую папку все файлы, которые старше 3х (дата создания) дней от текущей даты. Команда: robocopy «C:\Temp\1» «C:\Temp\3» /minage:3 /copy:dat /mov /s /R:10 /W:30 переносит все файлы, дата РЕДАКТИРОВАНИЯ которых больше трех дней, а мне нужно что-бы отсчет от даты СОЗДАНИЯ был, т.к. помещенный новый файл в директорию 1 будет иметь дату создания текущую, а дата редактирования может быть намного позднее (дата создания 24.10.2019, дата редактирования 05.10.2019) robocopy может так сделать?
Скрипт копировать с папки1( много других папок с *.png файлами ) в папку2 (с такими же папками как в папки 1 ) файлы с расширением png соблюдая директорию.
Комментарий на отдельной страницеУ каждого png Оригинальное имя. пример: Папка1\папка 43RFO\ 43fg1.png. Обновленная картинка появилась в папке2\папка 43RFO\ 43fg1.png и нужно скопировать и заменить его а затем удалить с папке2\папка 43RFO\ 43fg1.png. Но есть вероятность что файл 43fg1.
Может сменить папку но не корневую
Пример: Раньше файл находился Папка1\папка 43RFO\ 43fg1.png. После обновления он сменил папку что отражаеться в папке2\папка 55RFO\ 43fg1.png и теперь нужно переместить файл в новую удалив ее из папки2 и с папке2\папка 55RFO\ 43fg1.png и Папка1\папка 43RFO\ 43fg1.png так как он теперь в папке2\папка 55RFO\ 43fg1.png а если папки папке2\папка 55RFO нет создать его. Как я писал ранее имена файлов уникальные и не повторяються.
Прошу помочь в Powershell либо cmd нужен именнно скрипт
Спасибо