Перейти к содержимому

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

  • автор:

Использование Robocopy для синхронизации и резервного копирования файлов, примеры

date

25.11.2020

user

insci

directory

Windows 10, Утилиты

comments

комментариев 19

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

Основные возможности Robocopy

Кроме обычного копирования файлов и папок из папки источника в каталог назначения, в Robocopy есть множество очень полезных функций:

  • Устойчивость к обрывам сети (robocopy может продолжить копирования после восстановления сетевого доступа);
  • Корректное копирование файлов с их атрибутами и NTFS правами доступа;
  • Копирование с сохранением исходной временной метки;
  • Возможность копирования файлов и директорий, запрещенных для доступа даже администратору, с помощью ключа /B (ключ позволяет игнорировать проверку прав доступа, ключ доступен только для участников группы Администраторы или Операторы архива);
  • Возможность задать количество попыток копирования файла, если файл недоступен;
  • Режим полного зеркалирования директорий;
  • Пропуск уже существующих файлов (с одинаковым размером или временной меткой timestamp);
  • Индикатор прогресса копирования;
  • Корректная работа с длинными путями (более 260 символов);
  • Эффективные алгоритмы и многопоточность позволяют выполнять копирование файлов намного быстрее, чем обычное копирование средствами Windows;

Официальной графической версии robocopy (c GUI) от Microsoft нет. Существуют пользовательские версии, но их поддержка прекращена. Список неофициальных GUI для robocopy (это сторонние программы):

Синтаксис и параметры robocopy

Robocopy имеет много параметров, которые на первый взгляд могут показаться сложными, но имея под рукой документацию, вы с легкостью разберетесь и сможете править скрипты под себя.

Синтаксис robocopy состоит из двух обязательных параметров (исходный и целевой каталог) и двух необязательных (фильтр файлов и параметры):

robocopy [фильтр файлов] [параметры]

Поддерживаются как локальные пути, так и UNC, например, \\server\directory

Полный синтаксис утилиты robocopy (все параметры и их описания) доступны по команде:

использование утилиты robocopy в windows для копирование и синхронизации файлов и каталогов

Исполняемы файл robocopy.exe находится в каталоге C:\Windows\System32.

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

Для тестирование различных команд robocopy без выполнения операций (копирования, перемещения или удаления) с файлами используется параметр /L . Данный параметр вернет список файлов и папок, которые будут скопированы вашей командой.

Использование robocopy для зеркалирования каталогов

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

robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ *.txt /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log

  • \\testnode1\C$\source\ — исходный каталог, откуда копируются файлы
  • \\testnode2\C$\dest\ — каталог назначения, куда скопируются файлы
  • *.txt – фильтр файлов. Синхронизируются только .txt файл и директории.
  • /MIR – полное зеркалирование данных в source и dest директориях. Файлы, удаленные из source директории или не присутствующие в ней, также будут удалены из dest. Если вы хотите, чтобы удаленные из source файлы оставались в dest, то поменяйте параметр /MIR на /E
  • /COPYALL – копирует всю информацию о файле (Атрибуты, параметры безопасности и т.д.). Как альтернатива, можно применять флаг /COPY:DT для копирования timestamp, а не всей информации. /COPALL требует прав администратора
  • /Z – robocopy продолжит копирование файла при обрыве. Полезно при копировании больших файлов (неплохая альтернатива копированию файлов по BITS)
  • /B – позволяет robocopy избегать ошибки access denied error. В этом режиме robocopy игнорирует все права на файлы, которые могли бы помешать прочитать/записать файл. Этот режим требует прав администратора либо участие в группе Операторы архива
  • /J – Копирование без буфера (файлового кэша, оперативной памяти). Эффективно для больших файлов.
  • /R:3 – количество попыток скопировать недоступный файл. Значение по умолчанию – миллион, поэтому необходимо его сменить.
  • /W:1 – секунды между попытками скопировать недоступный файл. Значение по умолчанию – 30 секунд.
  • /REG – сохранить текущие значения ключей /R и /W в реестр как стандартные, для будущих вызовов robocopy.
  • /TEE – разделение вывода работы команды и в лог файл, и в консоль. При фоновом вызове robocopy (например, из планировщика задача) этот параметр можно убрать, оставив только /LOG
  • /LOG – путь к файлу лога

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

При копировании больших файлов (более 2 Гб) с некоторых iSCSI/SAN томов, процесс robocopy может существенно использовать оперативную память сервера. Проблем обычно связано с тем, что для данного LUN в настройках RAID используется write-through кэширование вместо write-back.

