全网备份

 全网备份

已知 3台服务器主机 台服务器主机 台服务器主机 台服务器主机 名分别 为 web01web01 web01web01、backup backup backup backup 、nfs01 nfs01nfs01,主机 信息见下表 信息见下表 信息见下表


要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器

具体要求如下:

1)   所有服务器的备份目录必须都为/backup

     需要创建备份目录

2)要备份的系统配置文件包括但不限于:

a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)。

b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)。

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

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

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

定时任务   打包压缩

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

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

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

Find 查找7天以前的 删除

6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。

Find查找时!过去出   周一的文件 !-name “*-1.tar.gz”

7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。

由于用ip地址命名   在客户端创建  /backup/$(hostname -i)/   目录 

8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中

思路总结

  1. 1.       部署客户端    服务端  rsync    nfs    rpcbind
  2. 2.      客户端

01.打包压缩文件 到指定目录/backup  

02.检查打包的是否正确   小心 软连接(坑啊)  加  h ***

04.校检  md5 配置变化信息

03.保留7天以内的    删除 7天以前的

04.然后推送   到  服务端

  1. 3.      服务段
  2. 01.  找到半年以前的  但是不包含周1的删除
  3. 02.  对比  md5 –c   推过来的信息  是否变化
  4. 03.  邮件
  5. 04.  测试 脚本 运行 正确 写入定时任务  错误 继续排查

 解决方案

web01

[root@web01 backup]# vim   /server/scripts/web.sh

#!/bin/bash

Dir="/backup"

IP=`hostname -i`

Date=`date +%F-%w -d "-1day"`

# mkdir dir

mkdir -p $Dir/$IP

#tar sysconfig

tar zchf $Dir/$IP/sys-${Date}.tar.gz /var/spool/cron/root  /etc/rc.local  /etc/sysconfig/iptables /server/scripts

#tar www

tar zcf $Dir/$IP/www-${Date}.tar.gz /var/html/www

#tar logs

tar zcf  $Dir/$IP/logs-${Date}.tar.gz /app/logs

#find mdg

find $Dir/ -type f -name "*.tar.gz" | xargs md5sum >$Dir/$IP/finger.txt

#find  rm

find $Dir/ -type f -mtime +7 -name "*.tar.gz" | xargs rm -f

#raync info

rsync -avz $Dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

[root@web01 backup]# crontab -l

#crond-id-001:time sync by oldboy

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

0 0 * * * /bin/sh /server/scripts/web.sh &>/dev/null

[root@web01 backup]#

~ [root@web01 backup]# sh  /server/scripts/web.sh

tar: Removing leading `/' from member names

tar: Removing leading `/' from member names

tar: Removing leading `/' from member names

sending incremental file list

172.16.1.8/finger.txt

172.16.1.8/logs-2017-08-31-4.tar.gz

172.16.1.8/sys-2017-08-31-4.tar.gz

172.16.1.8/www-2017-08-31-4.tar.gz

 

sent 1731 bytes  received 115 bytes  1230.67 bytes/sec

total size is 1516  speedup is 0.82

nfs储存服务器

[root@nfs01 backup]# cat   /server/scripts/nfs.sh

#!/bin/bash

IP=`hostname -i`

Dir="/backup"

Date=`date +%F-%w -d "-1day"`

# mkdir

mkdir -p $Dir/$IP

#tar sysconfig

tar zchf $Dir/$IP/sys.backup-${Date}.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables

#tar www

tar zcf $Dir/$IP/html.backup-${Date}.tar.gz /var/html/www

#tar logs

tar zcf $Dir/$IP/logs.backup-${Date}.tar.gz /app/logs

#find md5

find $Dir/ -type f  -name "*.tar.gz" |xargs md5sum >$Dir/$IP/finger.txt

#find rm

find $Dir/ -type f  -name "*.tar.gz" -mtime +7 |xargs rm -f

#rsync

rsync -avz $Dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

[root@nfs01 backup]#

[root@nfs01 backup]# sh    /server/scripts/nfs.sh

tar: Removing leading `/' from member names

tar: Removing leading `/' from member names

tar: Removing leading `/' from member names

sending incremental file list

./

172.16.1.31/finger.txt

172.16.1.31/html.backup-2017-08-31-4.tar.gz

172.16.1.31/logs.backup-2017-08-31-4.tar.gz

172.16.1.31/sys.backup-2017-08-31-4.tar.gz

 

sent 1416 bytes  received 118 bytes  3068.00 bytes/sec

total size is 1660  speedup is 1.08

[root@nfs01 backup]#

[root@nfs01 backup]# crontab -l

#crond-id-001:time sync by oldboy

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

0 0 * * * /bin/sh /server/scripts/nfs.sh &>/dev/null

backup服务器

[root@backup backup]# cat    /server/scripts/backup.sh

#!/bin/bash

#Author:oldboy

#Blog:http://oldboy.blog.51cto.com

#Time:2017-08-31 18:11:36

#Name:/server/scripts/backup.sh

#Version:V1.0

#Description:This is a test script.

Dir="/backup"

IP=`hostname -i`

#find rm

find $Dir/  -type f -mtime +180 ! -name "*-1.tar.gz" | xargs rm -f

#find md5

find $Dir/ -type f -name "*.txt" | xargs md5sum -c >$Dir/result.log

#mail

mail -s "result" m17560610290@163.com <$Dir/result.log

 

 

[root@backup backup]#

邮件设置:

[root@backup ~]# tail -8 /etc/mail.rc

# For Linux and BSD, this should be set.

set bsdcompat

set from=m17560610290@163.com

set smtp=smtp.163.com

set smtp-auth-user=m17560610290@163.com

set smtp-auth-password=520520LJS

set smtp-auth=login

 

[root@backup ~]#

定时任务:

[root@backup ~]# crontab -l

#crond-id-001:time sync by oldboy

*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1

#rsync

0 0 * * * /bin/sh server/scritps/backup.sh >/dev/null 2>&1

     

原文地址:https://www.cnblogs.com/zdqc/p/9430911.html