1.rsync使用deamon非rsync走ssh通道模式,实现快速自动化将备份数据推给备份服务器
2.备份数据使用单独的用户组(如backup)进行存取
3.备份端机器将rsync存取权限的密码写入/etc/rsync.pass文件 以便实现使用shell备份过程中的自动化
4.备份数据以data命令生成的时间作为备份周期
5.备份日志每备份一次,根据日期和机器名生成一个日志 格式为hostname20081011.log
6.使用email将每天备份日志发送给备份管理员,以确定备份是否成功
7.安全 使用iptables 做端口防问控制 访问rsync使用的端口873,例如只允问同一IDC的内网网段10.0.0.0/24
则执行:
iptables -A INPUT -p tcp -s ! 10.0.0.0/24 --dport 873 -j DROP
增加ip防问则执行(注意使用-I的参数把规则加在最前面:
iptables -I INPUT -p tcp -s xxx.xxx.xxx.xxx --dport 873 -j ACCEPT
备份服务器端配置(rsync deamon)
/etc/rsync.conf文件内容
uid = backup
gid = backup
use chroot = no
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[game3]
path = /opt/backup/game3
comment = game3
ignore errors
read only = false
list = no
auth users =backup
secrets file = /etc/rsync.pass
执行如下shell
mkdir -p /opt/backup/game3
groupadd backup
useradd -s /sbin/nologin -M -g backup backup
chown -R backup:backup /opt/backup
echo "backup:backup" >/etc/rsync.pass ###用户名和密码都是backup
chmod 600 /etc/rsync.pass
iptables -A INPUT -p tcp -s ! 192.168.10.0/24 --dport 873 -j DROP ###访问控制
/usr/bin/rsync -4 --daemon --config=/etc/rsync.conf --port=873 ###启动rsync
把/usr/bin/rsync -4 --daemon --config=/etc/rsync.conf --port=873加在/etc/rc.local中实现随机启动
查看rsync是否启动
ps -ef |grep rsync 是否有进程
telnet localhost 873是否有响应
至此rsync 备份服务器配置OK
需要备份的机器上的安排:
例如我需要将/usr/local/apache 备份保留 一周
shell脚本/usr/local/bin/backup.sh如下
#!/bin/bash
#/usr/local/bin/backup.sh
#By:Leif Updated:2008-10-11 E-mail&MSN:liangliwn at gmail.com
DATE=`date +%w`
LOGDATE=`date +%Y%m%d`
EMAIL=`/usr/local/bin/email` #Linux 发送email程序
ADMIN=xxx@xxx ###备份管理员email地址
RSYNC=`which rsync`
HOST=`hostname`
LOG=/opt/rsynclog/$HOST$LOGDATE.log
DIR1=/usr/local/apache
PASS="--password-file=/etc/rsync.pass"
BM=xxx.xxx.xxx.xxx ###备份服务器IP
hostname >>$LOG ###将主机名写入日志
date >>$LOG ###写入备份开始时间
$RSYNC -avpz $DIR1 $EXCLUDE $PASS --port=873 backup@$BM::game3/$DATE/ >>$LOG
date >>$LOG ###写入备份结束时间
$EMAIL -s "backuplog" $ADMIN < $LOG
exit 0
再执行
chmod +x /usr/local/bin/backup.sh
echo "backup" >/etc/rsync.pass
chmod 600 /etc/rsync.pass
让备份shell 每晚1点执行
crontab -e
加入
1 1 * * * /usr/local/bin/backup.sh
说明:
1.多个机器的备份可以在备份服务器的/etc/rsync.conf加入
[server1]
path = /opt/backup/server1
comment = server1
ignore errors
read only = false
list = no
auth users =backup
secrets file = /etc/rsync.pass
并创建/opt/backup/server1目录,并使用chown -R backup:backup /opt/backup/server1改属主为backup
2.如备份多个目录,在/usr/local/bin/backup.sh增加即可
阅读(1393) | 评论(0) | 转发(0) |