Инкрементальное копирование с помощью robocopy

Сам по себе robocopy не может полностью обеспечить инкрементальное резервное копирование каталога (копирование новых и измененных файлов), для этого мы будем использовать небольшой bat скрипт:

@echo off set date_=%date:/=-% set source=C:\source set dest=\\testnode2\C$\dest\%date_% mkdir %dest% robocopy "%source%" "%dest%" /maxage:1 /E /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+: /LOG+:%appdata%\robocopy.log @echo on
  • set date_=%date:/=-% — эта строчка присваивает значение переменной date_ в формате DD.MM.YYYY
  • /maxage:1 — Максимальный возраст файла. Исключает файлы старше N дней или даты. Дата указывается в формате YYMMDD, например, /maxage:20200421
  • /E – копирует подпапки, без ограничения уровня вложенности. Для контроля уровня вложенности директорий можно использовать параметр /lev, например, /lev:3

Инкрементальность осуществляется за счёт параметра /maxage:1 — файлы старше суток копироваться не будут. Для первого, “базового” копирования, можно выполнить этот скрипт без параметра /maxage.

Заметка. Если файловые системы source или dest не являются NTFS, используйте ключ /FFT , так как на других файловых системах (включая эмулированные NTFS) может возникнуть ошибка, из-за которой robocopy будет видеть старые файлы как измененные, из-за отличий в метке времени.

Robocopy: перемещение файлов

С помощью ключа /mov или /move вы можете переместить файлы (а точнее удалить успешно скопированные файлы из исходной директории):

robocopy C:\source\ F:\dest\ /MOVE /E /COPYALL /Z /B /J /R:3 /W:1 /REG /TEE /LOG+:%appdata%\robocopy.log

  • /MOVE – удалить файлы и директории из исходной папки, после того как они были скопированы. Имейте в виду, что этот ключ нужно использовать вместе с /E или /S, в противном случае вы перенесете только файлы, но не директории. Если вы хотите перенести только файлы, используйте ключ /MOV

Примечание. Поведение robocopy при использовании ключей /MOVE и /MOV не интуитивно.

  • Если вы используете ключ /MOVE с ключом /E, то вы перенесете все файлы, директории (включая файлы внутри них) и пустые директории. Файлы и директории удалятся из исходной папки. /MOVE с /S даст такой же результат, но пустые директории не перенесутся и будут удалены.
  • Если вы используете ключ /MOV с ключом /E, то вы перенесете все файлы, включая те, которые находятся в директориях и поддиректориях, также скопируются все директории (включая пустые), но они не будут удалены из исходного каталога, в отличие от файлов. Используя /MOV с /S, вы получите такой же результат, но пустые директории не будут скопированы.

Пример использование robocopy в планировщике задач

Для примера возьмём задачу: нам необходимо с помощью robocopy регулярно синхронизировать содержимое сетевой папки между двумя серверами с ведением логов.

  • Исходный путь — \\testnode1\C$\source
  • Целевая директория- \\testnode2\C$\source

Запустите командную строку с правами администратора и введите: compmgmt.msc

Перейдите в System Tools -> Task Scheduler Library. Создайте новое задание планировщика (Create task).

создать задание планировшика robocopy

Укажите имя задания, и выберите пользователя из-под которого будет выполняться задание. Пользователь должен иметь доступ на чтению и запись в обоих каталогах (при копировании по сети между серверами домена можно использовать аккаунт System, в этом случае нужно предоставить на целевой каталог права RW для объекта computer сервера-источника) .

Выберите опцию Run whether user is logged on or not, для того чтобы задание выполнялось в фоновом режиме. Также отметьте Run with highest privileges. Эта опция сработает если аккаунт из-под которого выполняется задание, будет иметь права администратора.

задание зеркалирования robocopy

Перейдите на вкладку Triggers и создайте новый триггер.

Выберите параметр On a schedule (по расписанию), выберите время начала и отметьте Repeat task every, указав интервал выполнения. В моём случае это 5 минут – каждые 5 минут, начиная с часа дня 22 апреля (обязательно измените эту дату на ту, которая нужна вам), директории будут синхронизированы. В for a duration of поставьте Indefinitely (бесконечно)

расписание запуска

Перейдите во вкладку Actions и нажмите New

Выберите Start a program, и укажите путь к .bat скрипту.

