Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5274048
  • 博文数量: 1144
  • 博客积分: 11974
  • 博客等级: 上将
  • 技术积分: 12312
  • 用 户 组: 普通用户
  • 注册时间: 2005-04-13 20:06
文章存档

2017年(2)

2016年(14)

2015年(10)

2014年(28)

2013年(23)

2012年(29)

2011年(53)

2010年(86)

2009年(83)

2008年(43)

2007年(153)

2006年(575)

2005年(45)

分类: LINUX

2006-05-31 15:20:26

WebServer磁盘镜像备份方案

——Rsync方式
















2006.05.17

chnl@163.com



一、功能:

在使用dd镜像服务器上的两块SCSI硬盘之后,使用rsync方式同步数据;使用crond调度,采用差异备份方式,每日同步一次,保留一个月的增量数据。使得系统两块硬盘保持同步,使用任意磁盘皆可以启动操作系统并提供服务。

二、配置需求

操作系统:Linux AS3

磁盘:两块相同配置及大小的磁盘,不做RAID

步骤说明:

1安装Linux操作系统

按自己的需求安装Linux操作系统,一定要把所有的分区配置在操作系统的第一块硬盘上;第二块硬盘留作镜像使用。



2使用dd命令镜像第二块磁盘

在安装好操作系统并登陆系统后,使用dd命令镜像第二块磁盘:

要根据自己的情况选择磁盘名称,此处,第一块(已经安装操作系统的)磁盘为/dev/sda,第二块(空白)磁盘为/dev/sdb,执行一下命令:

dd if=/dev/sda of=/dev/sdb

命令运行的时间会比较长,在运行过程中,会看到磁盘状态灯一直在闪烁,一定不要中断此命令。


3配置fstab文件,自动mount分区

dd命令完成对磁盘的镜像之后,修改/etc/fstab文件,使得第二块磁盘在系统自动启动时,能够自动mount。需要在系统根目录下,为第二块磁盘建立mount point,此处,使用/BakId1作为mount point

此处,fstab示例文件的内容为下:

/dev/sda3 / ext3 defaults 1 1

/dev/sda1 /boot ext3 defaults 1 2

none /dev/pts devpts gid=5,mode=620 0 0

/dev/sda5 /home ext3 defaults 1 2

none /proc proc defaults 0 0

none /dev/shm tmpfs defaults 0 0

/dev/sda8 /tmp ext3 defaults 1 2

/dev/sda2 /usr ext3 defaults 1 2

/dev/sda6 /var ext3 defaults 1 2

/dev/sda9 /backup ext3 defaults 1 2

/dev/sdb3 /BakId1/ ext3 defaults 1 2

/dev/sdb1 /BakId1/boot ext3 defaults 1 2

/dev/sdb5 /BakId1/home ext3 defaults 1 2

/dev/sdb8 /BakId1/tmp ext3 defaults 1 2

/dev/sdb2 /BakId1/usr ext3 defaults 1 2

/dev/sdb6 /BakId1/var ext3 defaults 1 2

/dev/sdb9 /BakId1/backup ext3 defaults 1 2

/dev/sda7 swap swap defaults 0 0

/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0

/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0


文件系统 1K-块 已用 可用 已用% 挂载点

在重新启动操作系统之后,df命令的输出如下:

/dev/sda3 8064304 224276 7430372 3% /

/dev/sda1 101089 15064 80806 16% /boot

/dev/sda5 5162796 383928 4516612 8% /home

none 512600 0 512600 0% /dev/shm

/dev/sda8 1035660 32876 950176 4% /tmp

/dev/sda2 10317860 2338716 7455024 24% /usr

/dev/sda6 4127076 81616 3835816 3% /var

/dev/sda9 39681644 32832 37633060 1% /backup

/dev/sdb3 8064304 224288 7430360 3% /BakId1

/dev/sdb1 101089 15064 80806 16% /BakId1/boot

/dev/sdb5 5162796 384180 4516360 8% /BakId1/home

/dev/sdb8 1035660 32876 950176 4% /BakId1/tmp

/dev/sdb2 10317860 2432196 7361544 25% /BakId1/usr

/dev/sdb6 4127076 79944 3837488 3% /BakId1/var

/dev/sdb9 39681644 32832 37633060 1% /BakId1/backup



