设为首页 收藏本站
查看: 961|回复: 0

[经验分享] Rsync 网站全网备份

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-6-25 08:48:46 | 显示全部楼层 |阅读模式
Rsync 网站全网备份




某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据做备份,这样Web服务器数据丢失可以进行恢复。要求如下:

每天晚上00点整在Web服务器A上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送到服务器B上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器B上)。

问题一、实现把Web服务器A数据备份到服务器B。

具体要求如下:

1)Web服务器A和备份服务器B的备份目录必须都为/backup。

2)系统配置文件包括但不限于:

a.定时任务服务的配置文件(/var/spool/cron/root)。

b.开机自启动的配置文件(/etc/rc.local)

c.日常脚本的目录(/server/scripts)

d.防火墙iptables的配置文件(/etc/sysconfig/iptables)。

e.自己思考下还有什么需要备份呢?

3)Web服务器站点目录假定为(/var/html/www)。

4)Web服务器A访问日志路径假定为(/app/logs)

5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满),备份服务器B上要保留6个月的数据副本。

6)备份服务器B上要按照备份数据服务器的IP为目录保存,打包的文件按照时间名字保存。

特别提示:本题在工作中是网站生产环境全网备份项目方案的一个小型模拟,很有意义。

解答:



特别说明:

1)工作中领导很可能不会告诉你如何去做,只会提需求,例如:小崔,WEB服务器很重要,请你把数据在别的服务器备份一份(定期的备份)。

2)逻辑架构图更不可能是领导给你画,而是你理解了领导的意思,然后自己想出备份的方案,最后,在实施前你做的一个图纸而已。  


Rsync-server服务端:



[iyunv@yvonne  ~]#   rpm -qa rsync     查看是否有安装包

rsync-3.0.6-12.el6.x86_64

[iyunv@yvonne  ~]# touch /etc/rsyncd.conf  创建配置文件

[iyunv@yvonne  ~]# vim /etc/rsyncd.conf     编辑配置文件

#created  by yvonne 16:30 2015-6-24   

##rsyncd.conf  start##

uid  = rsync                     指定用户uid

gid  = rsync                     指定用户组id

use  chroot = no                 用户不能切入

max  connections = 2000          指定最大连接时2000

timeout  = 600                  指定超时时间

pid  file = /var/run/rsyncd.pid      指定pid文件路径

lock  file = /var/run/rsync.lock      指定lock文件路径

log  file = /var/log/rsyncd.log       指定日志文件路径

ignore  errors                   指定报错提示:

read  only = false                 不允许只读

list  = false                      不允许列表查看

hosts  allow = 192.168.10.0/24      允许的网段

hosts  deny = 0.0.0.0/32            拒绝的网段/ip(此处不拒绝)

auth  users = rsync_backup         指定验证用户

secrets  file = /etc/rsync.password    指定密码文件名

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

[backup]

comment  = backup server  by yvonne 16:30  2015-6-24

path  = /backup                  指定备份路径

"/etc/rsyncd.conf" 22L, 502C  written                                                                     

[iyunv@yvonne ~]#

[iyunv@yvonne  ~]# mkdir /backup   创建备份文件/backup

[iyunv@yvonne  ~]# useradd rsync    创建rsync 用户

[iyunv@yvonne  ~]# chown -R rsync /backup/    更改/backup属主为rsync

[iyunv@yvonne  ~]# ll /backup/

total 0

[iyunv@yvonne  ~]# ls -ld /backup/

drwxr-xr-x. 2 rsync root 4096 Jun 22  19:11 /backup/

[iyunv@yvonne  ~]# echo "rsync_backup:oldboy">/etc/rsync.password  创建密码文件

[iyunv@yvonne  ~]# cat /etc/rsync.password

rsync_backup:oldboy

[iyunv@yvonne  ~]# chmod 600 /etc/rsync.password   更改密码文件权限

[iyunv@yvonne  ~]# ll /etc/rsync.password

-rw-------. 1 root root 20 Jun 22 19:12  /etc/rsync.password

[iyunv@yvonne  ~]# rsync –daemon   启动rsync 服务

[iyunv@yvonne  ~]# vim /etc/rc.local



#!/bin/sh

#

