由于朋友的公司暂时没有存储设备,但是文件服务器的内容又经常被用户误删除!手动备份是在太累!所以给朋友做了个自动备份的脚本!
实现思路:
1. 利用Windows自带的计划任务,自动运行脚本
2. 使用系统自带xcopy进行文件复制
基本上没有使用其他第三方或收费软件功能
下面我们对脚本进行解读:
@echo off
REM ******************************
REM * Set Variables
REM ******************************
set curDayOfWeek=%date:~0,3% /*获取星期,date之后的0开始的三个字符
set curDay=%date:~7,2% /*date之后的第七个字符后的两个字符
set curMth=%date:~4,2%
set curYear=%date:~10,4%
set sourceDrive1=d: /*定义源盘符
set sourceDir1=%sourceDrive1%\Info-Org /*定义源目录文件夹
set destDrive1=U: /*定义目标盘符,此处使用MAP到本地磁盘
set destDir1=%destDrive1%\INFO\INFO-%curDayOfWeek%\Info-Org
set sourceDrive2=e:
set sourceDir2=%sourceDrive2%
set destDrive2=U:
set destDir2=%destDrive2%\INFO\INFO-%curDayOfWeek%\EDrive
set sourceDrive3=e:
set sourceDir3=%sourceDrive2%\INFODIIPM-production
set destDrive3=U:
set destDir3=%destDrive2%\INFO\INFO-%curDayOfWeek%\EDrive\INFODIProd
set sourceDrive4=e:
set sourceDir4=%sourceDrive2%\INFOBT-production
set destDrive4=U:
set destDir4=%destDrive2%\INFO\INFO-%curDayOfWeek%\EDrive\INFOBTProd
set fullBackupDay=Fri /*定义全备份条件
set fullBackup=NO
set logFilename=d:\INFO-BUScript\INFO-BU-%curYear%%curMth%.log /*生成备份日志
REM ******************************
REM * START
REM ******************************
echo START : %date% %time% >> %logfilename%
net use U: \\10.10.10.1\e$ /*映射盘符,注意权限。目标服务器的共享文件夹,给予此服务器登录用户的完全控制权限。
REM ******************************
REM * Determine Incremental or Full Backup
REM ******************************
if %date:~0,3%==%fullBackupDay% set fullBackup=YES /*如果读取到系统星期为Fri,即星期五,上面已定义。即做全备份。
echo Full Backup: %fullBackup% (%curMth%-%curDay%-%curYear%) >> %logfilename% /*写入日志
REM ******************************
REM * sourceDir1 -> destDir1
REM ******************************
echo Start Copy (%date% %time%): %sourceDir1% to %destDir1% >> %logfilename%
%sourceDrive1%
cd %sourceDir1%
IF %fullBackup%==NO (
xcopy %sourceDir1% %destDir1% /D:%curMth%-%curDay%-%curYear% /S /C /I /Q /H /R /K /Y /J
) ELSE (
xcopy %sourceDir1% %destDir1% /D /S /C /I /Q /H /R /K /Y /J
)
echo End Copy (%date% %time%): %sourceDir1% to %destDir1% >> %logfilename%
/*以上为根据条件使用xcopy复制数据。若满足全备份条件,则进行全备份;若不满足,则进行差异备份。后面的参数大家自己去看看吧。以下命令类似,不在一一注解
REM ******************************
REM * sourceDir2 -> destDir2
REM ******************************
echo Start Copy (%date% %time%): %sourceDir2% to %destDir2% >> %logfilename%
%sourceDrive2%
cd %sourceDir2%
IF %fullBackup%==NO (
xcopy %sourceDir2% %destDir2% /D:%curMth%-%curDay%-%curYear% /S /C /I /Q /H /R /K /Y /J /EXCLUDE:d:\INFO-BUScript\ExcludeList-S2.txt
) ELSE (
xcopy %sourceDir2% %destDir2% /D /S /C /I /Q /H /R /K /Y /J /EXCLUDE:d:\INFO-BUScript\ExcludeList-S2.txt
)
echo End Copy (%date% %time%): %sourceDir2% to %destDir2% >> %logfilename%
REM ******************************
REM * sourceDir3 -> destDir3
REM ******************************
echo Start Copy (%date% %time%): %sourceDir3% to %destDir3% >> %logfilename%
%sourceDrive3%
cd %sourceDir3%
IF %fullBackup%==NO (
xcopy %sourceDir3% %destDir3% /D:%curMth%-%curDay%-%curYear% /S /C /I /Q /H /R /K /Y /J
) ELSE (
xcopy %sourceDir3% %destDir3% /D /S /C /I /Q /H /R /K /Y /J
)
echo End Copy (%date% %time%): %sourceDir3% to %destDir3% >> %logfilename%
REM ******************************
REM * sourceDir4 -> destDir4
REM ******************************
echo Start Copy (%date% %time%): %sourceDir4% to %destDir4% >> %logfilename%
%sourceDrive4%
cd %sourceDir4%
IF %fullBackup%==NO (
xcopy %sourceDir4% %destDir4% /D:%curMth%-%curDay%-%curYear% /S /C /I /Q /H /R /K /Y /J
) ELSE (
xcopy %sourceDir4% %destDir4% /D /S /C /I /Q /H /R /K /Y /J
)
echo End Copy (%date% %time%): %sourceDir4% to %destDir4% >> %logfilename%
echo Start Change Attrib: %destDir1%, %destDir2%, %destDir3%, %destDir4% >> %logfilename%
attrib /S /D -S -H %destDir1% /*更新文件夹属性
attrib /S /D -S -H %destDir2%
attrib /S /D -S -H %destDir3%
attrib /S /D -S -H %destDir4%
echo End Change Attrib : %destDir1%, %destDir2%, %destDir3%, %destDir4% >> %logfilename% /*写入日志
REM ******************************
REM * END
REM ******************************
net use U: /DELETE /*删除磁盘映射
echo COMPLETED : %date% %time% >> %logfilename%
@echo on
Exit
之后我们开始使用计划任务,执行脚本。
在做计划脚本之前,我们来看一个东西,这个东西,是要和上面的脚本相对应的。
日期格式,如果你仔细的查看了,之前的脚本注释,你就能理解为什么一定要是Tue,11/06/2012的格式了。
OK,下面简单介绍下,如何使用计划任务(手头上没有08的系统,就用Win 7代替吧~!反正一样~!)
取个名字,下一步
因为星期五之外也需要做差异备份,所以选择每日
开始日及时间。
选择执行一个程序
指定运行程序
完成并打开任务属性
这里一定要选择不管有没有用户登录,都执行。不然如果一不小心注销了服务器,而又没有登录的话,计划任务将不再启用。
这样之后就可以发现系统会自动备份文件了。
有兴趣的朋友可以,copy代码,自己定制。
*注意此方法不能代替常规存储。只能是临时的数据备份!