@echo off robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:C:\robocopy.log @echo on

Помимо журнала выполнения задания планировщика, robocopy будет писать собственный лог файл копирования в C:\robocopy.log. Если аккаунт из-под которого будет выполняться скрипт не имеет прав администратора, смените C:\robocopy.log на нужный вам путь.

запуск команды robocopy через планировшик

Остальные настройки заполнять не надо. После нажатия на кнопку ОК, вас попросит ввести пароль от учетной записи, которую вы выбрали для запуска задания.

события запуска задания планировщика

Если вы всё настроили правильно, директории должны начать синхронизироваться.

Если у вас возникли проблемы с выполнением скрипта, то обязательно проверьте вкладку History вашей задачи

журнал запуска планировщика robocopy

Отслеживание изменений в каталогах с помощью robocopy

В robocopy есть встроенный механизм отслеживания изменений в исходном каталоге (и их последующего копирования) и встроенный планировщик – параметры /mon и /mot .

  • /mon:N – проверяет исходную директорию на предмет изменений каждую 1 минуту, и если изменений в директории больше чем N, то будет произведено копирование в целевую директорию. Если задан параметр /mot:Y, то изменения будут проверяться каждые Y минут.
  • /mot:N – проверяет исходную директорию на предмет изменений каждые N минут. Минимальное значение N = 1, в минутах. Если параметр /mon не задан, то будет считаться что /mon:1

.bat скрипт для зеркалирования с отслеживанием изменений с интервалом в 1 минуту. Этот скрипт нужно запускать из-под аккаунта с правами администратора.

@echo off robocopy \\testnode1\C$\source\ \\testnode2\c$\dest\ /MIR /COPYALL /Z /B /J /R:3 /W:1 /REG /LOG+:%appdata%\robocopy.log /mon:1 /mot:1

Плюсы:

  • Не нужно создавать задание в планировщике задач
  • Подходит для непостоянного выполнения. Например, в течение нескольких часов, в таком случае запустить скрипт руками через CMD проще, чем создавать задание в планировщике

Минусы:

  • Чтобы запустить .bat скрипт в фоновом режиме, нужно либо использовать VBS скрипт, либо стороннее ПО, например, NirCmd.
  • Минимальный интервал поиска изменений и копирования – 1 минута. Для меньшего интервала нужно использовать PowerShell или bat скрипт.

Коды возврата (ошибки) robocopy

Ниже приведены стандартные коды возврата robocopy, которые можно использовать для обработки различных ошибок, которые возвращает утилита после выполнения действия копирования (кот возврата эта битовая маска).

Hex Decimal Meaning if set
0x00 0 No errors occurred, and no copying was done. The source and destination directory trees are completely synchronized.
0x01 1 One or more files were copied successfully (that is, new files have arrived).
0x02 2 Some Extra files or directories were detected. No files were copied Examine the output log for details.
0x04 4 Some Mismatched files or directories were detected. Examine the output log. Housekeeping might be required.
0x08 8 Some files or directories could not be copied (copy errors occurred and the retry limit was exceeded). Check these errors further.
0x10 16 Serious error. Robocopy did not copy any files. Either a usage error or an error due to insufficient access privileges on the source or destination directories.
Коды возврата могут комбинироваться:
0x03 3 (2+1) Some files were copied. Additional files were present. No failure was encountered.
0x05 5 (4+1) Some files were copied. Some files were mismatched. No failure was encountered.
0x06 6 (4+2) Additional files and mismatched files exist. No files were copied and no failures were encountered. This means that the files already exist in the destination directory
0x07 7 (4+1+2) Files were copied, a file mismatch was present, and additional files were present.

Любое значение больше 7 говорит о том, что при копировании через robocopy возникла ошибка. Вы можете обрабатывать эти ошибки в bat файле:

if %ERRORLEVEL% EQU 16 echo ***FATAL ERROR*** & goto end
if %ERRORLEVEL% EQU 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 14 echo FAIL + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 13 echo OKCOPY + FAIL + MISMATCHES & goto end
if %ERRORLEVEL% EQU 12 echo FAIL + MISMATCHES& goto end
if %ERRORLEVEL% EQU 11 echo OKCOPY + FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 10 echo FAIL + XTRA & goto end
if %ERRORLEVEL% EQU 9 echo OKCOPY + FAIL & goto end
if %ERRORLEVEL% EQU 8 echo FAIL & goto end
if %ERRORLEVEL% EQU 7 echo OKCOPY + MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 6 echo MISMATCHES + XTRA & goto end
if %ERRORLEVEL% EQU 5 echo OKCOPY + MISMATCHES & goto end
if %ERRORLEVEL% EQU 4 echo MISMATCHES & goto end
if %ERRORLEVEL% EQU 3 echo OKCOPY + XTRA & goto end
if %ERRORLEVEL% EQU 2 echo XTRA & goto end
if %ERRORLEVEL% EQU 1 echo OKCOPY & goto end
if %ERRORLEVEL% EQU 0 echo No Change & goto end
:end