# This script will be executed *after*  all the other init scripts.

# You can put your own initialization  stuff in here if you don't

# want to do the full Sys V style init  stuff.



touch /var/lock/subsys/local

/etc/init.d/iptables stop

rsync  –daemon                  加入开机自启动

~                                                                                                                          

~                                                                                                                          

                                                                                                                     

"/etc/rc.local" 9L, 261C  written  



[iyunv@yvonne  ~]# ll /backup/    验证,备份成功

total 8

-rw-r--r--. 1 rsync rsync 4514 Jun 22  20:19 192.168.10.105_var_html_www_2015-06-22.tar.gz

-rw-r--r--. 1 rsync rsync    0 Jun 22 19:15 test                                                                     



[iyunv@yvonne  ~]# find /backup/ -type f -mtime +180 -name ".*tar" |xargs rm -rf  保留180天内

[iyunv@yvonne  ~]# mkdir -p /server/scripts

[iyunv@yvonne  ~]# vim /server/scripts/reserve.sh        写成脚本



#print  for reserve backup file in  6 mounth by  yvonne 19:44 2015-6-24

find  /backup/ -type f -mtime +180 -name ".*tar" |xargs rm -rf

~                                                                                                                        

~

                                                                                                                                                                                                                                      

"/server/scripts/reserve.sh"  [New] 4L, 135C written                                                      

[iyunv@yvonne ~]#

[iyunv@yvonne  ~]# /bin/sh /server/scripts/reserve.sh   执行脚本

[iyunv@yvonne  ~]# crontab –e                    编辑定时任务

no crontab for root - using an empty one



#print  for reserve backup file in  6 mounth by  yvonne 19:44 2015-6-24

00  00 1 */6 * /bin/sh /server/scripts/reserve.sh >/dev/null 2&>1

~                                                                                                                        



                                                                                                                     

"/tmp/crontab.8J1TLx" 3L, 136C  written

crontab: installing new crontab

[iyunv@yvonne ~]#










Rsync-client客户端



[iyunv@yvonne  ~]# rpm -qa rsync     查看是否有安装包

rsync-3.0.6-12.el6.x86_64

[iyunv@yvonne  ~]# echo "oldboy">/etc/rsync.password   创建密码文件

[iyunv@yvonne  ~]# chmod 600 /etc/rsync.password    修改密码文件的权限为600

[iyunv@yvonne  ~]# cat /etc/rsync.password

oldboy

[iyunv@yvonne  ~]# ll /etc/rsync.password

-rw-------. 1 root root 7 Jun 22 19:22  /etc/rsync.password

[iyunv@yvonne  ~]# mkdir /backup    创建备份目录

[iyunv@yvonne  ~]# cd /backup/  

[iyunv@yvonne  backup]# touch test

[iyunv@yvonne  backup]# cd

[iyunv@yvonne  ~]# rsync /backup/* rsync_backup@192.168.10.106::backup  --password-file=/etc/rsync.password      推送测试

[iyunv@yvonne  ~]# mkdir -p /var/html/www   创建站点目录

[iyunv@yvonne  ~]# cd /var/html/www/

[iyunv@yvonne  www]# ll

total 0

[iyunv@yvonne  www]# mkdir var_spool_cron  创建各个需要备份文件的压缩目录

[iyunv@yvonne  www]# mkdir etc_rc.local

[iyunv@yvonne  www]# mkdir server_scripts

[iyunv@yvonne  www]# mkdir etc_sysconfig_iptables

[iyunv@yvonne  www]# mkdir -p /app/logs   创建访问日志路径

[iyunv@yvonne  www]# ll

total 16

drwxr-xr-x. 2 root root 4096 Jun 22 19:27  etc_rc.local

drwxr-xr-x. 2 root root 4096 Jun 22 19:28  etc_sysconfig_iptables

drwxr-xr-x. 2 root root 4096 Jun 22 19:27  server_scripts

drwxr-xr-x. 2 root root 4096 Jun 22 19:27  var_spool_cron

[iyunv@yvonne www]# cd /etc/

[iyunv@yvonne  etc]# tar -zcvf /backup/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2 {print  $4}'`_etc_rclocal_`date +%F`.tar.gz rc.local        打包rc.local

