客户服务器环境:rhel-server-5.4-x86_64+oracle10g
异地备份服务器环境:windows server 2008
网络环境:正式服务器在外网,异地备份服务器在内网(无法映射到外网)
要求:在本地服务器、异地服务器上需要每天对网站工程和数据库进行备份,需要保留前5天的备份
方案1:在windows server 2008 安装serv-u 等软件,将Linux服务器中备份的工程包和数据库压缩包上传(推送)至异地备份服务器,但异地服务器是内网且无法映射到外网,无法搭建FTP服务器,所以该方案不可行。
方案2:在Linux服务器上搭建FTP服务器,异地备份服务器通过flashfxp等软件进行定时download
在Linux上安装FTP包
- [root@yinyong ~]# rpm -ivh ftp-0.17-35.el5.i386.rpm
- warning: ftp-0.17-35.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
- Preparing... ########################################### [100%]
- 1:ftp ########################################### [100%]
- [root@yinyong ~]# service vsftpd start
- vsftpd: unrecognized service
- [root@yinyong ~]# vi /etc/xinetd.d/gssftp
- # default: off
- # description: The kerberized FTP server accepts FTP connections \
- # that can be authenticated with Kerberos 5.
- service ftp
- {
- flags = REUSE
- socket_type = stream
- wait = no
- user = root
- server = /usr/kerberos/sbin/ftpd
- server_args = -l
- log_on_failure += USERID
- disable = no
- }
- [root@yinyong ~]# service xinetd restart
- Stopping xinetd: [ OK ]
- Starting xinetd: [ OK ]
- [root@yinyong ~]# netstat -tnl
- tcp 0 0 0.0.0.0:21 0.0.0.0:* LIST
vi /etc/xinetd.d/gssftp 将disable=yes改成no,然后打开ftp服务
把server_args = -l -a 改成 server_args = -l 把 -a 去掉,这样系统的用户才有权限用ftp登陆
然后启动FTP服务,在这里我用的是service xinetd restart ,用service vsftpd restart报vsftpd: unrecognized service,不知道为什么。21端口启动了,我也测试了FTP能用root登录。
编辑网站工程包,数据库备份及删除文件等脚本:db_back.sh ,web_back.sh,clear.sh
- [root@yinyong /]# mkdir -p /bak/temp //创建数据库、日志等备份路径
- [root@yinyong /]# mkdir -p /bak/db_bak //创建数据库本地备份路径
- [root@yinyong /]# mkdir -p /var/ftp/pub //创建异地备份数据库存放路径
- [root@yinyong ~]# vi /home/oracle/db_back.sh
- su - oracle "-c exp hbskjt_0113/password file=/bak/temp/hbskjt_db.$(date +%Y%m%d).dmp owner=hbskjt0113 log=/bak/temp/hbskjt_db.$(date +%Y%m%d).log"
- cd /bak/temp
- tar zcf /bak/db_bak/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).* //数据库和日志一起打包本地备份
- tar zcf /var/ftp/pub/hbskjt_db$(date +%Y%m%d).tar.gz hbskjt_db.$(date +%Y%m%d).*//数据库和日志一起打包异地备份
- [root@yinyong oracle]# chmod 777 db_back.sh
- [root@yinyong oracle]# ./db_back.sh
- [root@yinyong db_bak]# ls
hbskjt_db20120911.tar.gz- [root@yinyong pub]# ls
hbskjt_db20120911.tar.gz- 本地验证脚本成功。
编写web_back.sh脚本
- [root@yinyong /]# mkdir -p /bak/web_bak //创建备份路径
- 工程路径在/home/tomcat/webapps/oa 下
- [root@yinyong ~]# vi /home/oracle/db_web.sh
- cd /home/tomcat/webapps
- tar zcf /bak/web_bak/oa_$(date +%Y%m%d).tar.gz oa/ //本地工程备份存放路径
- tar zcf /var/ftp/pub/oa_$(date +%Y%m%d).tar.gz oa/ //异地工程备份存放路径
- [root@yinyong oracle]# chmod 777 db_web.sh
- [root@yinyong oracle]# ./db_web.sh
- [root@yinyong web_bak]# ls
- oa_20120911.tar.gz
- 本地验证脚本,备份成功
由于是做的每天备份,服务器的磁盘再大也会有爆的一天,所以需求删除以前的备份,只保留近5天的备份,这就需要一个删除脚本clear.sh
- [root@yinyong ~]# vi /home/oracle/clear.sh
- rm -rf /bak/web_bak/oa_$(date -d -5day +"%Y%m%d")*.gz //本地备份保留
- rm -rf /bak/temp/*.* //该路径下是dmp、log文件,已经打包压缩备份,应每天删除
- rm -rf /bak/db_bak/hbskjt_db$(date -d -5day +"%Y%m%d")*.gz
- rm -rf /var/ftp/pub/hbskjt_db$(date -d -1day +"%Y%m%d")*.gz //异地备份只保留一天,确保每天下载的是当天最新的数据,解决覆盖文件的问题
- rm -rf /var/ftp/pub/oa_$(date -d -1day +"%Y%m%d")*.gz
- [root@yinyong oracle]# chmod 777 clear.sh
编辑cron
- [root@yinyong ~]# crontab -e
- 0 1 * * * /home/oracle/db_back.sh //凌晨一点做数据库备份
- 0 2 * * * /home/oracle/db_web.sh //凌晨二点做网站备份
- 0 3 * * * /home/oracle/clear.sh //凌晨三点删除以前的备份
目前本地服务器的备份做好了,现在需要配置windows server 2008 异地服务器。
用的是FlashFXPliehuo4.2.6软件
配置登录参数:
配置异地服务器存放路径:d:\tet\pub
Linux服务器备份路径:/var/ftp/pub:
点击右键“队列”
会生成下面的配置文件:
右键另存为*fqf文件。
点击软件 工具--计划,创建新的计划任务,“队列文件”就选择刚才保存的*fqf文件
配置计划任务:
这样就可以自动下载了,在Linux服务器上做异地备份的目录,最好做成一天一删除,这样每天下载的内容就是最新的,而不用考虑重复下载和覆盖以前的工程、数据库等。这个计划任务最好是设置在凌晨,减少因为下载带来的网络负荷问题。