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

news2024/11/25 16:33:50

项目准备

在这里插入图片描述

服务端: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程和线程(操作系统八股文part2)

一个操作系统的进程和线程部分的笔记&#xff0c;大部分来源于&#xff1a;小林coding和Javaguide&#xff0c;以及操作系统黑书。 进程和线程 什么是进程 运行中的程序叫进程**&#xff08;Process&#xff09;**。 进程是资源分配的最小单位&#xff0c;线程是执行的最小…

【逐行注释】MATLAB下的UKF(无迹卡尔曼滤波),带丰富的中文注释,可直接复制到MATLAB上运行,无需下载

文章目录 程序组成部分完整代码运行结果主要模块解读:运动模型绘图部分误差统计特性输出程序组成部分 由模型初始化、运动模型、UKF主体部分、绘图代码和输出部分组成: 完整代码 将下列代码复制粘贴到MATLAB里面,即可运行: % 三维状态量的UKF例程 % 作者联系方式:微信…

学苑教育杂志社学苑教育编辑部学苑教育杂志2024年第23期目录

专题研究 “三全六为”教育教学理念的实践运用 果艳青; 4-6 教育管理 班主任班级管理工作中进行小组合作的优化策略 肖堂花; 7-9 课堂教学 以“创新”为支点&#xff0c;构建小学数学活力课堂 马绪如; 10-12 案例教学法在初中道德与法治教学中的应用 何瑞娟; 1…

js实现队列

目录 一、什么是JavaScript队列数据结构二、创建一个JavaScript队列数据结构三、封装队列方法①向队列添加元素②检查队列是否为空③获取队列的长度④从队列移除元素⑤查看队列头元素⑥清空队列⑦创建toString方法 四、使用Queue类 一、什么是JavaScript队列数据结构 在上一篇…

【解析几何笔记】11.向量的外积运算

11. 向量的外积运算 【注】也可以这么计算 11.1 向量的多重乘积 【命题】任意三个向量&#xff0c; α , β , γ \pmb{\alpha},\pmb{\beta},\pmb{\gamma} α,β,γ&#xff0c; ( α β ) γ ( α ⋅ γ ) β − ( β ⋅ γ ) α (\pmb{\alpha}\times\pmb{\beta})\times\p…

Java 7.4 - 分布式锁

什么是分布式锁&#xff1f; 对于单机多线程&#xff0c;我们使用 ReentrantLock 这类本地锁来控制多个线程对本地共享资源的访问&#xff1b;而对于分布式系统&#xff0c;我们使用 分布式锁 来控制多个服务对共享资源的访问。 分布式锁基本要求&#xff1a; 1、互斥 2、高…

【自由能系列(中级)】自由能与变分自由能——从状态到配置的效益最大化

自由能与变分自由能——从状态到配置的效益最大化 关键词提炼 #自由能 #变分自由能 #状态函数 #配置函数 #效益最大化 #物理系统 #优化问题 第一节&#xff1a;自由能与变分自由能的类比与核心概念 1.1 自由能与变分自由能的类比 自由能和变分自由能可以被视为物理系统的“…

最火视频素材去哪里找?热门的视频素材网站库分享给你

你是否正在寻找那些能够让你的视频作品一鸣惊人的优质素材&#xff1f;如果你还在为如何让视频内容更加出彩而苦恼&#xff0c;那么今天你就来对地方了&#xff01;我将为你介绍几个非常实用且资源丰富的视频素材网站&#xff0c;让你的作品在众多视频中脱颖而出&#xff0c;成…

element的el-steps里的数据处理用switch 循环,处理的数据不要vue响应式的值

element的el-steps我通过v-for循环展示里面的每一行信息我需要处理&#xff0c;我就用了方法 handlerCatalogue来处理&#xff0c; 我重新定义一个数据lineOneIntro &#xff0c;每次return的lineOneIntro &#xff0c;但是会执行103次&#xff0c; 导致我页面卡死&#xff0c;…

SpringBoot 基于iText 根据PDF模板动态生成文件

SpringBoot 基于iText 根据PDF模板动态生成文件, 需要使用 adobe acrobat pro DC这个工具来自定义模板 支持根据PDF模板生成单页或多页PDF文件 adobe acrobat pro DC 自定义模板 下载地址 链接&#xff1a;https://pan.baidu.com/s/1Vn3bIQ5_D17sEZnkF2t7gg?pwdn6o1 提取码…