此时,cp /etc/fstab文件到/BakId1/etc目录下;并在/BakId1目录下新建BakId1目录,使得两块磁盘完全同步。

cp /etc/fstab /BakId1/etc

mkdir /BakId1/BakId1


4配置rsync

1rsyncd.conf配置文件说明

id = root

gid = root

# idgid设置为root,可以对一些nobody没有权限读的文件/目录进行备份。

use chroot = no

max connections = 4

syslog facility = local5

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

lock file = /var/run/rsyncd.lock

#配置需要同步的FileSet

[etc]

path = /etc

comment = etc

auth users = backup

secrets file = /etc/rsyncd.secrets


[tomcat]

path = /usr/local/tomcat

comment = tomcat

auth users = backup

secrets file = /etc/rsyncd.secrets


[backup]

path = /backup

comment = backup

auth users = backup

secrets file = /etc/rsyncd.secrets


[cl]

path = /home/cl

comment = cl

auth users = backup

secrets file = /etc/rsyncd.secrets

2rsyncd.secrets密码配置文件

backup:web_backup

#用户名为backup,密码为web_backup

#要设置此文件只有属主有权限访问


3rsync.sh同步脚本

#!/bin/sh

#########################################################################

#

# File: rsync.sh

# Description: backup data with rsyncd.

# Language: GNU Bourne-Again SHell

# Version: 2.0

# Date: 2006-5-15

# Corp.: Chenlei

# Author: chnl@163.com

# Version 2.0: This Edition use rsync.conf file to get the directory.

# First Edition Info:

# cl, 2004.11.11

# This script gets files from server to local directory to backup.

# It's a month rotating incremental backup.

#

#########################################################################


############################

#

# Exit values:

# ------------

# 0 successful

# Others failur

#

# ----------------------------------------------------------------------

# Args:

# 1. Config File

#


[ -f /etc/profile ] && . /etc/profile

LogDir=/var/log

Prog=/usr/bin/rsync


#解析配置文件中的FileSetDirName

while read Record

do

FileSet=$(echo $Record|grep -v ^#|grep -v ^$| awk -F"\|" '{print $1}')

DirName=$(echo $Record|grep -v ^#|grep -v ^$|awk -F"\|" '{print $2}')


Date=`date +%d`

FileDir=/BakId1/$DirName

[ -d $BakDir ] || mkdir -p $FileDir

BakDir=/BakId1/$DirName/rotating_bak/$Date

LogFile=$LogDir/rsync.$FileSet.log

[ -d $BakDir ] && rm -fr $BakDir

# 设定rsync备份时所使用的参数选项,采用压缩及backup参数

OPTS="--force --ignore-errors --delete --backup --backup-dir=$BakDir -az"

SERVER="backup@127.0.0.1"

export RSYNC_PASSWORD=web_backup

#产生时间戳日志到日志文件

echo "############" >>$LogFile 2>&1

echo "Begin Time: `date`" >>$LogFile 2>&1

$Prog $OPTS $SERVER::$FileSet $FileDir >>$LogFile 2>&1

echo "End Time: `date`" >>$LogFile 2>&1

echo "############" >>$LogFile 2>&1

done < $1


4rsync.sh配置文件

#FileSetDirectory设置

etc|/etc

tomcat|/usr/local/tomcat

cl|/home/cl


5配置crond

1cron脚本runRsync.sh

此脚本执行rsync.sh,同步磁盘数据。

#!/bin/sh

/home/cl/bak_sh/rsync/rsync.sh /home/cl/bak_sh/rsync/rsync.conf


2crond配置

使用crontab -e命令,添加需要执行的cron脚本,如,以下配置表明,在每天的259分执行同步数据的操作。

59 02 * * * /home/cl/bak_sh/rsync/runRsync.sh

使用crontab -l可以列出cron的配置,如下:

59 00 * * 0 /home/cl/bak_sh/tomcat/tomcat_bak.sh

59 02 * * * /home/cl/bak_sh/rsync/runRsync.sh

59 01 * * * /home/cl/logrotate/tomcat/rotate_catalina_log.sh

59 16 * * * /home/cl/SysMon/runSysMon.sh




5附录:

配置文档列表:

rsyncd.conf

rsyncd.secrets

rsync.conf

rsync.sh

阅读(966) | 评论(0) | 转发(0) |
0

上一篇:5.31

下一篇:Nagios配置学习手记

给主人留下些什么吧!~~