基于rsync\unlink 等一套本机备份跨机备份历史备份清理shell 脚本
一 摘要
本文主要介绍一套本地备份、跨机器备份、历史备份清理脚本,使用场景如数据库备份等
二 环境
linux 系列系统 基本都支持,个别命令可能需要微调。
2.1 实验环境
[root@localhost rsync]# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
三 脚本介绍
介绍脚本主要功能模块及目录结构
3.1 脚本目录结构
[root@projun002 data]# cd scripts/
[root@projun002 scripts]# tree
.
├── backup
│ ├── backup_mysql.sh
│ └── backup_nginx.sh
├── delete
│ ├── delete_dockercompse.sh
│ ├── delete_jira.sh
│ ├── delete_mysql.sh
│ ├── delete_nginx.sh
│ └── deleteoldfile.sh
├── logs
│ ├── backup_mysql.INFO.2024-06-26.log
│ ├── backup_mysql.INFO.2024-06-27.log
└── rsync├── push_rsync_devopsapp.sh├── push_rsync_gitlabtar.sh├── push_rsync_jira.sh└── rsync_tools.sh
/scripts/backup/ 主要存放本机备份脚本;
/scripts/rsync/ 主要存放跨机备份脚本;
/scripts/delete/ 主要存放删除本机历史备份和日志文件脚本;
/scripts/logs/ 主要存放日志文件;
3.2 以备份mysql 为例介绍脚本及使用办法
3.2.1 /scripts/backup/backup_mysql.sh
该脚本里基于mysqldump 备份数据库,既可以备份基于容器部署的mysql,也可以部署基于rpm 包安装的数据库;
注意几点:备份好后,一定要验证是否能顺利恢复。
因为mysql 配置不同,备份命令也要基于自己的配置修改
比如default-character-set=utf8 ,您的库不是utf-8,那就要改了。
#!/bin/bash# 数据库连接信息DB_HOST="127.0.0.1"DB_PORT="3306"DB_USER="root"DB_PASSWD="test"# 时间格式化,如 20211216DATE="`date +%Y%m%d%H%M%S`"
# 备份文件目录DIR_BACKUP="/data/backup/devopsapp/mysqldata"#备份应用
APP_NAME="mysql"
#脚本根目录
SCRIPT_DIR="/data/scripts/"DIR_LOG="${SCRIPT_DIR}/logs"FILE_LOG="${DIR_LOG}/backup_${APP_NAME}.INFO.`date +%F`.log"# 备份数据库名DATABASES=("jira mysql")# mysql docker id
MYSQL_DOCKER_ID=`docker ps -a | grep devopsappmysql | awk '{print $1}'`# 测试目录, 目录不存在则自动创建# test -d ${DIR_LOG} || echo passwd | sudo -S mkdir -p ${DIR_LOG}test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}
test -d ${DIR_BACKUP} || mkdir -p ${DIR_BACKUP}# ------------------- 2021-12-16_17:40:48 Start -------------------echo -e "\n----------------- $(date +%F\ %T) Start -----------------"echo -e "\n================= $(date +%F\ %T) Start =================" >> ${FILE_LOG}# 遍历数据库名for database in ${DATABASES[@]}; do # 打印备份的数据库名echo "----------- Current backup database: [ ${database} ] ------------"echo "-------------- Backed-up database: [ ${database} ] --------------" >> ${FILE_LOG}docker exec -i ${MYSQL_DOCKER_ID} sh -c " mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${database} | gzip > ${DIR_BACKUP}/mysqlbackup_${database}_${DATE}.sql.gz"done# 备份指定的数据库# mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz# docker 版本
#docker exec -i ${MYSQL_DOCKER_ID} sh -c " mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -B ${DATABASES} | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gz"# # 备份全部数据库# mysqldump --opt --single-transaction --master-data=2 --default-character-set=utf8 -h${DB_HOST} -P${DB_PORT} -u${DB_USER} -p${DB_PASSWD} -A | gzip > ${DIR_BACKUP}/mysql_backup_${DATE}.sql.gzecho "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]"echo "------- Backup file created: [ mysql_backup_${DATE}.sql.gz ]" >> ${FILE_LOG}
3.2.2 /data/scripts/rsync/push_rsync_mysql.sh
该脚本主要是将备份备份文件通过rsync 方式传到另一台机器实现跨机器备份
#!/bin/bash
####
#基于rsync 或者scp 实现跨物理机数据传输
#date:20240415 authro:weibi2
####应用名称
APP_NAME=mysql
# 远程主机 主机信息
DEST_HOST=10.3.170.73
DEST_USER=root
#需要到push 主机手工新建该目录
DEST__DIR="/data/backup/76server/mysqldata"# 本机信息SCRIPT_DIR="/data/scripts"
#备份日志文件目录
LOG_DIR="${SCRIPT_DIR}/logs"
#rsync 日志文件
LOG_FILE="${LOG_DIR}/rsync_${APP_NAME}.`date +%F`.log"#源目录 ,同步文件所在目录
#注意最后一个下划线
SRC_DIR="/data/backup/devopsapp/mysqldata/"# 若日志目录不存在则新建
test -d ${LOG_DIR} || mkdir -p ${LOG_DIR} #rsync -avzP -e "ssh -p 22" /data/yunweipro/devopsapp/jira/data/export/ root@10.3.170.73:/data/backup/devopsapp/jira/export/nohup rsync -avzP -e "ssh -p 22" ${SRC_DIR} ${DEST_USER}@${DEST_HOST}:${DEST__DIR} >> ${LOG_FILE} 2>&1 &
3.2.3 /data/scripts/rsync/rsync_tools.sh
该脚本是一个工具脚本用于启动、停止、查看跨机脚本
#!/bin/bash
LOG_DIR="/data/scripts/logs/"
LOG_FILE="${LOG_DIR}rsync_tools_`date +%F`.log"
# 若日志目录不存在则新建
test -d ${LOG_DIR} || mkdir -p ${LOG_DIR}case "$1" instart)/data/scripts/rsync/push_rsync_mysql.sh && echo "start push_rsync_mysql.sh" | tee -a $LOG_FILEecho "STARTING rsync_tool...";; stop)#killall rsync && echo " kill all rsync " >> $LOGFILEPIDS=`ps -ef | grep -v grep | grep -v rsync_tools | grep rsync | awk '{print $2}'`for pid in $PIDSdokill -9 $pid && echo "kill $pid" >> $LOG_FILEdoneecho "STOP ALL rsync";;status)ps -ef | grep -v grep | grep rsync;;restart)$0 stop$0 start;; *)echo "Usage: $0 {start|stop|restart|status}"exit 1;;
esac
启动命令
[root@localhost rsync]# ./rsync_tools.sh start
start push_rsync_mysql.sh
STARTING rsync_tool...
[root@localhost rsync]# ./rsync_tools.sh status
root 14273 14233 0 15:47 pts/0 00:00:00 less push_rsync_devopsapp.sh
root 14443 14233 0 16:01 pts/0 00:00:00 less rsync_mysql.2024-07-22.log
root 14504 1 99 16:04 pts/1 00:00:05 rsync -avzP -e ssh -p 22 /data/backup/devopsapp/mysqldata/ root@10.3.170.73:/data/backup/76server/mysqldata
root 14507 14504 20 16:04 pts/1 00:00:01 ssh -p 22 -l root 10.3.170.73 rsync --server -vlogDtprze.iLsfxC --partial . /data/backup/76server/mysqldata
root 14508 14288 0 16:04 pts/1 00:00:00 /bin/bash ./rsync_tools.sh status
3.2.4 /data/scripts/delete/delete_mysql.sh
该脚本用于删除本机历史备份
该脚本详细介绍 请看基于unlink 和黑白名单实现删除脚本(日志清理、历史备份清理)
#!/bin/bash# 时间格式化,如 20211216120101
DATE="`date +%Y%m%d%H%M%S`"
#DATE="`date +%Y%m%d`"# 备份app 名称
# 需根据实际需要修改
APP_NAME="devopsapp"# 文件名称过滤词,正则匹配
# 需根据实际需要修改
#FILE_NAME_MATCH_KEY_WORD="'*'"# 备份文件目录,待删除文件所在的目录
# 需根据实际需要修改
DIR_BACKUP="/data/backup/${APP_NAME}"# 存放待删除文件名称,删除操作日志
DIR_LOG="${DIR_BACKUP}/logs"# 存放删除操作日志
DELETE_FILE_LOG="${DIR_LOG}/${APP_NAME}deletefile.${DATE}.log"#存放待删除文件清单
DELETE_FILE_LIST="${DIR_LOG}/${APP_NAME}deletefile.${DATE}.list"#黑名单 ,以黑名单开头的文件 均不能删除
BLACK_LIST=("/root" "/bin" "/dev" "/etc" "/lib" "/lib64" "/media" "/mnt" "/opt" "/proc" "/root" "/run" "/sbin" "/srv" "/sys" "/usr" "/var")#白名单,只有白名单开头的文件才能删除
# 需根据实际需要修改
WHITE_LIST=("/iflytek" "/data/backup")# 文件保留天数
# 需根据实际需要修改
DAY=8# 待删除文件名称正则匹配echo -e "\n----------------- $(date +%F\ %T) Start -----------------"## 若日志目录不存在则新建
test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}echo -e "\n================= $(date +%F\ %T) Start =================" >> ${DELETE_FILE_LOG}# 查找待删除文件,并存入DELETE_FILE_LIST
# '*' 根据需要修改 正则匹配
find ${DIR_BACKUP} -type f -mtime +${DAY} -iname 'mysql*' >> ${DELETE_FILE_LIST}
#find ${DIR_BACKUP} -type f -mtime +${DAY} | grep ${FILE_NAME_MATCH_KEY_WORD} >> ${DELETE_FILE_LIST}# 遍历待删文件清单 while read rows
doecho ${rows} waiting to delete >> ${DELETE_FILE_LOG}# 如果文件名是/ , 直接退出脚本# /* 通过黑白名单 过滤if [[ ${rows} == "/" ]]; thenecho ${rows} illeagal, refuse to delete,please check you script >> ${DELETE_FILE_LOG}break;else# 黑名单判断for blackListElement in "${BLACK_LIST[@]}"doif [[ ${rows} == ${blackListElement}* ]];thenecho ${rows} in blacklist ${blackListElement},refuse to delete this file >> ${DELETE_FILE_LOG} BLACK_LIST_FLAG="YES"breakelseBLACK_LIST_FLAG="NOT"fidone #结束黑名单判断#白名单 判断for whileListElement in "${WHITE_LIST[@]}"doif [[ ${rows} == ${whileListElement}* ]];thenWHITE_LIST_FLAG="YES"breakelseWHITE_LIST_FLAG="NOT"fidone # 结束白名单循环fi # 根目录判断echo ${row} BLACK_LIST_FLAG IS ${BLACK_LIST_FLAG} >> ${DELETE_FILE_LOG} echo ${row} WHITE_LIST_FLAG IS ${WHITE_LIST_FLAG} >> ${DELETE_FILE_LOG} if [[ ${BLACK_LIST_FLAG} == "NOT" ]] && [[ ${WHITE_LIST_FLAG} == "YES" ]];then# 执行删除操作unlink ${rows} && echo ${rows} delete success >> ${DELETE_FILE_LOG}echo ${rows} deletefidone < ${DELETE_FILE_LIST}echo -e "\n----------------- $(date +%F\ %T) END -----------------"echo -e "\n================= $(date +%F\ %T) END =================" >> ${DELETE_FILE_LOG}
3.2.5 配置crontab 定时执行命令
本机备份
跨机备份
删除本机历史备份
[root@localhostdelete]# crontab -l
0 3 * * * /data/scripts/backup/backup_mysql.sh
0 5 * * * /data/scripts/rsync/rsync_tools.sh start
4 22 * * * /data/scripts/delete/delete_mysql.sh
3.2.6 删除跨机历史备份
在远程机上配置定时任务,执行清理脚本
该脚本一定要慎重执行!黑白名单一定要配置
#!/bin/bash# 时间格式化,如 20211216120101
DATE="`date +%Y%m%d%H%M%S`"
#DATE="`date +%Y%m%d`"# 备份app 名称
# 需根据实际需要修改
APP_NAME="devopsapp"# 文件名称过滤词,正则匹配
# 需根据实际需要修改
#FILE_NAME_MATCH_KEY_WORD="'*'"# 备份文件目录,待删除文件所在的目录
# 需根据实际需要修改
DIR_BACKUP="/data/backup/${APP_NAME}"# 存放待删除文件名称,删除操作日志
DIR_LOG="${DIR_BACKUP}/logs"# 存放删除操作日志
DELETE_FILE_LOG="${DIR_LOG}/${APP_NAME}deletefile.${DATE}.log"#存放待删除文件清单
DELETE_FILE_LIST="${DIR_LOG}/${APP_NAME}deletefile.${DATE}.list"#黑名单 ,以黑名单开头的文件 均不能删除
BLACK_LIST=("/root" "/bin" "/dev" "/etc" "/lib" "/lib64" "/media" "/mnt" "/opt" "/proc" "/root" "/run" "/sbin" "/srv" "/sys" "/usr" "/var")#白名单,只有白名单开头的文件才能删除
# 需根据实际需要修改
WHITE_LIST=("/iflytek" "/data/backup")# 文件保留天数
# 需根据实际需要修改
DAY=8# 待删除文件名称正则匹配echo -e "\n----------------- $(date +%F\ %T) Start -----------------"## 若日志目录不存在则新建
test -d ${DIR_LOG} || mkdir -p ${DIR_LOG}echo -e "\n================= $(date +%F\ %T) Start =================" >> ${DELETE_FILE_LOG}# 查找待删除文件,并存入DELETE_FILE_LIST
# '*' 根据需要修改 正则匹配
find ${DIR_BACKUP} -type f -mtime +${DAY} -iname '*' >> ${DELETE_FILE_LIST}
#find ${DIR_BACKUP} -type f -mtime +${DAY} | grep ${FILE_NAME_MATCH_KEY_WORD} >> ${DELETE_FILE_LIST}# 遍历待删文件清单 while read rows
doecho ${rows} waiting to delete >> ${DELETE_FILE_LOG}# 如果文件名是/ , 直接退出脚本# /* 通过黑白名单 过滤if [[ ${rows} == "/" ]]; thenecho ${rows} illeagal, refuse to delete,please check you script >> ${DELETE_FILE_LOG}break;else# 黑名单判断for blackListElement in "${BLACK_LIST[@]}"doif [[ ${rows} == ${blackListElement}* ]];thenecho ${rows} in blacklist ${blackListElement},refuse to delete this file >> ${DELETE_FILE_LOG} BLACK_LIST_FLAG="YES"breakelseBLACK_LIST_FLAG="NOT"fidone #结束黑名单判断#白名单 判断for whileListElement in "${WHITE_LIST[@]}"doif [[ ${rows} == ${whileListElement}* ]];thenWHITE_LIST_FLAG="YES"breakelseWHITE_LIST_FLAG="NOT"fidone # 结束白名单循环fi # 根目录判断echo ${row} BLACK_LIST_FLAG IS ${BLACK_LIST_FLAG} >> ${DELETE_FILE_LOG} echo ${row} WHITE_LIST_FLAG IS ${WHITE_LIST_FLAG} >> ${DELETE_FILE_LOG} if [[ ${BLACK_LIST_FLAG} == "NOT" ]] && [[ ${WHITE_LIST_FLAG} == "YES" ]];then# 执行删除操作unlink ${rows} && echo ${rows} delete success >> ${DELETE_FILE_LOG}echo ${rows} deletefidone < ${DELETE_FILE_LIST}echo -e "\n----------------- $(date +%F\ %T) END -----------------"echo -e "\n================= $(date +%F\ %T) END =================" >> ${DELETE_FILE_LOG}
相关文章:
基于rsync\unlink 等一套本机备份跨机备份历史备份清理shell 脚本
一 摘要 本文主要介绍一套本地备份、跨机器备份、历史备份清理脚本,使用场景如数据库备份等 二 环境 linux 系列系统 基本都支持,个别命令可能需要微调。 2.1 实验环境 [rootlocalhost rsync]# cat /etc/centos-release CentOS Linux release 7.9.2…...