【hot100篇-python刷题记录】【杨辉三角】

R6-dp篇 印象题&#xff0c;但做法应该改变了 思路&#xff1a;前两行直接写 next[i]cur[i-1]cur[i]&#xff0c;其中next[0]和next[-1] 这样的话&#xff0c;需要创建2个额外的数组空间&#xff0c;而且还要变化 所以考虑动态规划 class Solution:def generate(self, num…

Efficient LoFTR论文阅读(特征匹配)

Efficient LoFTR论文阅读&#xff08;特征匹配&#xff09; 摘要1. 引言2. 相关工作基于检测器的图像匹配无检测器图像匹配 3. 方法3.1. 局部特征提取3.2. 高效的局部特征变换3.3. 准备工作3.4. 聚合注意力机制3.5 粗级匹配模块有效推理策略子像素级细化模块有效的精细特征提取…

[C语言]一、C语言基础(03.函数)

G:\Cpp\C语言精讲 6. 函数 6.1函数的基本使用 6.1.1 为什么需要函数 《街霸》游戏中&#xff0c;每次人物出拳、出脚或跳跃等动作都需要编写50-80行的代码&#xff0c;在每次出拳、出脚或跳跃的地方都需要重复地编写这50-80行代码&#xff0c;这样程序会变得很臃肿&#xff…

目前kimi算不算国内顶级的AI?

利用AI工具批量生成影视短剧推广https://docs.qq.com/doc/DYnl6d0FLdHp0V2ll 从用户体验上讲&#xff0c;我觉得 Kimi 算得上国内的顶级 AI。 现在的大模型产品遍地开花&#xff0c;底层模型原理差异不大&#xff0c;想要在这样的市场环境中生存下来并赢得普通用户认可&#xf…

Go锁 详解

锁 - Go 函数并发编程中&#xff0c;锁是一种同步机制&#xff0c;用于协调对共享资源的访问&#xff0c;防止数据竞争 - Go 中提供了多种类型的锁&#xff0c;每种锁都有不同的特性和适用场景类型 互斥锁&#xff08;mutex&#xff09; 基础锁&#xff0c;只能同时允许一个 g…

【C++ Primer Plus习题】6.5

问题: 解答: #include <iostream> using namespace std;int main() {float salary 0;float tax 0;while (salary>0){cout << "请输入您的工资:";cin >> salary;if (cin.fail())break;if (salary < 5000){tax 0;}else if (salary < 15…

2024 MongoDB中国用户大会倒计时2天!请查收专属参会指南

距离2024 MongoDB中国用户大会即将开幕仅剩2天&#xff0c;我们非常期待与您共同探讨和分享最新的数据库技术与应用经验。为了确保您能够顺利参与本次会议&#xff0c;请查阅属于您的专属温馨提示&#xff01; 活动时间 8月31日09:00-17:30 签到开始&#xff1a;08:00 现场参…

Linux实现异步IO的方法:epoll,posix aio,libaio,io_uring

Linux中异步IO的实现方式大概有以下几种&#xff1a; 1. epoll 熟悉网络编程的人可能会想到select&#xff0c;poll&#xff0c;epoll这些异步IO的方式&#xff0c;但实际上这些方式叫做非阻塞IO&#xff0c;并不是实际意义上的异步IO。因此这些只能用于异步的Socket IO&…

Xline v0.7.0: 一个用于元数据管理的分布式KV存储

Xline是什么&#xff1f;我们为什么要做Xline&#xff1f; Xline是一个基于Curp协议的&#xff0c;用于管理元数据的分布式KV存储。现有的分布式KV存储大多采用Raft共识协议&#xff0c;需要两次RTT才能完成一次请求。当部署在单个数据中心时&#xff0c;节点之间的延迟较低&a…

【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解

目录 1、C语言中的类型转换 2、C语言和C中可以相互转换的类型总结 C语言&#xff1a; CPP&#xff1a; 3. 为什么C需要四种类型转换 4、C四大强制类型转换 4.1static_cast 4.2 reinterpret_cast 4.3 const_cast 4.4dynamic_cast 注…