利用rsync与crond服务器进行WEB服务备份,rsynccrond


利用rsync与crond服务器进行WEB服务备份
场景:
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失。
现在领导要求你把数据在其他机器上做一个备份。要求如下:
每天晚上00点在Web服务器A上打包备份系统配置文件、网站程序目录及访问日志并通过
rsync命令推送到服务器B上备份保留。
备份思路:可以事先在本地按日期打包,然后在推送到备份服务器上。
具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须为/backup。
2)系统配置文件包括但不限于:
a.定时任务服务的配置文件
b.开启自启动文件的配置/etc/rc.d/rc.local
c.日常脚本的目录/server/scripts
d.防火墙iptabls的配置文件/etc/sysconfig/iptables
e.其他需要备份的目录
3)Web服务器站点目录假定为/var/html/www
4)Web服务器A访问的日志路径假定为(/app/logs)
5) Web服务器保留打包后的7天的备份数据。备份服务器B上保留6个月的数据副本。
6)备份服务器B上按照备份数据的服务器的IP为目录保存,打包的文件按照时间名字保存。
逻辑架构图:。。。。。
特别说明:
1)工作中领导很可能不会告诉你如何去做,只会提需求,例如:小崔,WEB服务器很重要,请你把
数据在别的服务器备份一份。
2)逻辑架构图更不可能是领导给你画,而是你理解了领导的意思,然后自己想出备份的方案,最后,在
实施前你做的一个图纸而已。


环境说明:
192.168.0.252 web
192.168.0.251 backup


抽象出技术点:
A、在备份服务器B上实施rsync服务,A是客户端。
B、在A上对重要数据进行备份,实践上就是写一个备份脚本。
C、做一个定时任务,执行B步骤中的备份脚本。




开始部署
A、在备份服务器B上实施rsync服务,A是客户端。
一、什么是rsync


  rsync,remote synchronize顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,
可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync是用 “rsync 算法”提供了一个客户机和
远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另外
它还是免费的软件。
  rsync 包括如下的一些特性:


  能更新整个目录和树和文件系统;
  有选择性的保持符号链链、硬链接、文件属于、权限、设备以及时间等;
  对于安装来说,无任何特殊权限要求;
  对于多个文件来说,内部流水线减少文件等待的延时;
  能用rsh、ssh 或直接端口做为传输入端口;
  支持匿名rsync 同步文件,是理想的镜像工具;
开始部署rsync服务
1、确定安装rsync软件包
[root@backup ~]# rpm -qa|grep rsync
rsync-3.0.6-12.el6.x86_64
2、配置rsync配置文件
rsync配置文件如下:/etc/rsyncd.conf
###rsyncd.conf start###
uid=rsync
gid=rsync
use chroot=no
max connections=200
timout=300
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsync.lock
log file=/var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only=false
list=false
hosts allow=10.0.0.0/24
hosts deny=0.0.0.0/32
auth users=rsync_backup
secrets file=/etc/rsync.password
#rsync_config________________________end###


3、添加用户备份目录
[root@backup ~]# mkdir /backup
[root@backup ~]# useradd rsync -s /sbin/nologin
[root@backup ~]# id rsync
uid=502(rsync) gid=502(rsync) groups=502(rsync)
[root@backup ~]# chown -R rsync /backup/
[root@backup ~]# ll /backup -ld
drwxr-xr-x 2 rsync root 4096 Jan 14 20:25 /backup
4、启动rsync守护进程
[root@backup ~]# rsync --daemon
[root@backup ~]# netstat -lntup|grep 873
tcp        0      0 0.0.0.0:873                 0.0.0.0:*                   LISTEN      1477/rsync          
tcp        0      0 :::873                      :::*                        LISTEN      1477/rsync    
5、rsync开机自启动
[root@backup ~]# echo "#rsync bak by baizuo 20180120">>/etc/rc.local ;echo "/usr/bin/rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local 
[root@backup ~]# tail /etc/rc.d/rc.local -n2
#rsync bak by baizuo 20180120
/usr/bin/rsync --daemon


6、配置用于rsync同步的账号、密码及账号文件权限
(只是用作rsync账号验证的虚拟用户,并非系统本身用户)
[root@backup ~]# echo "rsync_backup:baizuo" >/etc/rsyncd.password
[root@backup ~]# tail /etc/rsync.password 
rsync_backup:baizuo
[root@backup ~]# chmod 600 /etc/rsync.password 
[root@backup ~]# ll /etc/rsync.password 
-rw------- 1 root root 20 Jan 20 17:06 /etc/rsync.password


7、在客户端进行配置
[root@web ~]# echo "baizuo" >/etc/rsync.password
[root@web ~]# chmod 600 /etc/rsync.password 
[root@web ~]# ll /etc/rsync.password 
-rw------- 1 root root 7 Jan 20 17:04 /etc/rsync.password