Утилита robocopy имеет огромный функционал и позволяет гибко настроить операции копирования. Как альтернативу robocopy в PowerShell можно использовать командлет Copy-Item, который хоть и менее функционален, но работает с объектной моделью PowerShell, что может быть важно, если вы часто используете PowerShell или используете цепочки автоматизации с другими языками программирования.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Копирование новых и измененных файлов с учетом атрибута LastModifiedDate в Фабрике данных Azure

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

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

Информация о шаблоне решения

Этот шаблон сначала выбирает новые и измененные файлы только по их атрибуту LastModifiedDate, а затем копирует их из исходного хранилища данных в целевое.

Шаблон содержит одно действие:

  • Копировать — копирует новые и измененные файлы только по их атрибуту LastModifiedDate из хранилища файлов в целевое хранилище.

В шаблоне определены шесть параметров:

  • FolderPath_Source — путь к папке, в которой можно считать файлы из исходного хранилища. Вам нужно заменить значение по умолчанию на правильный путь к папке.
  • Directory_Source — путь к вложенной папке, в которой можно считать файлы из исходного хранилища. Вам нужно заменить значение по умолчанию на правильный путь к вложенной папке.
  • FolderPath_Destination — путь к папке в целевом хранилище, в которую нужно скопировать файлы. Вам нужно заменить значение по умолчанию на правильный путь к папке.
  • Directory_Destination — путь к вложенной папке в целевом хранилище, в которую нужно скопировать файлы. Вам нужно заменить значение по умолчанию на правильный путь к вложенной папке.
  • LastModified_From — используется для выбора файлов, у которых значение атрибута LastModifiedDate больше или равно этому значению даты и времени. Чтобы выбрать только новые файлы, которые не были скопированы в последний раз, в качестве этого значения даты и времени можно использовать время последней активации конвейера. Вы можете заменить значение по умолчанию «2019-02-01T00:00:00Z» ожидаемым значением LastModifiedDate в часовом поясе UTC.
  • LastModified_To — используется для выбора файлов, у которых значение атрибута LastModifiedDate меньше этого значения даты и времени. Чтобы выбрать только новые файлы, которые не были скопированы в последний раз, в качестве этого значения даты и времени можно использовать текущее время. Вы можете заменить значение по умолчанию «2019-02-01T00:00:00Z» ожидаемым значением LastModifiedDate в часовом поясе UTC.

Использование шаблона решения

  1. Перейдите к шаблону Copy new files only by LastModifiedDate (Копировать новые файлы только по LastModifiedDate). Создайте новое подключение к целевому хранилищу. Это хранилище, в которое требуется скопировать файлы. Create a new connection to the source
  2. Создайте новое подключение к исходному хранилищу. Это хранилище, из которого нужно копировать файлы. Create a new connection to the destination
  3. Выберите Использовать этот шаблон. Use this template
  4. На панели откроется доступный конвейер, как показано в следующем примере: Show the pipeline
  5. Выберите пункт Отладка, запишите значения в разделе Параметры и нажмите кнопку Готово. На рисунке ниже параметры установлены следующим образом:
    • FolderPath_Source = sourcefolder
    • Directory_Source = subfolder
    • FolderPath_Destination = destinationfolder
    • Directory_Destination = subfolder
    • LastModified_From = 2019-02-01T00:00:00Z
    • LastModified_To = 2019-03-01T00:00:00Z

В примере показано, что файлы, которые были в последний раз изменены в этом интервале (от 2019-02-01T00:00:00Z до 2019-03-01T00:00:00Z), будут скопированы из исходной папки sourcefolder/subfolder в целевую destinationfolder/subfolder. Вы можете заменить эти значения своими.

