Robocopy - описание и примеры использования, XCOPY, HoboCopy

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
8,031
Решения
15
Реакции
6,808
ROBOCOPY :: Robust File Copy for Windows

Robocopy (от англ. Robust File Copy) — утилита командной строки для репликации (не просто копирования) каталогов (папок). Она была доступна как часть Windows Resource Kit и представлена как стандартный компонент Windows Vista, Windows 7 и Windows Server 2008 и новее.

Функциональные возможности

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

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

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


/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

[table=head]Hex|Decimal|Meaning
0×10| 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.
0×08| 8| Some files or directories could not be copied
||(copy errors occurred and the retry limit was exceeded).
||Check these errors further.
0×04| 4| Some Mismatched files or directories were detected.
|| Examine the output log. Some housekeeping may be needed.
0×02| 2| Some Extra files or directories were detected.
|| Examine the output log for details.
0×01| 1| One or more files were copied successfully (that is, new files have arrived).
0×00| 0| No errors occurred, and no copying was done.
|| The source and destination directory trees are completely synchronized.
[/table]

Таким Batch-файлом получим короткое описание ошибок.
Код:
    if errorlevel 16 echo ***FATAL ERROR*** & goto end
    if errorlevel 15 echo OKCOPY + FAIL + MISMATCHES + XTRA & goto end
    if errorlevel 14 echo FAIL + MISMATCHES + XTRA & goto end
    if errorlevel 13 echo OKCOPY + FAIL + MISMATCHES & goto end
    if errorlevel 12 echo FAIL + MISMATCHES& goto end
    if errorlevel 11 echo OKCOPY + FAIL + XTRA & goto end
    if errorlevel 10 echo FAIL + XTRA & goto end
    if errorlevel 9 echo OKCOPY + FAIL & goto end
    if errorlevel 8 echo FAIL & goto end
    if errorlevel 7 echo OKCOPY + MISMATCHES + XTRA & goto end
    if errorlevel 6 echo MISMATCHES + XTRA & goto end
    if errorlevel 5 echo OKCOPY + MISMATCHES & goto end
    if errorlevel 4 echo MISMATCHES & goto end
    if errorlevel 3 echo OKCOPY + XTRA & goto end
    if errorlevel 2 echo XTRA & goto end
    if errorlevel 1 echo OKCOPY & goto end
    if errorlevel 0 echo No Change & goto end
    :end

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

Robocopy является утилитой командной строки, поэтому для удобства пользования Microsoft Technet предоставляет графическую оболочку для неё (GUI front-end), автор которой Дерк Бениш. Оболочка требует наличия .NET Framework 2.0.

Обзор от Джошуа Хоффман (Joshua Hoffman) на TechNet
Скачать графическую утилиту с форума (распакована) С форума (установщик) с сайта MS

robo1.webp
robo2.webp

robo3.webp
robo4.webp

robo5.webp
robo6.webp

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

1) Простой пример — копирование содержимого каталога C:\A в каталог C:\B (включая файлы, атрибуты и метки времени), рекурсивно включая пустые каталоги (/E):
Код:
robocopy C:\A C:\B /E
2) Копировать содержимое каталога C:\A рекурсивно (/E), включая все атрибуты файлов (/COPYALL, эквивалентно /COPY:DATSOU, D=данные, A=аттрибуты, T=метки времени, S=безопасность=списки контроля доступа NTFS, O=владелец, U=аудит), не повторять попытки для заблокированных файлов (/R:0) (по умолчанию задан один миллион повторных попыток копирования), сохранять оригинальные метки времени у каталогов (/DCOPY:T — начиная с версии XP026 или более поздней):
Код:
robocopy C:\A C:\B /COPYALL /E /R:0 /DCOPY:T
3) Создать зеркальную копию каталога C:\A в каталоге B на сетевом ресурсе \\backupserver, удалить из каталога B все отсутствующие в каталоге C:\A файлы (/MIR), использовать журнал возобновления (/Z) на случай потери сетевого соединения:
Код:
robocopy C:\A \\backupserver\B /MIR /Z
4) Скопировать файл file1.txt из папки c:\folder1 в папку c:\folder2:
Код:
robocopy.exe c:\folder1 c:\folder2 file1.txt
5) Скопировать файлы, измененные за последние 5 дней (исключая сегодня).
Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /maxage:5 /minage:1
6) Переместить все файлы:
Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /move /e
7) Скопировать файлы за исключением скрытых (/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
8) Скопировать все файлы по шаблону (расширению), пустые папки не копировать:
Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" *.doc *.ppt /s
9) Скопировать все файлы размером от 1000 до 60000 байт:
Код:
robocopy "E:\Documents" "\\NAS\BACKUP\Documents" /e /max:60000 /min:1000
10) Исключить из копирования папку AppData (/XD AppData):
Код:
Robocopy "C:\Users\Administrator" "\\NAS\BACKUP\Administrator" /MIR /XA:SH /XD AppData /XJD
11) Создать 32 потока (/MT:32) копирования файлов:
Код:
Robocopy "C:\Users\Administrator" \\NAS\BACKUP\Administrator /MIR /XA:SH /XD AppData /XJD /R:5 /W:15 /MT:32
В примере мы используем опцию /MT[:n], где n – это число от 1 до 128, которое определяет количество потоков. По умолчанию, если параметр /MT не указан, используется 8 потоков.

