Linux运维day33-阶段二——远程备份项目

一、项目结构图

二、服务端环境配置

1、环境初始化


1.安装

[root@backup ~]# yum install rsync -y

2.配置 ( 改变程序运行轨迹 )

[root@backup ~]# cat /etc/rsyncd.conf

uid = rsync

gid = rsync

port = 873

fake super = yes

use chroot = no

max connections = 200

timeout = 600

ignore errors

read only = false

list = false

auth users = rsync_backup

secrets file = /etc/rsync.passwd

log file = /var/log/rsyncd.log

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

[backup]

comment = welcome to oldboyedu backup!

path = /backup

3.根据配置创建一些初识环境:

3.1创建rsync用户    rsync程序需要rsync这个用户来运行

[root@backup ~]# groupadd rsync

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

[root@backup ~]# id rsync

uid=1000(rsync) gid=1000(rsync) groups=1000(rsync)

3.2 虚拟用户    /etc/rsync.passwd      username:password

[root@backup ~]# echo "rsync_backup:123456" > /etc/rsync.passwd

[root@backup ~]# chmod 600 /etc/rsync.passwd

3.3 创建一个/backup目录

[root@backup ~]# mkdir /backup

[root@backup ~]# chown -R rsync.rsync /backup/

4.启动

[root@backup ~]# systemctl start rsyncd

[root@backup ~]# systemctl enable rsyncd

5.检测

[root@backup ~]# netstat -lntp | grep 873

tcp        0      0 0.0.0.0:873      0.0.0.0:*        LISTEN    8616/rsync 


2、发邮件的环境初始化

[root@backup /]# yum install mailx -y

[root@backup /]# vim /etc/mail.rc #跳转至最后一行,然后进入编辑模式

set from=发件人@qq.com

set smtp=smtps://smtp.qq.com:465

set smtp-auth-user=发件人@qq.com

set smtp-auth-password=xxxx

set smtp-auth=login

set ssl-verify=ignore

set nss-config-dir=/etc/pki/nssdb/

三、服务端脚本编写

[root@backup ~]# cat /scripts/check_data_notify.sh

#!/usr/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Src=/backup

Date=$(date +%F)

#1.校验每天客户端推送过来的flag数据

md5sum -c ${Src}/*_${Date}/flag_${Date} >${Src}/result_${Date}

#2.邮件通知管理员

mail -s "Rsync Backup ${Date}" 收件人@qq.com < ${Src}/result_${Date}

#3.保留最近180天的数据

find $Src/ -type d -mtime +180 | xargs rm -rf


四、客户端

1、客户端脚本编写

[root@nfs ~]# mkdir /scripts

[root@nfs ~]# vim /scripts/clinet_push_data_server.sh

#!/usr/bin/bash

# variables == 变量  ---> 一个固定的字符串表示一个不固定的值

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

Src=/backup

Host=$(hostname)

Addr=$(ifconfig eth1 | awk 'NR==2 {print $2}')

Date=$(date +%F)

Dest=${Host}_${Addr}_${Date}

#1.准备对应的备份目录

[ -d $Src/$Dest ] ||  mkdir -p $Src/$Dest

#2.将文件拷贝至备份目录

cd / && \

[ -f $Src/$Dest/sys.tar.gz ] ||  tar czf $Src/$Dest/sys.tar.gz etc/fstab etc/hosts etc/passwd && \

[ -f $Src/$Dest/other.tar.gz ] || tar czf $Src/$Dest/other.tar.gz var/spool/cron/ scripts/ && \

#3.添加标记

[ -f $Src/$Dest/flag_${Date} ] ||  md5sum $Src/$Dest/*.tar.gz > $Src/$Dest/flag_${Date}

#4.推送数据至远程仓库

export RSYNC_PASSWORD=123456

rsync -avz $Src/ rsync_backup@172.16.1.41::backup

#5.保留本地最近7天的数据

find $Src/ -type d -mtime +7 | xargs rm -rf

2、定时任务

#定时执行打包脚本,将备份文件和校验flag推送到服务端

*/1 * * * * sh /scripts/script_clinet_bash.sh  >/dev/null


五、QQ邮箱收到邮件

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容