Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序

Robocopy是微软Windows Server 2003资源工具包中众多多用途的实用程序之一(它是基于强大的拷贝程序)。没错,Robocopy的功能是拷贝文件,你也许会觉得无聊并且要翻阅下一篇文章了,且慢,让我们给这个有趣的小程序一个机会吧。Robocopy能够处理包括巨大的数据字节块在内的复制操作,并且它可以让你确定拥有像Copy和Xcopy等其它拷贝程序那样的技术规范。解释一下,例如你可以用Robocopy去拷贝某一个完整的目录树,而不仅仅是树下的三层。并且,你还可以指定Robocopy在进行网络拷贝的操作期间不会超过使用网络带宽的三分之一资源等等。  如果说Robocopy有什么缺点的话,那就是它的语法。资源工具包中的robocopy.doc文档除了用如此冗长的32个页码解释它的语法外并没有一些真正实用的内容。那么就让我们分析透彻它,并且挑选出一些关于Robocopy的基本语法。

Robocopy 基础

从Robocopy的简单表达形式可以看出,它同其它命令行拷贝工具有着细微的类同之处: robocopy <source directory> <destination directory><filenames> <options> 如果我想将C:\stuff目录的所有文件都拷贝到C:\stuffbak目录下,那么我应该键入: robocopy C:\stuff C:\stuffbak 到目前为止,还不错。看起来就像是一个Copy或者Xcopy程序的操作。但是如果我仅仅想拷贝文件名的开头包含“s”的文本文件又该怎样操作呢?在Xcopy中我应该像下面所示的那样键入: xcopy C:\stuff\s*.txt C:\stuffbak 然而,在Robocopy中那样的语法是行不通的。取而代之的是,将源目录和目的目录结合起来并增加文件类型和过滤器。对文件类型和过滤器,Robocopy用一个分开的位置来实现。那么对于上述的文本文件拷贝而言,你就应该键入: robocopy C:\stuff C:\stuffbak s*.txt

网络应用

到目前为止,我已经列举了源和目的目录的拷贝实例,但他们仅仅是基于本地文件目录的操作,Robocopy也能处理通用命名约定(UNC)名称的操作。例如: robocopy \\marksws\myfiles \\centralserver\marksfiles

这个命令将会把marksws计算机*享目录myfiles的所有文件,通过网络拷贝到centralserver计算机*享的marksfiles目录里面。这样的功能也许是很有用的,但是当我们加入了网络的混合应用条件后,我们就需要考虑网络可靠性方面的问题了。 任何网络拷贝的操作都会被许多潜在的网络问题中断。在许多实际应用中,网络问题会在不久由它自身清除。因此,你仅仅是需要短暂的等待后再次重复刚才的操作即可。但是,又有谁想像个婴儿似的等候在电脑边重复着一个很大网络文件的传输呢?幸运的是,当失败事件发生时,你可以通过指定一个时间数字(单位:秒)后,使得Robocopy自动再次运行拷贝操作(用/w:xx 选项),并且你也能通过一个指定的数字来设定Robocopy拷贝工作重试的次数(用/r:yy选项)。好了,我们来设定Robocopy进行网络文件拷贝的重试次数为13次,并且每次重试期间间隔30秒。你应该键入: robocopy \\marksws\myfiles \\centralserver\marksfiles /w:30 /r:13 如果你不想指定等待间隔或者重试次数,理论上Robocopy会使用默认的100万重试次数和30秒的重试间隔时间。一条简单的Robocopy命令就可以在一个非常糟糕的网络环境中甚至用一年的时间来完成拷贝操作(当然这可不是我实际想去尝试的)。 有时候,网络拷贝的工作会因为一个简单但令人烦恼的原因失败。举个例子,你可能没有正在拷贝的所有的文件的读取权限。(当你尝试去备份一个用户的profile文件或者主目录时就会遇到这种情况。)如果你需要备份一些文件而又没有NTFS的读取权限,那么就要检查你是否具有文件的备份权限——记住,读取权限和备份权限可不是一回事。如果有的话,你就可以使用Robocopy的/b或者/zb选项来备份文件。/b选项是令Robocopy使用备份权限备份,而/zb选项是令它首先尝试标准拷贝操作,失败后再用备份权限进行拷贝。

仅仅是开始

本篇文件的目的是点到为止地介绍Robocopy。你也可以看一看联机文档

上一篇:AndroidUI组件之ActionBar--基于下拉的导航方式


下一篇:html5css3杂记