12) Переписать весь ACL, при этом не переписывая сами файлы:
Код:
robocopy <source /> /secfix /xo /xn /xc
13) Пример использования в скрипте:
CMD/BATCH:
echo Start backup time: %DATE% %TIME% >> g:\BC\backup_time.txt
robocopy.exe S:\ g:\BC\MK\ /MIR /R:1 /W:1 /NP /TEE /LOG:g:\BC\00_sync.log
echo End backup time: %DATE% %TIME% >> g:\BC\backup_time.txt
NET USE \\server01\IPC$ /USER:login password
NET USE \\fileserver\IPC$ /USER:login password
c:\reskit\robocopy \\fileserver\c$\work \\server01\e$\backup /MIR /SECFIX /TIMFIX /NP /LOG+:D:\logs\robocopy\backup_work.log
NET USE \\server01\IPC$ /DEL
NET USE \\fileserver\IPC$ /DEL
Полный список команд доступен на странице Microsoft TechNet — Robocopy

Аналоги
  • RichCopy
  • nnBackup (входит в состав nnCron)
    nnBackup - это крошечная (350k) консольная утилита, предназначенная для резервного копирования файлов, синхронизации содержимого каталогов, создания и обработки файл-листов. Поддерживается сжатие архивных данных по алгоритмам gz или zip, использование внешних архиваторов и запуск произвольных приложений до и после основного процесса копирования файлов. Предусмотрены специальные средства для удаления неактуальных данных из резервной копии. nnBackup можно запускать из командной строки или внешнего планировщика (например, nnCron или nnCron LITE).

    nnBackup позволяет использовать все распространенные методы резервного копирования:
    • традиционное копирование файлов и каталогов
    • копирование данных в стек пронумерованных каталогов или zip-файлов заданной глубины
    • инкрементное резервирование в стиле юниксовой программы dump
    • синхронизация файлов и каталогов (одно- и двунаправленная)
    • расфасовка информации на "порции" заданного размера

    Достоинства nnBackup:
    • маленький размер
    • высочайшая скорость работы
    • полная поддержка Юникода
    • настраиваемость:
      - работа с включающими и исключающими масками имен файлов
      - отбор файлов по размеру, атрибутам, времени создания и дате последней модификации
      - настраиваемая обработка пустых каталогов и удаленных файлов
      - настраиваемая обработка ошибок, возникающих при копировании файлов и каталогов
      - смена языка, на котором выводятся сообщения и т. д.
    • возможность запуска произвольных приложений перед или после копирования с учетом кодов возврата
    • возможность считывать параметры запуска из указанных текстовых файлов
    • специальный тестовый режим работы (без физического копирования/удаления файлов)
    • логирование всех операций и многое другое...
  • xxcopy
 

Вложения

Последнее редактирование:
Зеркалирование файловых ресурсов утилитой robocopy
Автор:
Павел Железнов
Источник:
Зеркалирование файловых ресурсов утилитой robocopy @ zheleznov.info

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

Утилита robocopy
Бесплатная консольная утилита robocopy («Robust File Copy» = «надежное копирование файлов») значительно упрощает задачу резервного копирования большого количества файлов. Входит в состав Windows 2003 Resource Kit, а также встроена в Windows Vista.

По сравнению с известной командой copy, а в чем-то и по сравнению с xcopy, имеет преимущества:
  • Копирует только изменившиеся файлы, что дает значительное ускорение при повторном копировании. Изменение файла определяется по его дате, размеру и атрибутам.
  • Может выполнять синхронизацию, т.е. удалять файлы из конечного каталога, если они отсутствуют в исходном.
  • Продолжает работу после обрыва сетевого соединения или переполнения диска (естественно, после устранения неисправности администратором).
  • Сохраняет атрибуты, права доступа, дату изменения.
  • Позволяет записывать свои параметры запуска в отдельный файл для удобства настройки и повторного использования.