使用nginx实现一个端口和ip访问多个vue前端
前言:由于安全组要求,前端页面只开放一个端口,但是项目有多个前端,此前一直使用的是一个前端使用单独一个端口进行访问,现在需要调整。 需要实现:这里以80端口为例,两个前端分别是:p…...

Linux云计算 |【第一阶段】SERVICES-DAY5
主要内容: 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤:(所需tools.tar.gz与users.sql) 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…...

IP第一次综合实验
一、实验拓扑 二、实验要求 1、R6为ISP,接口IP地址均为公有地址,该设备只能配置地址之后不能冉对其进行任何配置 2、R1-R5为局域网,私有Ip地址192.168.1.0/24,请合理分配 3、R1、82、R4,各有两个环回IP地址;R5,R6各…...
Could not load dynamic library ‘cudart64_100.dll‘
python代码报错 Could not load dynamic library cudart64_100.dll; dlerror: cudart64_100.dll not found 2024-07-22 14:19:21.931639: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine…...

四大引用——强软弱虚
目录 一、强引用 二、软引用 三、弱引用 四、虚引用 一、强引用 强引用是在程序代码之中普遍存在的,类似于“Object obj new Object()”,obj变量引用Object这个对象,就叫做强引用。当内存空间不足,Java虚拟机宁愿抛出OutOfMe…...

MySQL--索引(2)
InnoDB 1.索引类型 主键索引(Primary Key) 数据表的主键列使用的就是主键索引。 一张数据表有只能有一个主键,并且主键不能为 null,不能重复。 在 mysql 的 InnoDB 的表中,当没有显示的指定表的主键时,InnoDB 会自动先检查表中是…...
JVM类加载机制详解
Java在运行期才对类进行加载到内存、连接、初始化过程。这使得Java应用具有极高的灵活性和拓展性,可以依赖运行期进行动态加载和动态连接。 主要加载哪些?Java中的数据类型分为基本数据类型和引用数据类型,基本数据类型由虚拟机预先定义&…...

【MATLAB实战】基于UNet的肺结节的检测
数据: 训练过程图 算法简介: UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建,该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…...

Elasticsearch基础(五):使用Kibana Discover探索数据
文章目录 使用Kibana Discover探索数据 一、添加样例数据 二、数据筛选 三、保存搜索 使用Kibana Discover探索数据 一、添加样例数据 登录Kibana。在Kibana主页的通过添加集成开始使用区域,单击试用样例数据。 在更多添加数据的方式页面下方,单击…...

爬取百度图片,想爬谁就爬谁
前言 既然是做爬虫,那么肯定就会有一些小心思,比如去获取一些自己喜欢的资料等。 去百度图片去抓取图片吧 打开百度图片网站,点击搜索xxx,打开后,滚动滚动条,发现滚动条越来越小,说明图片加载…...

