对大多数企业来讲,系统和数据的备份既重要,又简单,但又经常做不好,鄙人的观点是,一者要重视备份,二者要有好的备份方案。这里给出我的常用脚本,简洁而好用,供大家参考,若有错误,望指点。
新建备份目录,如F:\backup
新建备份脚本,如F:\script\backup.bat
在自动任务中创建任务,视情况定期执行此脚本,备份数据文件将会自动创建在脚本所在目录F:\backup,因为各种数据库的备份比较特殊,这里不详说,以SQL Server为例,假设已经由其SQL Server作业自动创建了BAK或TRN备份到F:\backup\sqlback_weekly目录了,脚本内容如下,rem为注释符。
- @echo off
-
- rem =================================================
- rem author Zhao Yanan
- rem date 2010/03/10
- rem 注意事项:
- rem 此脚本添加到自动任务中运行一项后,末尾可添加“ >> backup.log 2>&1”(不加引号)
- rem 如果日志每次都较多,以致文件太大而不方便打开,可把>>改为>。
- rem 脚本由超级管理员账户运行正常,请不要使用system用户,否则net use命令执行不会成功。
- rem =================================================
-
- echo ===================backupstart==================
- date /t
- time /t
-
- rem 进入备份目录
- cd ..\backup
-
- rem 处理旧备份
- del *.reg.1
- del *.rar.1
-
- rename *.reg *.reg.1
- rename *.rar *.rar.1
-
- rem 备份注册表
- regedit -e regedit.reg
-
- rem 采用winrar备份
- rem 参数说明:
- rem a,添加压缩文件,必须的参数
- rem -ri0:1,其中0是线程优先级,0为默认,1最低,15最高,1是每压缩一个文件暂停1ms,
- rem 可降低CPU使用率,并可以减少磁盘读写错误的概率,但同时需要考虑备份总时长。
- rem -v2000M,即每个分卷大小是2000*1000*1000Bytes
- rem -sv,分卷采用固实的方式,增加有部分分卷损坏时恢复数据的概率。
- rem -r,包含子文件夹和文件
- rem rar比winrar命令更多,使用方法基本一致。
- rem -m5,采用最大压缩率,-m0,不压缩,默认是-m3
- rem 更多帮助可参考winrar自带的帮助文件
-
- rem 设置本地环境变量
- setlocal
- path="C:\Program Files\WinRAR"
- rar a -y script.rar f:\script\*.bat
- rar a -ri10:3 -y -r IIS_MetaBack.rar %SystemRoot%\System32\inetsrv\MetaBack
- rar a -ri10:3 -y -r serv-u.rar "d:\Program Files\Serv-U"
- rem 下面采用非固实分卷压缩备份大目录,可解决单个大文件FTP上传失败的问题
- rem 因www数据超过10GB,为节省时长,没有采用-ri参数
- rar a -ri10:3 -sv -v2000M -y -r mssql.rar "F:\sqlback_weekly"
- rar a -sv -v2000M -y -r -m2 www.rar e:\web
- rem 结束本地环境变量
- endlocal
-
- rem 通过FTP上传到异地,下面的XXX代表异地FTP的IP,本脚本不采用此方法
- rem ftp -i -s:ftp.ini XXX.XXX.XXX.XXX
- rem 参数说明
- rem 这里ftp的参数,有时候需要加上-n
-
- rem 通过SMB协议和xcopy命令传输到异地,此方法需要本地和异地服务器之间能使用共享
- net use t: /del /y
- net use t: \\XXX.XXX.XXX.XXX\sharedir "share?2010" /user:share
-
- xcopy /r /y /c *.rar t:\
- xcopy /r /y /c BESR\*.sv2i t:\BESR
- xcopy /r /y /c BESR\*.v2i t:\BESR
- rem 因文件太大,下面是打包后直接保存到异地,因采用了分卷,所以异地目录需要有删除权限
- "C:\Program Files\WinRAR\rar" a -sv -v2000M -y -r -m2 t:\ourweb.rar e:\web\ourweb
-
- net use t: /del /y
-
- time /t
- echo ===================backupdone=================
- exit
-
|
# 带“#”标识的行是使用说明,真实环境中要删除
# 下面是用户名和密码
username
password
# 采用二进制模式,否则二进制文件传输后是不能用的。
bin
get www.rar
# 上传多个文件命令
mput *.rar
lcd www
# 事先在FTP上新建www目录
cd www
put *.rar
bye
|
因为异地FTP的密码都放在这里了,肯定不安全,我的方法是,异地FTP目录设置为只写,拒绝其它所有权限,异地的备份当然也需要循环,可以异地服务器上执行定期删除任务。或者改为由异地备份服务器定期获取备份。
考虑到企业有时候需要更久的备份,可以在其它目录里存放永久备份,而不会被自动任务删除。