Run the pipeline

  • Просмотрите результаты. Вы увидите, что в целевое хранилище скопированы только те файлы, которые были изменены в заданном интервале времени. Review the result
  • Теперь можно добавить периодический триггер для автоматизации этого конвейера, чтобы конвейер всегда периодически копировал новые и измененные файлы только с учетом атрибута LastModifiedDate. Выберите Добавить триггер, а затем — New/Edit (Создать или изменить). Screenshot that highlights the New/Edit menu option that appears when you select Add trigger.
  • В окне Add Triggers (Добавление триггеров) выберите + Создать.
  • Выберите тип триггера Tumbling Window (Периодический) и установите периодичность Каждые 15 минут(здесь можно задать любой интервал). Для параметра «Активировано» установите значение Да и нажмите кнопку ОК. Create trigger
  • В разделе Trigger Run Parameters (Параметры запуска триггера) задайте значения, как указано ниже, и нажмите кнопку Готово.
    • FolderPath_Source = sourcefolder. Вы можете заменить это значение папкой в своем исходном хранилище данных.
    • Directory_Source = subfolder. Вы можете заменить это значение вложенной папкой в своем исходном хранилище данных.
    • FolderPath_Destination = destinationfolder. Вы можете заменить это значение папкой в своем целевом хранилище данных.
    • Directory_Destination = subfolder. Вы можете заменить это значение вложенной папкой в своем целевом хранилище данных.
    • LastModified_From = @trigger().outputs.windowStartTime. Это системная переменная из триггера, определяющая время, когда конвейер был активирован в последний раз.
    • LastModified_To = @trigger().outputs.windowEndTime. Это системная переменная из триггера, определяющая время, когда конвейер активирован в этот раз.

    Input parameters

  • Выберите Опубликовать все. Publish All
  • Создайте новые файлы в исходной папке исходного хранилища данных. Теперь нужно подождать, когда конвейер автоматически запустится и скопирует в целевое хранилище только новые файлы.
  • В области навигации слева выберите вкладку Мониторинг и подождите примерно 15 минут, если для триггера задано повторение каждые 15 минут.
  • Просмотрите результаты. Вы увидите, что конвейер будет автоматически активироваться каждые 15 минут, и при каждом его выполнении из исходного хранилища в целевое будут скопированы только новые или измененные файлы. Screenshot that shows the results that return when the pipeline is triggered.
  • Связанный контент

    Команда XCOPY — копирование файлов и каталогов.

    Команда XCOPY используется для копирования файлов и каталогов с сохранением их структуры. По сравнению с командой COPY имеет более широкие возможности и является наиболее гибким средством копирования в командной строке Windows

    Формат командной строки:

    XCOPY источник [целевой_объект] [/A | /M] [/D[:дата]] [/P] [/S [/E]] [/V] [/W] [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/EXCLUDE:файл1[+файл2][+файл3]. ]

    Параметры командной строки:

    источник — Копируемые файлы.

    целевой_объект — Расположение или имена новых файлов.

    /A — Копирование только файлов с установленным архивным атрибутом; сам атрибут при этом не изменяется.

    /M — Копирование только файлов с установленным архивным атрибутом; после копирования атрибут снимается.

    /D:m-d-y — Копирование файлов, измененных не ранее указанной даты. Если дата не указана, заменяются только конечные файлы, более старые, чем исходные.

    /EXCLUDE:файл1[+файл2][+файл3]. — Список файлов, содержащих строки с критериями для исключения файлов и папок из процесса копирования. Каждая строка должна располагаться в отдельной строке файла. Если какая-либо из строк совпадает с любой частью абсолютного пути к копируемому файлу, такой файл исключается из операции копирования. Например, указав строку \obj\ или .obj, можно исключить все файлы из папки obj или все файлы с расширением OBJ соответственно.

    /P — Вывод запросов перед созданием каждого нового файла.

    /S — Копирование только непустых каталогов с подкаталогами.

    /E — Копирование каталогов с подкаталогами, включая пустые. Эквивалентен сочетанию ключей /S /E. Совместим с ключом /T.

    /V — Проверка размера каждого нового файла.

    /W — Вывод запроса на нажатие клавиши перед копированием.

    /C — Продолжение копирования вне зависимости от наличия ошибок.

    /I — Если целевой объект не существует и копируется несколько файлов, считается, что целевой объект задает каталог.

    /Q — Запрет вывода имен копируемых файлов.

    /F — Вывод полных имен исходных и целевых файлов.

    /L — Вывод имен копируемых файлов.

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

    /H — Копирование, среди прочих, скрытых и системных файлов.

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

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

    /U — Копирование только файлов, уже имеющихся в целевом каталоге.

    /K — Копирование атрибутов. При использовании команды XСOPY обычно сбрасываются атрибуты «Только для чтения».

    /N — Использование коротких имен при копировании.

    /O — Копирование сведений о владельце и данных ACL.

    /X — Копирование параметров аудита файлов (подразумевает ключ /O).

    /Y — Подавление запроса подтверждения на перезапись существующего целевого файла.

    /-Y — Запрос подтверждения на перезапись существующего целевого файла.

    /Z — Копирование сетевых файлов с возобновлением.

    /B — Копирование символической ссылки вместо ее целевого объекта.

    /J — Копирование с использованием небуферизованного ввода/вывода. Рекомендуется для очень больших файлов.

    Ключ /Y можно установить через переменную среды COPYCMD.

    Ключ /-Y командной строки переопределяет такую установку.

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

    XCOPY /? — выдать краткую справку по использованию команды.

    xcopy C:\users D:\copy1 — скопировать файлы из каталога C:\users в каталог D:\copy1 . Будет выполняться копирование без подкаталогов и только файлов без атрибутов «Скрытый» и «Системный». Для скопированных файлов будет установлен атрибут Архивный . Если каталог, в который выполняется копирование, не существует, то пользователю будет выдано сообщение:

    Что означает D:\copy1:
    имя файла или каталога
    (F = файл, D = каталог)? D

    После ответа D целевой каталог будет создан и копирование будет выполняться в D:\COPY1\. Для подавления запроса на создание целевого каталога используется параметр /I:

    xcopy C:\users D:\copy1 /I

    xcopy C:\users D:\copy1 /H /Y /C — копирование файлов, включая скрытые и системные, с подавлением запроса на перезапись существующих и возобновлением при ошибке. Если существующий в целевом каталоге файл имеет атрибут «Только чтение», то копирование не выполняется. Для перезаписи таких файлов используется ключ /R

    xcopy C:\users D:\copy1 /H /Y /C /R /S — скопировать все файлы и подкаталоги ( /S ) с перезаписью существующих без запроса ( /Y ) , включая скрытые и системные. ( /H ) с перезаписью файлов с атрибутом «Только чтение» (/R) и игнорированием ошибок ( /C )

    xcopy C:\users D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем случае, но текстовый файл C:\users\listnotcopy.txt задает признаки исключения из процедуры копирования. Пример содержимого файла:

    \User1\ — исключить из копирования каталог C:\users\user1
    All Users исключить из копирования каталог C:\users\All Users
    de*.* — исключить из копирования все файлы и каталоги, начинающиеся на буквосочетание «de»

    xcopy C:\users\*.exe D:\copy1 /H /Y /C /R /S /EXCLUDE:C:\users\listnotcopy.txt — то же, что и в предыдущем примере, но выполняется только копирование исполняемых файлов с расширением .exe .

    xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I — копирование всех файлов с расширением .ini из каталога временных файлов в каталог D:\copy1\ini\ . Если целевой подкаталог \ini\ не существует, то он будет создан без запроса пользователю ( /I ) .

    xcopy %TEMP%\*.ini D:\copy1\ini /H /Y /C /R /S /I /D:09-16-2013 — то же, что и в предыдущем примере, но выполняется копирование только тех файлов, у которых установлена дата изменения 16 сентября 2013 года и старше.

    xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T — создать структуру папок диска C: в каталоге D:\copy1\LISTDIR . Копирование файлов не выполняется. Копируются только папки, включая пустые, скрытые и системные.

    xcopy C:\ D:\copy1\LISTDIR /H /Y /C /R /S /I /E /T /D:09-16-2013 воссоздать в каталоге D:\copy1\LISTDIR структуру папок диска C: , с датой изменения 16 сентября 2013 года и позже.

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

    Форум русскоязычного сообщества Ubuntu

    Страница сгенерирована за 0.029 секунд. Запросов: 23.

    • Сайт
    • Об Ubuntu
    • Скачать Ubuntu
    • Семейство Ubuntu
    • Новости
    • Форум
    • Помощь
    • Правила
    • Документация
    • Пользовательская документация
    • Официальная документация
    • Семейство Ubuntu
    • Материалы для загрузки
    • Совместимость с оборудованием
    • RSS лента
    • Сообщество
    • Наши проекты
    • Местные сообщества
    • Перевод Ubuntu
    • Тестирование
    • RSS лента

    © 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
    © 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *