Linux-全网备份实战案例rsync邮件发送

2024-08-30 09:12

本文主要是介绍Linux-全网备份实战案例rsync邮件发送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目准备

在这里插入图片描述

服务端:backup:172.16.1.41

客户端1:nfs:172.16.1.31

客户端2: web01:172.16.1.7

1.1 服务端backup-rsync配置文件

[root@backup ~]# cat /etc/rsyncd.conf
#created by linux 2024-8-29
###########rsyncd.conf start###########
fake super = yes
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
timeout = 600
ignore error
read only = false
list = false
#hosts allow = 10.0.0.0/24
#hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#######################################
[backup]
path = /backup

1.2 rsync进一步配置

#创建rsync帐号
[root@backup ~]# useradd -s /sbin/nologin -M rsync
#创建密码文件,格式为‘用户名:密码’
[root@backup ~]# echo 'rsync_backup:1' > /etc/rsync.password
#设置权限为600
[root@backup ~]# chmod 600 /etc/rsync.password 
#创建共享目录
[root@backup ~]# mkdir -p /backup
#设置文件拥有者为rsync
[root@backup ~]# chown -R rsync.rsync /backup
#启动服务
[root@backup ~]# systemctl start rsyncd
#设置开机自启
[root@backup ~]# systemctl enable rsyncd
#测试服务是否可用
[root@backup ~]# rsync -av /etc/hostname rsync_backup@172.16.1.41::backup

2.1 邮件配置

邮件,最简单的一种发送方式,以139邮箱为例,其它邮箱类似
1.配置发件人:139邮箱
获取:授权码(用户密码)
linux配置 /etc/mail.rc
完成
2.发件人:qq
通过命令发送
3.配置发件人
获取授权码

在这里插入图片描述

2.2配置linux mail.rc 配置发件人信息

cat >>/etc/mail.rc <<EOF
#以加密的465端口
set nss-config-dir=/etc/pki/nssdb
set smtp-user-starttls
set ssl-verify=ignore
#配置发件人
set from=您的邮箱@139.com
#加密465端口
set smtp=smtps://smtp.139.com:465
#邮箱名字
set smtp-auth-user=您的邮箱@139.com
#授权码
set smtp-auth-password=填写您的139授权码
set smtp-auth=login#下面3行用于配置加密方式进行传输
set nss-config-dir=/etc/pki/nssdb/
set smtp-user-starttls
set ssl-verify=ignore
EOF

在这里插入图片描述

虽然有报错,但是目的端也是能收到邮件的

2.3 邮件提示证书报错解决方案

echo -n | openssl s_client -connect smtp.139.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/pki/nssdb/139.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/139.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d /etc/pki/nssdb/ -i /etc/pki/nssdb/139.crt
certutil -L -d /etc/pki/nssdb/
cd /etc/pki/nssdb/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 139.crt

2.4 两种邮件发发送方式

mail -s '你的网站巡检信息' 123456789@qq.com < mail.txt
echo '你的网站巡检信息在附件' | mail -s "巡检结果" -a  mail.txt 123456789@qq.com

3.1 客户端备份脚本:nfs-172.16.1.31

#创建rsync密码文件,只需要保存密码即可
[root@nfs ~]# echo '1' > /etc/rsync_client
#设置权限为600
[root@nfs ~]# chmod 600 /etc/rsync_client 
#备份脚本
[root@nfs ~]# cat /server/scripts/conf-bak.sh 
#!/bin/bash
#authro linux by 2024-08-29
#1.变量
ip=` hostname -I | awk '{print $2}'`
time=`date +%F_%w`
backup_dir=/backup/${ip}
backup_file=conf-${time}
backup_ip=172.16.1.41
#2.备份
mkdir -p ${backup_dir}
tar -zcf ${backup_dir}/${backup_file}.tar.gz /etc/  /var/spool/cron
#3.推送
rsync -a ${backup_dir} rsync_backup@${backup_ip}::backup  --password-file=/etc/rsync_client
#4.清理
find /backup -name "*.tar.gz" -type f -mtime +7 |xargs rm -rf#定时任务
[root@nfs ~]# crontab -l
#备份任务
00 00 * * * sh /server/scripts/conf-bak.sh &>/dev/null

