«
robocopy
Paladin 发布于
阅读:10
Windows
#利用robocopy做同步更新
robocopy.exe 源 目標 * /xo /e /purge
#利用robocopy来带有权限的复制,并记录日志命令
robocopy SOURCE DEST /e /copyall /R:5 /W:10 /log:FILENAME /NP /V /FP
robocopy D:\HR E:\HR /e /copyall /R:5 /W:10 /NP /V /FP /LOG:hr.log
#robocopy只复制权限
robocopy \\192.172.0.4\mis i:\MIS /
is /e /copy:sou /xf *.tmp *.bak *.temp *.lnk /xa:h
#想咋复制就咋复制
robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s
#说明:
#参数"/s"的作用是“除了空文件夹以外的所有子目录”。若要将文件夹下的所有文件(包括空文件夹)全部复制到目标文件夹,则上述命令应改为:robocopy D:\Document E:\Home /e
#此处参数"/e"的表示所有子目录(包括空文件夹)。复制文件随心所欲
robocopy D:\Document H:\Project *.txt *.doc *.jpg *.bmp *.tif /s /lev:2.
#说明:
#参数"/lev"表示复制的层级,比如指定为2级,则两层目录下的文件会被复制,更多级下面的则会被忽略。
#垃圾文件我可不要
#其实实现这个要求很简单,直接在复制的过程中筛选出垃圾文件并且deny掉就好啦~用如下命令吧:
robocopy H:\Work D:\Work /e /xf *.tmp *.bak
#说明:
#参数"/xf"意为指定不执行复制操作的文件类型,文件名支持通配符。如果使用参数"/xd",则表示排除指定的文件夹。
#大文件我也不要
robocopy F:\music H:\music /e /max:10000000
#说明:
#使用参数"/max",可以选择文件大小上限,其单位为byte。如果是"/min",限定了文件大小的下限。两个参数可以同时使用,限制出所需复制的文件大小的范围。
#复制指定修改时间的文件
#在日常使用中,免不了要通过文件修改时间筛选出最近的文件。如何实现此功能?通过下列命令:
robocopy D:\Document H:\Project /maxage:5
#此条命令的意思为将D:Document下修改时间在5天内的文件复制到H:Project下。
#参数"/maxage"表示距离今天最远的修改时间,凡是修改时间比这个限制还要早的那些文件都不会被复制。参数"/maxage"可以接受的字符有数字,或者是日期,表示天数时数字要小于1900,表示日期时需要使用"YYYYMMDD"格式。另外一个与之相对应的参数是"/minage",表示距离今天最近的修改时间限制,比这个时间新的文件将不被复制。
#因此,我们在实用环境下可以利用"/maxage"和"/minage"来共同限制时间范围。如下例:
robocopy D:\Document H:\Project /maxage:5 /minage:1
#此命令则将欲复制的文件范围限定在修改时间在除今天意外的5天以内
#完全拷贝
#在Windows默认的复制粘贴下,如果已存在一个同名文件夹,系统会进行增量复制,而不会进行文件夹的替换操作。如果我们需要使目标文件夹与源文件夹完全相同,也就是说在复制的同时也删除在目标文件夹里存在但源文件夹里并没有的文件。则需要使用以下命令:
robocopy D:\Document H:\Project /mir
#参数"/mir"的作用等同于"/purge /e","/purge"表示清理目标文件夹内有而源文件夹里没有的文件和文件夹。通过这个命令,能保证源文件夹和目标文件夹在结构与内容上完全相同。此参数对于创建镜像备份时是非常有用的。
#移动文件
#需要移动文件夹,也就是剪贴,需要使用另外两个参数,先看下例:
robocopy D:\Document H:\Project /move /e
#参数"/move"意为移动,而"/e"则表示复制所有子目录包括空文件夹(这一点上篇文章有讲)。
#只拷贝文档结构
#有时我们只需要拷贝一个多级目录的目录树,或者说只需要它的结构,而不需要它的内容,参考如下命令:
robocopy c:\windows /s /create c:\empty\windows
#这样,我们就创建了整个Windows文件夹的目录结构。其中,使用了"/creat"参数,此参数作用即为生成空的文件结构。
#还有另外一种剑走偏锋的实现方法:
robocopy c:\windows c:\empty\windows /e /lev:5 /minage:19000101
#这是使用了普通的复制方法,指定5层目录,但是却限制了一个机器上不可能有的一个文件修改日期。这样,robocopy就只会拷贝走目录结构,因无文件符合其修改时间限制,因而不会有文件被复制。
#不复制隐藏文件
#个别情况下文件夹中存在隐私内容,在复制的同时又希望被ignore,因为robocopy支持属性操作,所以只需调用相关参数即可。见下例:
robocopy D:\Photo H:\Photo /e /xa:h
#参数"/xa:h"表示将具有隐藏属性的排除出欲复制的范围,与之相对应的是参数"/ia",表示只复制包括指定属性的文件。
#可用的属性有;R只读、A存档、S系统、H隐藏等。
robocopy C:\windows F:\WindowsSysFile /ia:rs
#此命令只会将具有只读属性的系统文件复制,而不会操作其他文件。
#上文说道,robocopy具有对属性操作的能力,因此,在复制的同时也可以指定文件属性。
#使用参数"/A+"与"/A-",功能分别是将给定的属性添加到复制文件,以及,从复制文件中删除给定的属性。
#例如:
robocopy C:\windows F:\WindowsSysFile /e /A-:rsh
#这样,不仅将所有文件进行了复制,也删除了诸如只读、系统、隐藏等属性,方便了我们在复制之后对文件进行操作和编辑等。
#复制同时保留NTFS权限
#在使用Windows NT以上的系统时、或在多用户环境下、或者在服务器上,经常要为文件、文件夹指定用户访问、修改的权限(分区格式需要为NTFS),如下图。但是,使用一般的复制方式并不能保留已有的文件权限设置,这就意味着在文件复制、备份时我们需要重新设置用户权限。不过,使用robocopy可以让我们在复制文件的时候,保留文件属性、权限、所有者,这些都可以随着复制操作一并赋予到目标文件夹中。
#需要实现以上要求,使用以下命令:
robocopy D:\Document E:\Project /e /copyall
#参数"/copyall"等同于"/copy:DATSOU",表示将所有源文件夹的信息复制到目标文件夹中。
#其具体含义为:
#D:文件数据,A:文件属性,T:时间信息,S:权限信息,O:所有者信息,U:审核信息。
#如果源文件夹的权限被修改,并且需要将其同样更新目标文件夹的时,并不必需要进行重复复制,只需使用:
robocopy D:\Document E:\Project /is /copy:sou
#向文件服务器进行集中复制
#由于robocopy完全支持文件服务器共享文件夹数据的拷贝,所以我们能够很方便的把相应数据备份到文件服务器上,以免数据丢失。
#命令参考:
robocopy D:\Project server_share /e /copyall
#如果我们创建了一个环境变量,如定义"%bak%"为"server_share",那只要输入相应的命令:
robocopy D:\Project %bak% /e /copyall
#即可把源文件夹下的文件全部备份到"server_share"下。
#当然,如果"server_bak"空间不够时,只要更换环境变量的值到其他文件夹,如"server_new",上述命令无需更改就可以拷贝到新的文件夹中。
#实现定时自动备份
#在服务器上(当然不限于服务器),有些数据非常重要,尤其是实时性强的数据,更是需要时时刻刻注意备份,robocopy可以帮我们牢记备份时间,备份目标等。它能够时时刻刻监视需要备份的目标文件夹,当遇到文件夹被修改或者定时器倒数归零,robocopy就会立即开始备份。在用户不进行额外干预的情况下,这种监视文件夹的任务不会终止,而会一直进行。
#依然使用上例中的文件夹做示范:
robocopy D:\Project E:\Document /e /copyall /mot:10 /mon:5
#在此例中,整条命令表示复制并监视源文件夹所有信息到目标文件夹。当执行此命令后,会启动命令提示符窗口,一旦时间过了十分钟,并且源文件夹至少有或5处以上的修改,robocopy就会自动启动另一个进程,执行上述备份操作。
#在这个实例中,robocopy能监视的有:源文件夹目录结构、文件、文件(夹)名称、大小、最后修改时间、属性和权限等。凡是以上内容有所变动,都会被robocopy视为一次修改。
#参数"/mot"用来定义时间,以分钟记,指的是robocopy执行操作最短倒计时时间。参数"/mon"用来定义最少文件修改次数。
#在整个监视过程中,robocopy会自动倒计时并记录修改次数,只有同时符合以上两个条件时,robocopy才会开始执行复制任务。每次执行结束后,这两个数据都会被清零,并重新开始监视源文件夹,只有当用户关闭命令提示符窗口或者按下"Ctrl+Break"键这个监视进程才会终止。
#命令格式
#用法 robocopy 源 目标 [file [file]...] [options]
#源 源目录(驱动器:\路径 或 \\服务器\共享\路径)
#目标 目标目录(驱动器:\路径 或 \\服务器\共享\路径)
#文件 要复制的文件(名称/通配符: 默认为"*.*")
#复制参数
#/s 复制子目录,但不复制空的子目录
#/e 复制子目录,包括空的子目录
#/LEV:n 仅复制源目录树的前n层
#/z 在可重新启动模式下复制文件
#/b 在备份模式下复制文件
#/zb 使用可重新启动模式;如果拒绝访问,请使用备份模式
#/EFSRAW 在EFS RAW模式下复制所有加密的文件
#/COPY:复制标记 要复制的文件内容(默认为/COPY:DAT)
#[ 复制标记:D=数据,A=属性,T=时间戳,S=安全=NTFS ACL,O=所有者信息,U=审核信息 ]
#/DCOPY:T 复制目录时间戳
#/SEC 复制具有安全性的文件(= /COPY:DATS)
#/copyall 复制所有文件信息(= /COPY:DATSOU)
#/nocopy 不复制任何文件信息(与 /PURGE 一起使用生效)
#/SECFIX 修复所有文件的文件安全性,即使是跳过的文件
#/TIMEFIX 修复所有文件的文件时间,即使是跳过的文件
#/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 程序包间的间距(ms),以释放低速线路上的带宽
#/SL 对照目标复制符号链接
#/MT[:n] 使用n个线程进行多线程复制(默认值为 8)
# n 必须至少为 1,但不得大于 128
#该选项与 /IPG 和 /EFSRAW 选项不兼容
#使用 /LOG 选项重定向输出以便获得最佳性能
#文件参数
#/A 仅复制具有存档属性集的文件
#/M 仅复制具有存档属性的文件并重置存档属性
#/IA:[RASHCNETO] 仅包含具有任意给定属性集的文件
#/XA:[RASHCNETO] 排除具有任意给定属性集的文件
#/XF 文件[文件]... 排除与给定名称/路径/通配符匹配的文件
#/XD 目录[目录]... 排除与给定名称/路径匹配的目录
#/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 以来使用的文件
#(If n < 1900 then n = n days, else n = YYYYMMDD date)
#/XJ 排除接合点(默认情况下通常包括)
#/FFT 假设 FAT 文件时间(2 秒粒度)
#/DST 弥补 1 小时的 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:文件 以 UNICODE 方式将状态输出到日志文件(覆盖现有日志)
#/UNILOG+:文件 以 UNICODE 方式将状态输出到日志文件(附加到现有日志中)
#/TEE 输出到控制台窗口和日志文件
#/NJH 没有作业标头
#/NJS 没有作业摘要
#/UNICODE 以 UNICODE 方式输出状态
#作业参数
#/JOB 从命名的作业文件中提取参数
#/SAVE 将参数保存到命名的作业文件
#/QUIT 处理命令行后退出(以查看参数)
#/NOSD 未指定源目录
#/NODD 未指定目标目录
#/IF 包含以下文件
Windows