Robocopy копирование только новых файлов

Обновлено: 05.07.2024

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

могу ли я использовать ROBOCOPY для этого? Существует список вариантов исключения, который:

  • / XC :: исключить измененные файлы.
  • / XN :: исключить новые файлы.
  • /XO:: исключить старые файлы.
  • / XX:: исключить дополнительные файлы и каталоги.
  • / XL:: исключить одиночные файлы и каталоги.

Что именно означает исключить? Исключить копирование или перезапись? Например, если бы я написал:

ROBOCOPY C:SourceFolderABC - . dll D:DestinationFolder / XO

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

или есть лучший инструмент для этого?

чтобы ответить на все ваши вопросы:

могу ли я использовать ROBOCOPY для этого?

Да, RC должен соответствовать вашим требованиям (простота, только скопируйте то, что нужно)

что именно означает исключить?

Это исключит копирование-RC называет это пропуск

Б /XO опция копировать только новые файлы, а не файлы того же возраста?

Да, RC будет копировать только новые файлы. Файлы того же возраста будут пропущены.

(правильная команда будет robocopy C:\SourceFolder D:\DestinationFolder ABC.dll /XO )

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

вы можете использовать robocopy для копирования файлов с флагом архива и сброса атрибута. Используйте командную строку /M, это мой сценарий резервного копирования с несколькими дополнительными трюками.

этот скрипт должен NirCmd инструмент для перемещения мыши, чтобы моя машина не засыпала. Скрипт использует lockfile, чтобы сообщить, когда сценарий резервного копирования завершен и mousemove.bat скрипт закрыт. Эту часть вы можете опустить.

другое 7-Zip инструмент для разделения virtualbox файлы меньше, чем файлы 4GB, моя папка назначения по-прежнему FAT32, поэтому это обязательно. Я должен использовать диск NTFS, но еще не преобразовал резервные диски.

резервное копирование-robocopy.летучая мышь!--15-->

резервное копирование-robocopy-работа.rcj

резервное копирование-robocopy-movemouse.летучая мышь!--15-->

выглядит так: /e опция-это то, что вам нужно, она пропустит те же файлы/каталоги.

Если вы запустите команду дважды, вы увидите, что второй раунд намного быстрее, так как он пропускает много вещей.

Robocopy разработана для отказоустойчивого копирования каталогов и деревьев каталогов. Она обладает возможностью копирования всех (или выборочных) NTFS атрибутов и свойств, имеет дополнительный код для перезапуска при применении с сетевым соединением в случае его разрывов.
На сайте Microsoft доступна другая утилита RichCopy со схожими функциями.

Источник - Исходная папка (диск:\путь или \\сервер\общий ресурс\путь).
Назначение - Конечная папка (диск:\путь или \\сервер\общий ресурс\путь).
Файл - Копировать файлы (имена и подстановочные знаки: по умолчанию «*.*»).

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

/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 ErrorLevel

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

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, потом через планировщик задач хотел сделать постоянное исполнение. Подскажите, как правильно написать команду, я не силен в программировании, не знаю, как правльно указать сетевое имя, спасибо заранее. Иван

Что такое robocopy?

Это утилита командной строки Windows для копирования файлов из одной папки в другую. Причем, это не просто копирование, утилита выполняет репликацию. К сожалению, у меня нет опыта использования этой утилиты, но я так понимаю, что это что-то вроде rsync в unix. Это очень удобно для создания резервных копий (бэкапов), например.

Примеры использования 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).

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

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

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

Параметры задания:

/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

Для автоматизации, конечно, это не подходит, но оказалось что есть и такое.

Графический интерфейс для утилиты robocopy

А здесь кратко суть:

У традиционных функций копирования и вставки, встроенных в Microsoft® Windows® есть некоторые ограничения. Эти функции довольно хорошо подходят для решения простых задач (перемещение документа из одной директории в другую и т.д.), но им не хватает дополнительных возможностей, которые необходимы IT-специалисту в рабочей области. Например, операция копирования и вставки не предусматривает никакой возможности надежного восстановления, что позволило бы обеспечить восстановление файлов при коротком сетевом сбое. Такая схема построена на принципе “всё или ничего”, особенно при копировании целых каталогов. Посредством пользовательского интерфейса (UI) вы не можете выбрать для копирования только новые или обновленные файлы. Вы либо копируете отдельные файлы, целые каталоги, либо вообще ничего. Введение в Robocopy. Этот мощный инструмент, включенный в Microsoft Windows Server® 2003 Resource Kit Tools, включает все эти новые функции и даже больше. Robocopy обеспечивает выполнение более серьезных задач по копированию файлов, которые могут действительно облегчить вашу работу. Самым большим достоинством, как мне кажется, будет для вас возможность создания полных зеркальных копий двух файловых структур (включая все вложенные каталоги и файлы, по вашему выбору), не копируя каких-либо ненужных файлов. Будут копироваться только новые или обновленные файлы из их исходного местоположения. Robocopy также позволяет сохранять всю соответствующую информацию о файле, включая дату и время изменения, списки управления доступом (ACL) и т.п. Microsoft

Что подтверждает обозначенную в самом начале догадку, что это похоже на rsync из мира Linux. Я именно его использую для своего генератора скриптов бэкапирования. Значит, можно построить аналогичный скрипт для windows на базе robocopy.

Admin

Читайте также: