1.第一个服务-rsync备份服务-守护进程模式
1.1概述
- 守护进程:持续运行的进程,也可以叫作服务
- 服务一般分为:服务端与客户端
- 服务端:linux服务器上运行的各种服务软件
- 客户端:linux中的客户端可能是一个命令,也可能是app,小程序等
1.2流程与原理
1.3 rsync守护进程模式快速实战指南
服务端:
客户端:
1)rsync服务端(backup)
a)rsync服务端配置文件
cat /etc/rsyncd.conf
##################################
#rsyncd.conf start##
#rsyncd 20221111
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
#hosts allow = 172.16.1.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[data]
comment = "backup dir by oldboy lidao996"
path = /data
b)创建用户(添加与登录shell无关的用户)
useradd -s /sbin/nologin -M rsync
[root@backup /etc]# id rsync
uid=1000(rsync) gid=1000(rsync) 组=1000(rsync)
c)创建密码文件
1.创建密码文件
echo 'rsync_backup:1' > /etc/rsync.password
2.修改权限
chmod 600 /etc/rsync.password
d)创建共享目录
mkdir -p /data
chown rsync.rsync /data/
e)重启服务
1.检查rsyncd服务状态
systemctl status rsyncd
2.启动rsyncd服务
systemctl restart rsyncd
3.再次检查状态
systemctl status rsyncd
4. 开机自启动
systemctl enable rsyncd
5. 检查进程,端口
ps -ef |grep rsync
ss -tnlp|grep rsync
[root@backup /]# ss -ntlp |grep rsync
LISTEN 0 5 *:873 *:* users:(("rsync",pid=5599,fd=3))
LISTEN 0 5 [::]:873 [::]:* users:(("rsync",pid=5599,fd=5))
f)测试服务端
rsync -avz 文件/目录 验证用户@ip::模块名字
#data->/etc/rsyncd.conf中的[data]
rsync -avz /etc/hostname rsync_backup@10.0.0.41::data
[root@backup /]# ll /data/
总用量 4
-rw-r--r-- 1 rsync rsync 7 9月 27 17:14 hostname
g)排错
看命令行错误提示,大概定位问题。
看日志,看日志,看日志。 /var/log/rsyncd.log ,/var/log/messages
看关键词 error或err或 failed
排查流程与搭建流程一致。
2)rsync客户端(nfs,web01)
其实就是把rsync的命令换到别的机器执行
1.创建客户端:所用密码文件(仅存放密码)
echo '1' >/etc/rsync.pass
chmod 600 /etc/rsync.pass
2.在客户端测试连接rsync服务端
rsync -avz /etc/hosts rsync_backup@10.0.0.41::data --password-file=/etc/rsync.pass
3)小结
1.4 rsync传输全流程详解
1.5 rsync服务总结
- 基础特点:增量同步
- rsync应用场景
- rsync远程模式(用法,选项)
- rsync守护进程模式,必会
- 排错
2 发送邮件方法
2.1概述
通过邮件,微信,钉钉,短信,电话方式进行通知
mailx -s 'hb' 1542293291@qq.com </etc/hosts
内容比较捡漏需要优化
2.1 配置收件人
邮箱开启smtp功能
邮箱中获取授权码(密码)
vim /etc/mail.rc #写到最后
cat >>/etc/mail.rc<<EOF
set bsdcompat
set from=1542293291@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=1542293291@qq.com
set smtp-auth-password=xktfrfvypnvhheic
set smtp-auth=login
EOF
mailx -s 'you website is guale ' -a /etc/hostname 1542293291@qq.com </etc/hosts
3.项目案例:全网备份案例
3.1 项目背景:
刚刚入职,发现网站数据丢失,还无法恢复.没有备份.
决定实施备份项目,备份好网站架构的数据,配置文件,脚本....
3.2 项目步骤
规划下需要备份哪些内容.精确文件,目录.
待备份的内容:
用户数据(数据库,存储).
各种配置文件 (/etc/,某些软件的配置.)
脚本.
网站代码....
略.
如何备份:
书写备份脚本:
备份/etc/目录,备份到/backup/ip/ tar
备份完成,把备份推送到rsync服务端. rsync
清除旧的备份
定时任务定时运行备份.
1)服务端配置
#/etc/rsyncd.conf
[backup]
comment = "backup dir by hb"
path = /backup
systemctl restart rsyncd
mkdir -p /backup
chown rsync.rsync /backup/
测试服务端是否可用(传输文件即可).
#nfs01:
rsync -avz /etc/hosts rsync_backup@10.0.0.41::backup --password-file=/etc/rsync.pass
-
客户端配置(脚本,定时任务)
a)脚本cat back-etc.sh
#!/bin/bash
#author:hb
#desc:备份/etc目录ip_rsync_server=172.16.1.41
ip=hostname -I |awk '{print $2}'
time=date +%F
#1.备份目录
mkdir -p /backup/ip tar zcf /backup/ip/etc.$time.tar.gz /etc/#2.rsync传输备份
rsync -a /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.pass#3.删除旧的备份
#find /backup -type -f -mtime +7 -name "*.tar.gz" |xargs rm -f
b)定时任务
* * * * * sh /server/scripts/back-etc.sh &>/dev/null
c)检查服务端的备份是否存在
watch tree /backup
3)服务端
cat check_backup.sh
#!/bin/bash
#author:hb
#desc:检查备份结果,清理旧的备份,发送邮件
#发送邮件
tree /backup/ |mailx -s '每日备份结果' 1542293291@qq.com
#清理旧的备份
find /backup -type f -mtime +365 -name "*.tar.gz" |xargs rm -f
#加入crontab
3.3项目总结
技术点:rsync守护进程模式,定时任务,脚本(打包备份,变量.),脚本执行检查.
服务端准备好,rsync守护进程模式: backup模块
客户端: 书写脚本,调试脚本
客户端: 书写定时任务执行脚本,
服务端: 书写备份检查脚本(发邮件,删除旧的备份命令.)
服务端,客户端调整定时任务:
客户端: 每天晚上12
服务端: 每天晚上01点