rc.local

此处省略部分参考“打包rc.local”,先执行命令,然后写入脚本



[iyunv@yvonne  etc]# mkdir -p /server/scripts  







[iyunv@yvonne  ~]# vim /server/scripts/tar.sh  将需要打包的文件放入脚本



#print  for tar important files to /var/html/www by yvonne 18:44 2015-6-24.

cd  /server/ &&\

tar  -zcf /var/html/www/server_scripts/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2  {print $4}'`_server_scripts_`date +%F`.ta

r.gz  scripts



cd  /etc/ &&\

tar  -zcf /var/html/www/etc_rc.local/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2  {print $4}'`_var_spool_cron_`date +%F`.tar.

gz  rc.local



cd  /etc/init.d/ &&\

tar  -zcf /var/html/www/etc_init.d_iptables/`/sbin/ifconfig eth4|awk -F '[: ]+'  'NR==2 {print $4}'`_etc_iptables_`date +%F`

.tar.gz  iptables



cd  /var/spool/ &&\

tar  -zcf /var/html/www/var_spool_cron/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2  {print $4}'`_var_spool_cron_`date +%F`.ta

r.gz  cron

~                                                                                                                          

~                                                                                                                          

~                                                                                                                          

~                                                                                                                          

~                                                                                                                          

"/server/scripts/tar.sh" [New]  12L, 612C written                                                         

[iyunv@yvonne ~]#

[iyunv@yvonne ~]#

[iyunv@yvonne  ~]# /bin/sh /server/scripts/tar.sh    执行脚本

[iyunv@yvonne  ~]# ls /var/html/www/etc_rc.local/

192.168.10.105_var_spool_cron_2015-06-22.tar.gz

[iyunv@yvonne  ~]# ls /var/html/www/etc_init.d_iptables/

192.168.10.105_etc_iptables_2015-06-22.tar.gz

[iyunv@yvonne  ~]# ls /var/html/www/var_spool_cron/

192.168.10.105_var_spool_cron_2015-06-22.tar.gz

[iyunv@yvonne  ~]# ls /var/html/www/server_scripts/

192.168.10.105_server_scripts_2015-06-22.tar.gz

                                                              

[iyunv@yvonne www]# cd /var/html/

[iyunv@yvonne  html]# tar -zcvf /backup/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2 {print  $4}'`_var_html_www_`date +%F`.tar.gz www/

www/

www/var_spool_cron/

www/var_spool_cron/192.168.10.105_var_spool_cron_2015-06-22.tar.gz

www/etc_init.d_iptables/

www/etc_init.d_iptables/192.168.10.105_etc_init.d_iptables_2015-06-22.tar.gz

www/etc_init.d_iptables/192.168.10.105_etc_iptables_2015-06-22.tar.gz

www/server_scripts/

www/server_scripts/192.168.10.105_server_scripts_2015-06-22.tar.gz

www/etc_rc.local/

www/etc_rc.local/192.168.10.105_var_spool_cron_2015-06-22.tar.gz

[iyunv@yvonne  html]# tar -zcf /backup/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2 {print  $4}'`_var_html_www_`date +%F`.tar.gz www/

[iyunv@yvonne  html]# vim /server/scripts/tar.sh





cd /server/ &&\

tar -zcf  /var/html/www/server_scripts/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2  {print $4}'`_server_scripts_`date +%F`.ta

r.gz scripts



cd /etc/ &&\

tar -zcf  /var/html/www/etc_rc.local/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2 {print  $4}'`_var_spool_cron_`date +%F`.tar.

gz rc.local



cd /etc/init.d/ &&\

tar -zcf /var/html/www/etc_init.d_iptables/`/sbin/ifconfig  eth4|awk -F '[: ]+' 'NR==2 {print $4}'`_etc_init.d_iptables_`da

te +%F`.tar.gz iptables



cd /var/spool/ &&\

tar -zcf  /var/html/www/var_spool_cron/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2  {print $4}'`_var_spool_cron_`date +%F`.ta

r.gz cron



cd  /var/html/ &&\

tar  -zcf /backup/`/sbin/ifconfig eth4|awk -F '[: ]+' 'NR==2 {print  $4}'`_var_html_www_`date +%F`.tar.gz www/

