ROBOCOPY - копируем со всеми атрибутами

  • Михаил
  • 5 мин. на прочтение
  • 2802
  • 11 Dec 2014
  • 05 Feb 2023

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

Применение:: ROBOCOPY источник назначение [файл [файл]…] [Параметры]

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

Назначение :: Конечная папка (диск:путь или \серверобщий ресурспуть).

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

Например:

robocopy C:\ Y:\ file.name /j /mt:32 - скопировать с помощью robocopy файл с диска C на Y с помощью 32 потоков

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

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

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

Все это выполняется в командной строке (Пуск-Выполнить-CMD) или вы можете создать bat скрипт.

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

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /maxage:5 /minage:1

2. Переместить все файлы:

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /move /e

3. Скопировать файлы за исключением скрытых (/xa:h):

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /e /xa:h

или за исключением read-only (/ia:rs):

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /ia:rs

При копировании также можно менять атрибуты файлов, при помощи опции A+ (добавить атрибут) or A- (удалить атрибут). Скопировать все файлы и задать им атрибут read-only:

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /e /A+:r

4. Скопировать все файлы по шаблону (расширению), пустые папки не копировать:

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» *.doc *.ppt /s

5. Скопировать все файлы размером от 1000 до 60000 байт:

robocopy «E:\Documents» «\\NAS\BACKUP\Documents» /e /max:60000 /min:1000

6. Исключить из копирования папку AppData (/XD AppData):

Robocopy «C:\Users\Administrator» «\\NAS\BACKUP\Administrator» /MIR /XA:SH /XD AppData /XJD

7. Создать 32 потока (/MT:32) копирования файлов:

Robocopy «C:\Users\Administrator» \\NAS\BACKUP\Administrator /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32

8. Скопировать файлы из одной папки в другую со стандартными атрибутами исключив файл по расширению (допустим *.doc)

Robocopy » Robocopy «C:\Users\Administrator» «\\server\userbackup» /СOPY:DAT /XF *.doc

Пример использования для бэкапа

1)

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

В данном примере:

Мы копируем папку «исходная папка», находящуюся на локальном диске D:

Мы копируем эту папку на компьютер \\192.168.0.1 в папку «целевая папка»

/E : Мы копируем все подпапки и файлы

/Z : Включаем поддержку докачки (на случай обрыва связи)

/COPY:TDASO : Копируем все атрибуты и ACL прав доступа NTFS (но не копируем атрибуты аудита)

/DCOPY:T : Копируем время создания папок

/M : Копируем только файлы с установленным атрибутом «A — Архивный» и сбрасываем этот атрибут, что позволяет нам копировать только измененные файлы.

/R : Количество повторных попыток копирования файла в случае, если копирование не удалось. Причем «не удалось» срабатывает и в том случае, если доступ к файлу закрыт. По-умолчанию = 1 миллионы, т.е. бесконечно, потому копирование благополучно встанет на первом же файле, к которому не будет доступа.

/W : Задержка в секундах между попытками копирования. По-умолчанию = 30 секундам.

/MT — кол-во потоков, увеличив которые можно ускорить копирование. Будет быстрее чем обычное копирование файла точно.

Заметка. Очень рекомендую задавать вручную параметры /R и /W, иначе при автоматической синхронизации она попросту зависнет, встретив на своем пути ошибку доступа.

2) Похожий пример , но обратите внимание — каждый раз бэкап копируется в папку с названием даты и времени. Очень удобно для создание добавочного бэкапа.

robocopy D:\исходная_папка \\192.168.0.1\целевая_папка\%date:~0,2%.%date:~3,2%.%date:~6,4%.%time:~0,2%-%time:~3,2% /E /Z /COPY:TDASO /DCOPY:T /M /R:2 /W:5

%date:~0,2%.%date:~3,2%.%date:~6,4%.%time:~0,2%-%time:~3,2% - дата и время создание бэкапа в качестве названия папки. В итоге получается папка вида 16.01.2016-10.19

Или так — %date:~6,4%-%date:~3,2%-%date:~0,2%_%time:~0,2%-%time:~3,2% Результат — 2016-03-13_23-30

Много интересного вы также сможете узнать набрав команду set /?

Формат даты в командной строке:

@echo off
set day=%DATE:~0,2%
set month=%DATE:~3,2%
set year=%DATE:~6,4%
set hour=%TIME:~0,2%
set minute=%TIME:~3,2%
set second=%TIME:~6,2%
echo %day%
echo %month%
echo %year%
echo %hour%
echo %minute%
echo %second%
set YYYYMMDD=%year%%month%%day%
echo %YYYYMMDD%