用Xcopy命令实现文件备份
|
目前有这样一个需求,windows的服务器,有一个目录用来存放文件,该目录下的文件时刻都在不停的增长,为了实现高可靠性,要求对目录进行时效性高的备份,之前的项目中有做过使用cwRsync进行目录同步的,不过其性能实在不够理想,一个几十个G的目录每执行一次同步检测需要半个小时到一个小时的时间,这样就无法实现高密度的文件差异检查并实现时时同步,在寻找的过程中发现了一个比较好用的东东xcopy,其检查速度非常快,文件同步检测速度大约为每分钟6G,效率实现方式比cwRsync高出不少 其实现方式很简单,backup.bat文件内容如下 net use \\192.168.1.100\backup\teset sharepassword /user:mytestdc\backup xcopy E:\test \\192.168.1.100\backup\teset /d/s/e/y net use \\192.168.1.100\backup\teset /delete 本来这样就完成了 但是做的过程中还是要对比小效率很功能撒,这样做的效率是提高了,但是cwRsync的一个很有用的功能同步日志这里却实现不了,怎么办呢?用重定向符号将其执行过程输出到文本文件记录不就可以了吗?但是xcopy的过程不会将每个文件的记录下来,经过一番探索,找到了用bat文件调用bat文件的方式将执行的过程输出。并在日志中记录每次执行的时间等信息,挺完美的了。具体脚本如下: before.bat内容: set date = date /T echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo . >> D:\Service\backup\log\%date%.log echo ==========================================================================================>> D:\Service\backup\log\%date%.log echo %date% %time% >> D:\Service\backup\log\%date%.log backup.bat >> D:\Service\backup\log\%date%.log 这里每天以日期为文件名记录日志,所以用到一个变量,为了方便查看,在每次执行前先在日志中输入多行空行,以及一个以多个等号组成的分割符,输出执行的日期与时间后就可以执行同步脚本了,将同步脚本执行的所有过程全部用重定向符号输出到日志。 看了日志后又找到了一个需要完善的地方,备份脚本中的共享用户名和密码信息都被输出到日志了,存在安全隐患,将backup.bat修改如下。 echo off net use \\192.168.1.100\backup\teset sharepassword /user:mytestdc\backup echo on xcopy E:\test \\192.168.1.100\backup\teset /d/s/e/y echo off net use \\192.168.1.100\backup\teset /delete OK,这样比较完美了~~~~手动执行过程正常。 直接将before.bat添加了2008系统的佳话任务中,计划每间隔半个小时执行一次,但是执行时发现计划任务的状态为 0x1,并非正常完成,备份日志日志中也没有backup.bat的执行过程,微软计划任务错误信息说明如下: 代码 0 或 0x0: 操作成功完成。 代码 1 或 0x1: 调用的函数不正确或调用了未知函数。 代码 10 或 0xa: 环境不正确。 代码 0x8009000f:常规访问被拒绝 猜测其将backup.bat作为一个函数调用了,但是该函数并没有在系统环境变量中指定的路径中,所以错误吧,于是在该文件其加上完整的路径,即将原来before.bat中的行 backup.bat >> D:\Service\backup\log\%date%.log 修改为 D:\Service\backup\backup.bat >> D:\Service\backup\log\%date%.log 再执行尝试OK 终于完美地完成了~~~ 敲字还真是累~~~~ 2010.03.29补充,在做2008系统另外一个计划任务也是bat文件,发现任务执行成功,但是实际bat文件要实现的目的未达到,发现日志信息如下: 任务计划程序已成功完成任务“\mytime”、实例“{508f189a-d5a4-4b8e-9139-c896af7a82c9}”、操作“C:\Windows\SYSTEM32\cmd.exe”,返回代码 2。 后发现该bat中有调用其他资源,而默认情况下对该资源没有访问权限,修改配置好! |
1/1, 0«‹1›»