~                                                                                                                          

~                                                                                                                          

"/server/scripts/tar.sh" 15L,  748C written                                                               

[iyunv@yvonne html]#

[iyunv@yvonne  html]# /bin/sh /server/scripts/tar.sh

[iyunv@yvonne  html]# ll /backup/

total 8

-rw-r--r--. 1 root root 4514 Jun 22 20:23  192.168.10.105_var_html_www_2015-06-22.tar.gz

[iyunv@yvonne  html]# rsync /backup/* rsync_backup@192.168.10.106::backup  --password-file=/etc/rsync.password       将/backup推送到备份服务器

                                                            

[iyunv@yvonne html]#

[iyunv@yvonne  html]# vim /server/scripts/backup.sh   写成脚本





#print  for backup to backup-server by yvonne 19:29 2015-6-24.

rsync  /backup/* rsync_backup@192.168.10.106::backup  --password-file=/etc/rsync.password

~                                                                                                                        

~                                                                                                                          

                                                                                                                  

"/server/scripts/backup.sh"  [New] 3L, 152C written                                                      

[iyunv@yvonne  html]# /bin/sh /server/scripts/backup.sh   执行脚本

[iyunv@yvonne  html]# /bin/sh /server/scripts/tar.sh

[iyunv@yvonne html]# crontab –e    编辑定时任务

no crontab for root - using an empty one

#print  for backup important files by yvonne 19:28 2015-6-24.

00  22 * * * /bin/sh /server/scripts/tar.sh >/dev/null 2>&1

00  01 * * * /bin/sh /server/scripts/backup.sh >/dev/null 2>&1

                                                                                                                     

                                                                                                                     

"/tmp/crontab.Fe9LeT" 3L, 182C  written

[iyunv@yvonne ~]# crontab -l

#print for backup important files by  yvonne 19:28 2015-6-24.

00 22 * * * /bin/sh  /server/scripts/tar.sh >/dev/null 2>&1

00 01 * * * /bin/sh  /server/scripts/backup.sh >/dev/null 2>&1

[iyunv@yvonne  ~]# mkdir -p /app/logs

[iyunv@yvonne  ~]# crontab -e      



#print  for backup important files by yvonne 19:28 2015-6-24.

00  22 * * * /bin/sh /server/scripts/tar.sh >/app/logs 2>&1

00  01 * * * /bin/sh /server/scripts/backup.sh >/app/logs 2>&1

                                                                                                               

~                                                                                                                          

"/tmp/crontab.f8JwpT" 3L, 182C  written

[iyunv@yvonne  ~]#

[iyunv@yvonne  ~]# find /backup/ -type f -mtime +7 -name ".*tar" |xargs rm -rf  保留7天内的

[iyunv@yvonne ~]# vim /server/scripts/reserve.sh



#print  for reserve backup file in 7 days by yvonne 19:44 2015-6-24.

find  /backup/ -type f -mtime +7 -name ".*tar" |xargs rm -rf

~                                                                                                                                                                                                                           

~                                                                                                                          

"/server/scripts/reserve.sh"  [New] 2L, 129C written                                                      

[iyunv@yvonne ~]#

[iyunv@yvonne  ~]# /bin/sh /server/scripts/reserve.sh  执行脚本

[iyunv@yvonne  ~]# crontab –e             写入定时任务



#print for backup important files by  yvonne 19:28 2015-6-24.

00 22 * * * /bin/sh  /server/scripts/tar.sh >/app/logs 2>&1

00 01 * * * /bin/sh  /server/scripts/backup.sh >/app/logs 2>&1



#print  for reserve backup file in 7 days by yvonne 19:44 2015-6-24.

00  10 * * 0 /bin/sh /server/scripts/reserve.sh >/app/logs 2>&1

~                                                                                                                                                                                                                                 

~                                                                                                                        

"/tmp/crontab.kZUxZs" 6L, 314C  written

crontab: installing new crontab

[iyunv@yvonne ~]#

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-80352-1-1.html 上篇帖子: linux grep命令使用的一些心得 下篇帖子: linux中的hosts.allow和hosts.deny文件 系统优化 linux 网站
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表