] && verb=v
[ "$i" = "progress" ] && progress="--progress"
done
RSYNC_SERVER=192.168.0.223
AUTH_USER=backup
BAKROOT=/var/backup/
INC_DIR=increment
NOW=`date %Y-%m-%d_%H:%M`
[ ! -e $BAKROOT ] && mkdir -p $BAKROOT
PASSWD_FILE=/etc/rsyncd.srt
PASSWD_PERM=`ls -l $PASSWD_FILE|awk ''{print $1}''`
if [ "$PASSWD_PERM" != "-rw-------" ]; then
echo -e "\nWARNING: permission of passwd file changed to 0600 \n";
chmod 0600 $PASSWD_FILE
fi
LOGFILE=/var/log/rsync/rsyncbak.log
EXCLUDES=/var/log/rsync/exclude_file
[ ! -e $EXCLUDES ] && touch $EXCLUDES
BACKUP_MODULES="apache"
OPTIONS="--force --ignore-errors --delete --delete-excluded \
--exclude-from=$EXCLUDES $progress \
--password-file=$PASSWD_FILE --backup"
rm -f /var/log/rsync/log.*
log_id=0
for bakdir in $BACKUP_MODULES; do
log_id=`expr $log_id 1`
SUBOPTS="--backup-dir=$BAKROOT/$INC_DIR/$BACKUP_MODULES/$NOW -az${verb}"
rsync $OPTIONS $SUBOPTS $AUTH_USER@$RSYNC_SERVER::$bakdir \
$BAKROOT/$bakdir | tee /var/log/rsync/log.$log_id
done
cat /var/log/rsync/log.* >> $LOGFILE
rm -f /var/log/rsync/log.*
#end of rsync.sh
[root@web2 ~]# chmod a x /var/scripts/rsync.sh
[root@web2 ~]# mkdir /var/log/rsync
开始备份:
[root@web2 ~]# /var/scripts/rsync.sh verb progress
备份时,会自动从密码文件读取密码进行验证,备份的详细信息及进度会在当前终端输出,同时也记录到 backup.log 文件中.
两次备份后,如果数据在这段时间内有改动,会产生差异备份数据,用当前时间命名,便于以后查找
如果有些数据不想备份,可以加入到 exclude_file 文件中,每条记录占一行,支持通配符,比如
/tmp ## 排除名为 tmp 的根目录
.[a-z]* ## 不备份以点开头的隐藏文件
我这里将不备份logs目录
vim /var/log/rsync/exclude_file(此路径根据脚本文件中定义的变量EXCLUDES而定)
logs
任务计划(根据实际情况而定,这里是每2分钟就进行一次数据同步)
# crontab -e
*/2 * * * * /var/scripts/ rsync.sh
设计防火墙规则:
在dns.eyo.com(网关服务器)编写iptables脚本:
[root@dns named]# vim /var/scriptd/ipt_nat.sh
#!/bin/bash
IPT="/sbin/iptables"
OUT_IP="173.16.16.1"
OUT_IF="eth0"
LAN_NET="192.168.0.0/24"
LAN_IF="eth1"
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -t raw -F
$IPT -X
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT
/sbin/sysctl -w net.ipv4.ip_forward=1
$IPT -A INPUT -s $LAN_NET -i $LAN_IF -j ACCEPT
$IPT -A INPUT -i $OUT_IF -p udp --dport 53 -j ACCEPT
$IPT -A FORWARD -s $LAN_NET -p tcp -m multiport --dport 22,80 -j ACCEPT
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -t nat -A POSTROUTING -s $LAN_NET -o $OUT_IF -j SNAT --to-source $OUT_IP
$IPT -t nat -A PREROUTING -i $OUT_IF -d $OUT_IP -p tcp --dport 80 -j DNAT --to-destination 192.168.0.225
$IPT -t nat -A PREROUTING -i $OUT_IF -d $ |