- 論壇徽章:
- 0
|
使用rsync備份自動化備份數(shù)據(jù)
By:梁利文(Leif) 2008-10-11 Email:liangliwe # gmail.com
1.rsync使用deamon非rsync走ssh通道模式,實(shí)現(xiàn)快速自動化將備份數(shù)據(jù)推給備份服務(wù)器
2.備份數(shù)據(jù)使用單獨(dú)的用戶組(如backup)進(jìn)行存取
3.備份端機(jī)器將rsync存取權(quán)限的密碼寫入/etc/rsync.pass文件 以便實(shí)現(xiàn)使用shell備份過程中的自動化
4.備份數(shù)據(jù)以data命令生成的時間作為備份周期
5.備份日志每備份一次,根據(jù)日期和機(jī)器名生成一個日志 格式為hostname20081011.log
6.使用email將每天備份日志發(fā)送給備份管理員,以確定備份是否成功
7.安全 使用iptables 做端口防問控制 訪問rsync使用的端口873,例如只允問同一IDC的內(nèi)網(wǎng)網(wǎng)段10.0.0.0/24
則執(zhí)行:
iptables -A INPUT -p tcp -s ! 10.0.0.0/24 --dport 873 -j DROP
增加ip防問則執(zhí)行(注意使用-I的參數(shù)把規(guī)則加在最前面:
iptables -I INPUT -p tcp -s xxx.xxx.xxx.xxx --dport 873 -j ACCEPT
備份服務(wù)器端配置(rsync deamon)
/etc/rsync.conf文件內(nèi)容
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
執(zhí)行如下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中實(shí)現(xiàn)隨機(jī)啟動
查看rsync是否啟動
ps -ef |grep rsync 是否有進(jìn)程
telnet localhost 873是否有響應(yīng)
至此rsync 備份服務(wù)器配置OK
需要備份的機(jī)器上的安排:
例如我需要將/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 發(fā)送email程序 http://www.cleancode.org/projects/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 ###備份服務(wù)器IP
hostname >>$LOG ###將主機(jī)名寫入日志
date >>$LOG ###寫入備份開始時間
$RSYNC -avpz $DIR1 $EXCLUDE $PASS --port=873 backup@$BM::game3/$DATE/ >>$LOG
date >>$LOG ###寫入備份結(jié)束時間
$EMAIL -s "backuplog" $ADMIN < $LOG
exit 0
再執(zhí)行
chmod +x /usr/local/bin/backup.sh
echo "backup" >/etc/rsync.pass
chmod 600 /etc/rsync.pass
讓備份shell 每晚1點(diǎn)執(zhí)行
crontab -e
加入
1 1 * * * /usr/local/bin/backup.sh
說明:
1.多個機(jī)器的備份可以在備份服務(wù)器的/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
并創(chuàng)建/opt/backup/server1目錄,并使用chown -R backup:backup /opt/backup/server1改屬主為backup
2.如備份多個目錄,在/usr/local/bin/backup.sh增加即可
至此全文完
[ 本帖最后由 leaf1981 于 2008-10-11 12:16 編輯 ] |
|