шпаргалка по robocopy
Утилита robocopy для windows - отдаленный аналог rsync в linux
использование
robocopy <source> <dest> [file [file]...] [options] source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). file :: File(s) to copy (names/wildcards: default is "*.*")
Основные опции:
/E :: copy subdirectories, including Empty ones. - a.k.a. Рекурсивное копирование /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE). - Удалаяет все "лищние" файлы в destination!! /MT[:n] :: Do multi-threaded copies with n threads (default 8). /XF file [file]... :: eXclude Files matching given names/paths/wildcards. /XD dirs [dirs]... :: eXclude Directories matching given names/paths. /XC excludes existing files with the same timestamp, but different file sizes. Robocopy normally overwrites those. /XN excludes existing files newer than the copy in the source directory. Robocopy normally overwrites those. /XO excludes existing files older than the copy in the source directory. Robocopy normally overwrites those. :: With the Changed, Older, and Newer classes excluded, Robocopy will exclude files existing in the destination directory /R:n :: number of Retries on failed copies: default 1 million. /W:n :: Wait time between retries: default is 30 seconds. /LOG:file :: output status to LOG file (overwrite existing log). /LOG+:file :: output status to LOG file (append to existing log).
Примеры:
Скопировать рекурсивно все файлы и папки на сетевой диск, существующие заменить новыми
robocopy c:\tmp \\nas\tmp /E /MT
Скопировать рекурсивно все файлы и папки на сетевой диск, существующие обновить если есть новая версия
robocopy c:\tmp \\nas\tmp /MT /E /XO
Скопировать только jpg файлы в папке
robocopy c:\tmp \\nas\tmp *.jpg /MT /E
Синхронизировать локальную и удаленную папку рекурсивно
robocopy c:\tmp \\nas\tmp /MT /MIR
При запуске в скриптах следует использовать параметры таймаута ибо при обрыве связи копирование будет висеть ооочень долго:
robocopy c:\tmp \\nas\tmp /MT /MIR /R:2 /W:5
Нижеприведенный скрипт читает файл list.txt
со списком файлов и копирует при помощи robocopy
@echo off set FROM=D:\Images set TO=\\nas\Images for /f %%i in ( list.txt ) DO ( echo %%i if %%i=='' ( exit ) if exist "%FROM%\%%i" ( robocopy.exe %FROM%\%%i %TO%\%%i /E /XO /Z /R:2 /W:5 /MT:10 /BYTES /NP /LOG+:logs\log_%%i.txt ) )
ENJOY!