Предлагаемый порядок действий

Исходные данные для примера
Необходимо сделать копию всех каталогов и файлов диска D:, кроме D:\Temp.
Копия будет храниться на переносном жестком диске, буква диска может меняться.

Первоначальная настройка
На переносном диске, предназначенном для хранения зеркальной копии, нужно разместить необходимые файлы:
  • robocopy.exe — утилита для копирования, не требует установки.
  • disk_d.rcj — текстовый файл с настройками копирования. Расширение означает «RoboCopy Job», т.е. файл задания для программы. Имя файла disk_d отражает его назначение.
  • backup_mirror.cmd — командный файл для организации копирования. Запускать можно вручную или через ярлык.

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

Ход выполнения будет отображаться в консольном окне, также будет создан отчет в файле disk_d.log. В любой момент можно прервать выполнение командного файла (например, если надо срочно выключить компьютер) и затем продолжить копирование, просто запустив его повторно.

Повторный запуск
Периодически необходимо обновлять «зеркало» на переносном диске. Для этого достаточно его подключить и снова запустить командный файл backup_mirror.cmd.

Настройка копирования
Более подробное описание ключей запуска программы см. robocopy.exe /?. Ниже упоминаются только необходимые параметры.

Содержимое файла задания disk_d.rcj, для понимания достаточно комментариев:
CMD/BATCH:
:: Файл настроек задания программы Robocopy
:: Задание: создать зеркало диска D: в подкаталоге D текущего каталога
:: Копируемый каталог
/SD:D:
:: Каталог назначения, указан относительный путь
/DD:.\D
:: Перечень каталогов, которые НЕ надо копировать, по одному в каждой строке
:: Внимание! Исключенные из копирования подкаталоги не удаляются
:: из каталога назначения, если они уже там есть
/XD
D:\RECYCLER
D:\System Volume Information
D:\Temp
:: Запись в файл журнала
/LOG:disk_d.log
/TEE :: также выводить сообщения в консоль
/NP :: не показывать прогресс (%) для каждого файла
:: Опции копирования
/MIR :: Создать зеркало (MIRror)
:: Повтор копирования в случае ошибок
/R:10 :: количество повторов
/W:30 :: время ожидания перед повтором в секундах

Содержимое backup_mirror.cmd:
CMD/BATCH:
@echo off
:: запустить настроенные задания (*.rcj), можно несколько подряд
robocopy.exe /job:disk_d
echo.
:: ждать нажатия клавиши
pause


Примечание от Dragokas

Обратите внимание! При использовании ключа /MIR из каталога назначения удаляются файлы и папки, которые отсутствуют в исходном каталоге (кроме исключаемых ключем /XD)

Файл задания указывается без расширения имени файла.

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

Вложения

Windows: синхронизация файлов и папок по сети или резервное копирование
Автор:
Денис "Reagent" Ходус
Источник.

Итак, у нас есть задача: синхронизировать некоторый набор папок с лежащими в них файлами. Причем задача стоит именно так:
- Синхронизация должна поддерживать передачу файлов по сети - т.е., например, с одного компьютера на другой;
- Синхронизация должна уметь копировать только новые файлы, не передавая заново уже существующие;

Из своей практики я могу предложить 2 пути: ROBOCOPY и XCOPY.

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

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

Итак, вот пример использования данной утилиты:
CMD/BATCH:
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

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

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

Вот пример ее запуска:
Код:
xcopy "d:\исходная_папка" \\192.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 символов.


Примечание от Dragokas:

Стоит добавить, что в противовес ключу /I команды XCOPY является такая конструкция:
Код:
Echo F| XCOPY /C /Y ...
Что означает destination:
имя файла или каталога
(F = файл, D = каталог)? f
Т.е. на тот случай, если целевым объектом должен быть путь к файлу.

А вот ключ /O обычно затребует для своей работы повышение прав, поэтому прежде подумайте о целесообразности его использования.
 
Последнее редактирование:
Копирование заблокированных файлов с HoboCopy
Автор: windata.ru
Источник.

Предположим, что вы хотите скопировать файл, который намертво заблокирован другой программой. В результате Windows нам радостно сообщит о том, что системный процесс не может получить доступа к файлу, поскольку последний заблокирован другим процессом. Как же тогда скопировать такой файл?

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