HTTP 缓存
缓存 web缓存是可以自动保存常见的文档副本的HTTP设备,当web请求抵达缓存时,如果本地有已经缓存的副本,就可以从本地存储设备而不是从原始服务器中提取这个文档。使用缓存有如下的优先。 缓存减少了冗余的数据传输缓存环节了网络瓶颈的问题…...
设计模式实战:图形编辑器的设计与实现
简介 本篇文章将介绍如何设计一个图形编辑器系统,系统包括图形对象的创建、组合、操作及撤销等功能。我们将通过这一项目,应用命令模式、组合模式和备忘录模式来解决具体的设计问题。 问题描述 设计一个图形编辑器系统,用户可以创建并操作图形对象,将多个图形对象组合成…...

.NET 情报 | 分析某云系统添加管理员漏洞
01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失…...
vue检测页面手指滑动距离,执行回调函数,使用混入的语法,多个组件都可以使用
mixin.ts 定义滑动距离的变量和检测触摸开始的方法,滑动方法,并导出两个方法 sendTranslateX.value > 250 && sendTranslateY.value < -100是向上滑动,满足距离后执行回调函数func,并在一秒内不再触发,一…...
opencv 优势
OpenCV(开源计算机视觉库)是一个广泛使用的计算机视觉和机器学习软件框架。它最初由Intel开发,后来由Itseez公司维护,最终于2015年成为非营利组织OpenCV.org的一部分。OpenCV的目的是实现一个易于使用且高效的计算机视觉框架,支持实时视觉应用。 以下是关于OpenCV的一些关…...

