第36课 rsync全网备份项目实战 2019-05-21

一、 企业案例:rsync上机实战考试题:

web01 10.0.0.7
backup 10.0.0.41
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:
每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
rsync守护进程模式
定时任务 (脚本)
具体要求如下:
客户端:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
2)Web服务器站点目录假定为(/var/www/html)。
3)Web服务器本地仅保留7天内的备份。
服务器端:
4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。

二、前期基础环境准备思路:

2.1 第一步先要把服务器端的rsync服务和虚拟用户rsync、块目录backup、密码文件/etc/rsync.password等的环境创建好:

2.1.1 客户端想要进行守护进程推文件到服务器,首先需要确保服务器端的rsync服务已经开启;

2.1.1 .1 先配置vim /etc/rsyncd.conf文件

##Rsync server
##created by oldboy 15:01 2009-6-5
##rsyncd.conf start##
fake super = yes
uid = rsync  (uid指定rsync运行的用户,虚拟用户)
gid = rsync  (gid指定rsync运行的用户,虚拟用户)

use chroot = no
max connections = 2000(最大连接数)
timeout = 600 (超时时间)
pid file = /var/run/rsyncd.pid(pid进程号)
lock file = /var/run/rsync.lock(锁文件,两个窗口同时运行yum)
log file = /var/log/rsyncd.log(日志,排错需要查看)
ignore errors
read only = false (关闭只读)
list = false
#hosts allow = 10.0.0.0/24(白名单)
#hosts deny = 0.0.0.0/32(deny拒绝)
auth users = rsync_backup(指定认证用户,虚拟不存在)
secrets file = /etc/rsync.password(密码文件)
#####################################
[backup](data模块一般与目录的名字相同)
comment = www by old0boy 14:18 2012-1-13
path = /backup (指定共享目录)

2.1.1.2 配置完 /etc/rsyncd.conf文件后,重启服务

systemctl restart  rsyncd (重启服务)

systemctl  enable rsycd     (开机自启动服务)

2.1.1.3 查看是否启动和开机自启动

[root@backup ~]# systemctl status  rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2019-05-21 14:56:27 CST; 4h 36min ago
 Main PID: 8891 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─8891 /usr/bin/rsync --daemon --no-detach

May 21 14:56:27 backup systemd[1]: Stopped fast remote file copy program daemon.
May 21 14:56:27 backup systemd[1]: Started fast remote file copy program daemon.
[root@backup ~]# systemctl is-enabled  rsyncd
enabled

2.1.1.4 查看进程与端口是都开启

root@backup ~]# ps -ef |grep rsync 
root       9749      1  0 16:12 ?        00:00:00 /usr/bin/rsync --daemon --no-detach
root       9751   9490  0 16:13 pts/1    00:00:00 grep --color=auto rsync
[root@backup ~]# ss -lntup|grep rsync 
tcp    LISTEN     0      5         *:873                   *:*                   users:(("rsync",pid=9749,fd=3))
tcp    LISTEN     0      5        :::873                  :::*                   users:(("rsync",pid=9749,fd=5))

2.1.2 需要创建虚拟用户rsync;

[root@backup ~]#    useradd  -M -s /sbin/nologin  rsync

2.1.3 需要给服务器端创建backup块目录,并更改rsync的用户主与用户组;

[root@backup ~]#    mkdir  /backup
[root@backup ~]# chown  rsync.rsync  /backup

2.1.4 创建密码文件/etc/rsync.password,并写入密码,然后授权600的权限

[root@backup ~]# echo "rsync_backup:123456'" >/etc/rsync.password
[root@backup ~]# chmod  600  /etc/password
2.2 给客户端需要配置密码文件/etc/rsync.password并修改600权限和创建/var/www/html
[root@nfs01 ~]# echo "123456" >/etc/rsync.password
[root@nfs01 ~]# chmod  600  /etc/password
[root@nfs01 ~]# mkdir -p  /var/www/html

完成2.1和2.2的操作以后,就对服务器端和客户端最基本的环境创建完成,现在开始做项目!!!

三、项目实战思路:

3.1 在客户端下进行:先给客户端在/backup下创建以ip命名的目录、用时间打包压缩/var/www/html目录、记录指纹md5sum、推送到服务器的块目录backup、然后对客户端本地7天外的文件进行删除:

3.1.1 先在客户端的/backup下用本机ip命名目录:

[root@web01 ~]# IP=$(hostname -I |awk '{print $NF}')
[root@web01 ~]# echo $IP
172.16.1.7
[root@web01 ~]# mkdir -p /backup/$IP

