由于朋友的公司暂时没有存储设备,但是文件服务器的内容又经常被用户误删除!手动备份是在太累!所以给朋友做了个自动备份的脚本!

实现思路:

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

之后我们开始使用计划任务,执行脚本。

在做计划脚本之前,我们来看一个东西,这个东西,是要和上面的脚本相对应的。

Xcopy结合脚本,实现文件服务器自动备份_第1张图片

日期格式,如果你仔细的查看了,之前的脚本注释,你就能理解为什么一定要是Tue,11/06/2012的格式了。

OK,下面简单介绍下,如何使用计划任务(手头上没有08的系统,就用Win 7代替吧~!反正一样~!)

Xcopy结合脚本,实现文件服务器自动备份_第2张图片

取个名字,下一步

Xcopy结合脚本,实现文件服务器自动备份_第3张图片

因为星期五之外也需要做差异备份,所以选择每日

Xcopy结合脚本,实现文件服务器自动备份_第4张图片

开始日及时间。

Xcopy结合脚本,实现文件服务器自动备份_第5张图片

选择执行一个程序

Xcopy结合脚本,实现文件服务器自动备份_第6张图片

指定运行程序

Xcopy结合脚本,实现文件服务器自动备份_第7张图片

完成并打开任务属性

Xcopy结合脚本,实现文件服务器自动备份_第8张图片

这里一定要选择不管有没有用户登录,都执行。不然如果一不小心注销了服务器,而又没有登录的话,计划任务将不再启用。

这样之后就可以发现系统会自动备份文件了。

有兴趣的朋友可以,copy代码,自己定制。

*注意此方法不能代替常规存储。只能是临时的数据备份!