1-如何挑选Android编译服务器
前几天,我在我的星球发了一条动态:入手洋垃圾、重操老本行。没错,利用业余时间,我又重新捣鼓捣鼓代码了。在接下来一段时间,我会分享我从服务器的搭建到完成Android产品开发的整个过程。这些东西之前都是折腾过的&…...
【JS逆向课件:第十六课:Scrapy基础2】
ImagePipeLines的请求传参 环境安装:pip install Pillow USER_AGENT Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36需求:将图片的名称和详情页中图片的数据进行爬取&a…...
使用 PowerShell 自动化图像识别与鼠标操作
目录 前言功能概述代码实现1. 引入必要的程序集2. 定义读取文件行的函数3. 定义加载图片的函数4. 定义查找小图像在大图像中的位置的函数5. 定义截取全屏的函数6. 定义模拟鼠标点击的函数7. 定义主函数 配置文件示例运行脚本结语全部代码提示打包exe 下载地址 前言 在日常工作…...

组队学习——支持向量机
本次学习支持向量机部分数据如下所示 IDmasswidthheightcolor_scorefruit_namekind 其中ID:1-59是对应训练集和验证集的数据,60-67是对应测试集的数据,其中水果类别一共有四类包括apple、lemon、orange、mandarin。要求根据1-59的数据集的自…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...