3.1.2 用时间打包/var/www/html 文件:

[root@web01 ~]# tar zcf /backup/$IP/$(date +%F_%w).tar.gz   /var/www/html

3.1.3 记录指纹信息,重定向到/backup/$IP/web01.md5中:

[root@web01 ~]# find /backup/  -type f -name '*.tar.gz' |xargs md5sum  >/backup/$IP/web01.md5

3.1.4 把/backup目录下的内容全部同送到服务器的/backup中:

[root@web01 ~]# rsync -avz /backup/  rsync_backup@10.0.0.41::backup  --password-file=/etc/rsync.password

3.1.5 对/backup目录下的文件,只保留7天内的,其余的删除:

[root@web01 ~]#  find  /backup/ -type f -name '*.tar.gz'  -mtime  +7 |xargs  rm -rf 

3.1.6 以上5步运行没问题后,写入脚本文件/server/scripts/bak.sh(需要自行创建):

[root@web01 ~]# vim    /server/scripts/bak.sh 
#!/bin/bash
.   /etc/profile

IP=$(hostname -I |awk '{print $NF}')
#mkdir dir
mkdir -p /backup/$IP
#tar
tar zcf /backup/$IP/$(date +%F_%w).tar.gz   /etc/  /var/www/html
#make md5
find /backup/  -type f -name '*.tar.gz' |xargs md5sum  >/backup/$IP/web01.md5
#rsync.server 
rsync -avz /backup/  rsync_backup@10.0.0.41::backup  --password-file=/etc/rsync.password
#del 7 day ago  files
find  /backup/ -type f -name '*.tar.gz'  -mtime  +7 |xargs  rm

3.1.7 运行脚本没问题后,写定时任务:

[root@web01 ~]# crontab -e

# * * * * *  /bin/sh /server/scripts/bak.sh   >/dev/null   2>&1
~                                                                   

以上的所有操作就完成了客户端的配置,接下来需要去服务器端收数据、验证指纹信息等

3.2 在服务器下进行:先需要检查服务器下的/backup是否收到客户端推送的数据、验证指纹信息、保留180内的数据和每周六的数据、将备份的结果发送到邮箱:

3.2.1 先检查在/backup下是否收到客户端推送的数据:

[root@backup ~]# ll  /backup
total 8
drwxr-xr-x 2 rsync rsync   50 May 21 17:40 172.16.1.7

3.2.2 进行指纹验证(2种方法均可以实现验证):

[root@backup ~]# md5sum -c  /backup/*/*.md5 >/backup/result.txt
[root@backup ~]# find /backup/  -type  f -name "*.md5"|xargs md5sum -c

3.2.3 删除180前的文件但是要保留每周6的文件:

[root@backup ~]# find  /backup/ -type f  -name "*.tar.gz"  ! -name "*-6.tar.gz"  -mtime +180  |xargs rm

3.2.4 发送邮件:

[root@backup ~]# mail  -s "Backup check result"  lidao996@163.com    </backup/result.txt

3.2.5 验证以上信息可执行后,写入脚本文件/server/scripts/check.sh(需要自行创建):

[root@backup ~]# vim /server/scripts/check.sh
#!/bin/bash
. /etc/profile

#check
md5sum -c  /backup/*/*.md5  >/backup/result.txt
# find /backup/  -type  f -name "*.md5"|xargs md5sum -c

#del 180 ago
find  /backup/ -type f  -name "*.tar.gz"  ! -name "*-6.tar.gz"  -mtime +180  |xargs rm

#send mail 
mail  -s  "Backup check result"  lidao996@163.com    </backup/result.txt

3.2.6 运行脚本没问题后,写定时任务:

[root@backup ~]# crontab -e
# * * * * *  /bin/sh /server/scripts/check.sh   >/dev/null   2>&1
~                                                                   

四、邮件服务启用时候需要进行如下操作:

4.1 检查服务是否正在运行、是否开机自启:
[root@backup ~]# systemctl restart postfix.service 
[root@backup ~]# 
[root@backup ~]# systemctl is-active postfix.service 
active
[root@backup ~]# systemctl is-enabled  postfix.service 
enabled
4.2 进行服务配置如下:
vim /etc/mail.rc 
set from=lidao996@163.com  smtp=smtp.163.com    smtp-auth-user=lidao996    smtp-auth-password=oldboyedu123   smtp-auth=login
4.3 重启服务:
systemctl restart postfix.service
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容