3.2 将nfs客户端的脚本推送到另一机器web01客户端上

[root@nfs ~]# scp /server/scripts/conf-bak.sh  root@172.16.1.7:/server/scripts/
[root@nfs ~]# scp /etc/rsync_client root@172.16.1.7:/etc/

3.3 web01-172.16.1.7客户端上的定时任务

#定时任务
[root@web01 ~]# crontab -l
#备份任务
00 00 * * * sh /server/scripts/conf-bak.sh &>/dev/null

4. 服务端脚本:backup-172.16.1.41

#!/bin/bash
#author linux by 2024-08-29
#检查备份,清理旧的备份#0清理旧的备份
find /backup -name '*.tar.gz' -type f -mtime +180 |xargs rm -rf
#1.统计备份结果find /backup -name '*.tar.gz' -type f |xargs \
ls -lh |\awk -F'[ /]+' 'BEGIN{print "IP地址","备份文件名字","大小"} {print $(NF-1),$NF,$5}'|\column -t >/server/scripts/result.txt#2.发送邮件
mail -s "每日备份结果" 12345678@qq.com < /server/scripts/result.txt#定时任务
[root@backup ~]# crontab -l
#定时运行检查脚本
00 00 * * * sh /server/scripts/check.sh &>/dev/null

5、额外:增加校验功能

​ 检查单个md5值

​ md5sum -c 根据md5文件记录进行对比

#创建测试文件
[root@backup ~]# echo '123'> test.txt
#检查md5值
[root@backup ~]# md5sum test.txt
ba1f2511fc30423bdbb183fe33f3dd0f  test.txt   #文件名 md5值
#将文件名和md5值追加到指定文件
[root@backup ~]# md5sum test.txt > test.md5
#通过md5值文件,检查文件的md5信息(是否变化)
[root@backup ~]# md5sum -c test.md5
test.txt: OK   #OK表示没有变化
#修改文件内容,测试md5值是否变化
[root@backup ~]# echo '567' >> test.txt
重新检测md5文件
[root@backup ~]# md5sum -c test.md5
test.txt: FAILED #FAILED表示文件内容发生变化,md5值变了
md5sum: WARNING: 1 computed checksum did NOT match

检查多个文件的md5值

#给/etc/下面所有的文件创建MD5保存到指定文件中
find /etc/ -type f | xargs md5sum  > etc.md5
#进行校验
md5sum -c etc.md5
#只显示md5异常的文件
md5sum -c --quiet etc.md5

这篇关于Linux-全网备份实战案例rsync邮件发送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120396

相关文章

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程

《在Java中使用ModelMapper简化Shapefile属性转JavaBean实战过程》本文介绍了在Java中使用ModelMapper库简化Shapefile属性转JavaBean的过程,对比... 目录前言一、原始的处理办法1、使用Set方法来转换2、使用构造方法转换二、基于ModelMapper

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

Rsnapshot怎么用? 基于Rsync的强大Linux备份工具使用指南

《Rsnapshot怎么用?基于Rsync的强大Linux备份工具使用指南》Rsnapshot不仅可以备份本地文件,还能通过SSH备份远程文件,接下来详细介绍如何安装、配置和使用Rsnaps... Rsnapshot 是一款开源的文件系统快照工具。它结合了 Rsync 和 SSH 的能力,可以帮助你在 li

Linux部署jar包过程

《Linux部署jar包过程》文章介绍了在Linux系统上部署Java(jar)包时需要注意的几个关键点,包括统一JDK版本、添加打包插件、修改数据库密码以及正确执行jar包的方法... 目录linux部署jar包1.统一jdk版本2.打包插件依赖3.修改密码4.执行jar包总结Linux部署jar包部署

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2