8、在客户端进行推送测试
[root@web ~]# /backup
[root@web ~]#  touch /backup/test.txt
[root@web ~]# rsync -avzP /backup/ rsync_backup@192.168.0.251::backup/ --password-file=/etc/rsync.password 
sending incremental file list
./
test.txt
           0 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/2)


sent 78 bytes  received 30 bytes  216.00 bytes/sec
total size is 0  speedup is 0.00


A技术点--------------OK----------------------------
B、在A上对重要数据进行备份,实践上就是写一个备份脚本。
对上面所说的配置文件做备份。


#先在shell上做一次打包压缩测试。(可以不做测试)
[root@web ~]# mkdir /var/html/www/baizuo -p
[root@web ~]# mkdir /app/logs/baizuo_log -p
[root@web ~]# cd /var/html/www/
[root@web www]# tar zcvf baizuo_web_$(date +%F).tar.gz ./baizuo
./baizuo/
[root@web www]# ll
drwxr-xr-x 2 root root 4096 Jan 20 17:32 baizuo
-rw-r--r-- 1 root root  114 Jan 20 17:34 baizuo_web_2018-01-20.tar.gz


2、编写脚本,在测试一下。
(这个脚本并不规范,你可以完善它。)
[root@web www]# mkdir /server/scripts/ -p
[root@web www]# mv rsync_copyall.sh /server/scripts/


[root@web www]# cat /server/scripts/rsync_copyall.sh 
#backup web_site
cd /var/html&&tar zcf /backup/www_$(date +%F).tar.gz ./www
cd /app/ && tar zcf /backup/logs_$(date +%F).tar.gz ./logs


#backup system config
cd / && tar zcf /backup/etc_$(date +%F).tar.gz ./etc


#backup crond root
cd /var/spool/cron/ && tar zcf /backup/crond_root_$(date +%F).tar.gz ./root


#rsync data to bakserver
rsync -avzP /backup/ rsync_backup@192.168.0.251::backup/ --password-file=/etc/rsync.password >/dev/null 2>&1


#del data 7 days ago
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f


3、测试脚本,查看结果
客户端执行脚本
[root@web scripts]# sh rsync_copyall.sh 
服务的查看结果
[root@backup ~]# ll /backup/
total 10276
-rw-r--r-- 1 rsync rsync      161 Jan 20 17:54 crond_root_2018-01-20.tar.gz
-rw-r--r-- 1 rsync rsync 10509606 Jan 20 17:54 etc_2018-01-20.tar.gz
-rw-r--r-- 1 rsync rsync      136 Jan 20 17:54 logs_2018-01-20.tar.gz
-rw-r--r-- 1 rsync rsync        0 Jan 20 17:07 test.txt
-rw-r--r-- 1 rsync rsync      341 Jan 20 17:54 www_2018-01-20.tar.gz
PS:可以看到推送成功了,但是呢,这里有一个问题,服务端的文件是不是应该用IP保存呢。
解决办法:
完善脚本功能:
[root@web scripts]# cat rsync_copyall.sh 
IP=`grep IPADDR /etc/sysconfig/network-scripts/ifcfg-eth0 |cut -d '=' -f2`
mkdir /backup/$IP


#backup web_site
cd /var/html&&tar zcf /backup/$IP/www_$(date +%F).tar.gz ./www
cd /app/ && tar zcf /backup/$IP/logs_$(date +%F).tar.gz ./logs


#backup system config
cd / && tar zcf /backup/$IP/etc_$(date +%F).tar.gz ./etc


#backup crond root
cd /var/spool/cron/ && tar zcf /backup/$IP/crond_root_$(date +%F).tar.gz ./root


#rsync data to bakserver
rsync -avzP /backup/$IP rsync_backup@192.168.0.251::backup/ --password-file=/etc/rsync.password >/dev/null 2>&1


#del data 7 days ago
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f


备份服务器端查看结果:
[root@backup backup]# ls /backup/192.168.0.252/
crond_root_2018-01-20.tar.gz  logs_2018-01-20.tar.gz
etc_2018-01-20.tar.gz         www_2018-01-20.tar.gz


B技术点______________________________完成!
C、做一个定时任务,执行B步骤中的备份脚本。
(客户端做一个定时任务)每天0点备份数据,数据保存7天。
[root@web scripts]# crontab -l
30 * * * * /usr/sbin/ntpdate cn.ntp.org.cn >/dev/null 2>&1
#bak local data by baizuo at 2018.1.20
00 00 * * * /bin/sh /server/scripts/rsync_copyall.sh >/dev/null 2>&1 
(服务端做个定时任务)备份数据保存6个月。
[root@backup scripts]# crontab -l
30 * * * * /usr/sbin/ntpdate cn.ntp.org.cn >/dev/null 2>&1
#keep data 180 days
00 00 * * * /bin/sh /server/scripts/keepdata180days.sh >/dev/null 2>&1  版权声明:本文为博主原创文章,可以自由转载,但请注明出处。 http://blog.csdn.net/baizuo_1/article/details/79115950

相关内容

    暂无相关文章