file_locked.webp


Начиная с Windows XP операционная система от Microsoft поддерживает технологию теневого копирования (она же Volume Shadow Copy). Данная технология используется для резервного копирования данных и восстановления системы. В частности, теневая копия представляет собой временный “снимок” файла или раздела жесткого диска. При этом одна программа может получить доступ чтения именно к снимку, в то время как другие программы могут в это же время работать с файлом или изменять его.

Именно это нам и нужно – чтение занятого файла. И поможет нам в этом утилита для командной строки HoboCopy, предназначенная для резервного копирования файлов.

На следующей странице можно загрузить HoboCopy для Windows XP и Windows Vista/7 в версиях 32/64 бит:

Скачать HoboCopy для различных версий Windows (GitHub)

Для работы HoboCopy (да и многих других программ для резервного копирования) нам надобятся две следующих службы Windows:
  • Теневое копирование тома
  • MS Software Shadow Copy Provider

Если вы забыли, где просмотреть службы, то в Windows 7 перейдите по пути Панель управления > Система и безопасность > Администрирование > Службы (а в Windows XP – Панель управления > Администрирование > Службы).

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

Резервное копирование одного файла с помощью HoboCopy

Как вы помните, HoboCopy – утилита командной строки. К слову сказать, в Windows 7 и Windows Vista ее нужно запускать в режиме администратора, для чего щелкните на файле программы правой кнопкой мыши, выберите команду Свойства > Дополнительно и установите флажок Запуск от имени администратора. Также будет не лишним ознакомиться со статьей Запуск программ Windows 7 в режиме администратора.

Синтаксис команды выглядит следующим образом:
Код:
hobocopy c:\имя_папки\ d:\папка_копирования\ <имя_файла>
К примеру, мы решили скопировать файл c:\users\windata\mail\outlook.pst прямо вот сюда: d:\backups\outlook.pst.

Команда будет выглядеть следующим образом:
Код:
hobocopy c:\users\windata\mail\ d:\backups\ Outlook.pst

Резервное копирование каталога с помощью HoboCopy

Чем копировать по одному файлу, разумеется, куда лучше настроить резервное копирование целыми папками. Для этого нам понадобятся такие ключи:
/full – копирование всех файлов
/skipdenied – игнорировать любые сообщения ошибках, связанных с разрешением доступа
/r – рекурсивное копирование
/y – никаких запросов, копировать абсолютно все

Синтаксис команды следующий:
Код:
hobocopy /full /skipdenied /y /r c:\имя_папки\ d:\папка_копирования\
Например, используя предыдущий пример, скопируем всю пользовательскую папку в папку d:\backups\. Для этого нам понадобится такая команда:
Код:
hobocopy /full /skipdenied /y /r c:\users\windata\ d:\backups\
На копирование понадобится какое-то время, так что можно передохнуть, перекусить и потрещать вконтактике (шутка). Результатом станет полная копия всего каталога. Если при копировании были сообщения об ошибках, связанных с разрешением доступа, программа укажет на проблемные файлы.

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

Утилита HoboCopy поддерживает и инкрементный тип копирования. Что это такое? Весьма полезная функция, она позволяет копировать только те файлы, что изменились с момента предыдущего резервного копирования. При этом последняя дата копирования хранится в файле, который вам нужно указать непосредственно в команде утилиты.

Для инкрементного копирования потребуются два ключа:
/statefile=имя_файла – это имя файла, в котором будут записаны данные о последнем копировании
/incremental – а это, как понятно из названия, ключ для инкрементного копирования

Синтаксис команды выглядит так:
Код:
hobocopy /incremental /statefile=имя_файла /y /r c:\имя_папки\ d:\папка_копирования\
Пример:
Код:
hobocopy /incremental /statefile=d:\lastbackup.dat /y /r c:\users\windata\ d:\backups\
Важно. При первом запуске программы необходимо указать ключ /full вместо /incremental, иначе будет выдано сообщение об ошибке, так как файл с данными о предыдущем состоянии еще не будет создан. А вот уже все последующие команды нужно указывать с ключом /incremental.

Таким образом, утилита HoboCopy позволяет настроить автоматическое копирование папок, для чего нужно лишь запланировать процедуру копирования. В Windows 7/Vista для этого используйте системную программу Планировщик заданий (Панель управления > Система и безопасность > Администрирование > Расписание выполнения задач), а в Windows XP – окно Назначенные задания (Панель управления > Назначенные задания).
 

Вложения

Назад
Сверху Снизу