通过脚本拷贝的效率比手动拷贝要快的多,很多备份任务都是通过脚本执行的。最近备份任务交给了我,备份项目很多,都是从一个服务器备份到另一个服务器,以前没搞过脚本,下面说说我的处理方法和感受。
1、备份环境
数据源在各个服务器上,其中有一台是文件服务器,有防火墙(本人没有访问整个server的权限,只有一个路径的权限)。
目标路径也是一台server(虚机)。
2、备份内容
以当前日期为文件名备份各个任务
3、备份方法
3.1 bat脚本
set y=%date:~0,4%%date:~5,2%%date:~8,2%
xcopy 源路径 目标路径\%date:~0,4%%date:~5,2%%date:~8,2% /s /e /y
3.2 powershell脚本
Set-Location -Path \\目标路径
echo "$pwd"
$usedate = "{0:yyyy-MM-dd}" -f (get-date)
$filepath = New-Item -name $usedate -ItemType directory
$newfile = Get-ChildItem -name * -include $usedate
cd $usedate
#Copy-Item C:\bakup\* -Type file –recurse
Copy-Item -recurse C:\bakup\* .\
exit
4、问题
通过bat和powershell虽然已经实现了备份任务,但是我没有搞定定时任务的脚本。首先是我技术差,其次就是备份环境有点严格,服务器端有各种策略及防火墙,很多命令不能自动运行,都需要手动确认及身份验证。
bat有点坑的是不能直接访问UNC路径,需要先将UNC映射到本地。网上有文章可以通过命令
pushd %~dp0
echo %cd%
popd
pause
实现UNC映射,但是我没有试了试不行。可能是我命令写错了。
powershell功能很强大,但是不能识别中文路径,手动执行脚本没有问题,自动运行一直显示找不到路径,甚是头疼。
最后就是我将脚本建立的服务器自带的任务计划中,结果发现脚本没有成功执行(脚本已经赋了本地管理员的权限)。
以上问题有哪位大神会的,请多多指点。