基于inotif的文件同步备份
1 ftp
因为服务器是linux的,而备份服务器是windows server的,故而采取lftp进行同步文件。
1.1 全量同步
cat > /appdata/script/sync_all.sh <<EOF
#!/bin/bash # FTP 服务器信息
FTP_SERVER="ftp://192.168.0.5"
FTP_USER="ftp用户名"
FTP_PASS="ftp密码"
FTP_DIR="/mysql_bak"
LOCAL_DIR="/appdata/nfsv/mysql/full"# 使用 lftp 同步本地目录到远程服务器
lftp -u "$FTP_USER,$FTP_PASS" "$FTP_SERVER" <<EOF set ftp:passive-mode true # 如果需要,启用被动模式 mirror --reverse --verbose --only-newer $LOCAL_DIR $FTP_DIR bye
EOF # 检查 lftp 命令是否成功(注意:这里的 $? 检查的是 lftp 的退出状态)
if [ $? -ne 0 ]; thenecho "Error occurred during FTP sync." exit 1
fiecho "FTP sync completed successfully."
EOFchmod +x /appdata/script/sync_all.sh
1.2 增量同步
cat > /appdata/script/inc_sync.sh <<EOF
#!/bin/bashMONITOR_DIR="/appdata/nfsv/mysql/full"
DEST_SERVER="192.168.0.5"
DEST_DIR="/mysql_bak"
LFTP_USER="ftp用户名"
LFTP_PASS="ftp密码"# 创建一个临时文件来保存 lftp 会话命令
LFTP_COMMANDS_FILE=$(mktemp)
LFTP_LOG_FILE=$(mktemp)# 监听文件变化
inotifywait -r -m -e modify,create,delete,move "$MONITOR_DIR" |
while read path action file; do# 构建源文件路径local_file="$path/$file"# 构建目标文件路径echo $pathremote_path="$DEST_DIR/${path#$MONITOR_DIR}"echo $remote_pathremote_file="$remote_path/$file"echo $remote_file# 添加 lftp 会话命令到临时文件echo "open $DEST_SERVER" >> "$LFTP_COMMANDS_FILE"echo "user $LFTP_USER $LFTP_PASS" >> "$LFTP_COMMANDS_FILE"echo "cd $DEST_DIR" >> "$LFTP_COMMANDS_FILE"# 添加 mkdir 命令到 lftp 会话命令文件 (确保目录存在)echo "mkdir -p '$remote_path'" >> "$LFTP_COMMANDS_FILE"# 添加 put 命令到 lftp 会话命令文件echo "cd '$remote_path'" >> "$LFTP_COMMANDS_FILE"echo "put '$local_file'" >> "$LFTP_COMMANDS_FILE"echo "cd $DEST_DIR" >> "$LFTP_COMMANDS_FILE" # 返回到初始目录echo "exit" >> "$LFTP_COMMANDS_FILE"# 执行 lftp 会话,并将输出重定向到日志文件lftp -f "$LFTP_COMMANDS_FILE" > "$LFTP_LOG_FILE" 2>&1# 检查 lftp 输出以获取错误信息if grep -q "Not connected" "$LFTP_LOG_FILE"; thenecho "Error: Connection not established. Please check the FTP server configuration and network connectivity."elif grep -q "No such file or directory" "$LFTP_LOG_FILE"; thenecho "Error: Could not create directory. Please check the FTP server permissions."elseecho "File uploaded successfully."fi# 清空 lftp 会话命令文件> "$LFTP_COMMANDS_FILE"
done# 清理临时文件
rm "$LFTP_COMMANDS_FILE"
rm "$LFTP_LOG_FILE"
EOFchmod +x /appdata/script/inc_sync.sh
# windows与linux文件格式存在偏差,可以按照下面的命令进行转换
sed -i 's/\r$//' inc_sync.sh
设置开机启动
cat > /etc/systemd/system/mysql_backup.service <<EOF
[Unit]
Description=MySQL Backup Service
After=network.target[Service]
Type=simple
ExecStart=/appdata/script/inc_sync.sh
Restart=on-failure
User=root
Group=root[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload
systemctl enable mysql_backup
systemctl start mysql_backup
相关文章:
基于inotif的文件同步备份
1 ftp 因为服务器是linux的,而备份服务器是windows server的,故而采取lftp进行同步文件。 1.1 全量同步 cat > /appdata/script/sync_all.sh <<EOF #!/bin/bash # FTP 服务器信息 FTP_SERVER"ftp://192.168.0.5" FTP_USER"…...
luckyexcel 编辑预览excel文件
luckyexcel 编辑预览excel文件 支持后端传文件流预览编辑,也支持选择本地文件编辑预览 看效果 上代码 <template><div style"margin: 30px"><div class"button-box2"><div><div style"color: red">…...
记录Java使用websocket
实现场景:每在小程序中添加一条数据时,后台将主动推送一个标记给PC端,PC端接收到标记将进行自动播放音频。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import or…...
(javaweb)分层解耦
目录 一.三层架构 二.分层解耦 三.IOC&DI入门 四.IOC详解 五. DI详解 一.三层架构 复用性差,难以维护和管理 前端发起请求,先会到达controller,再调用service进行逻辑处理,逻辑处理的前提是先拿到数据,到dao…...
2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)
请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 请注意,华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了,如果你准备去考试,还是用的之前的题库,切记暂缓。 如…...
PCIe学习笔记(21)
读请求的数据返回(Data Return for Read Requests) •针对内存读取请求的单个完成可能提供少于请求的全部数据量,只要对于给定请求的所有完成在组合起来时返回了读取请求中请求的数据量。 ◦不同请求的完成不能合并。 ◦I/O和Configuratio…...
分享Embedding 模型微调的实现
写在前面 \1. 当前比较主流的Embedding开源模型有哪些? 答:1. m3e(Moka Massive Mixed Embedding) 2. BAAI/bge-large-zh-v1.5。更多的开源模型评测榜单可见: https://huggingface.co/spaces/mteb/leaderboard \2. 模型的作用? …...
TED: 1靶场复现【附代码】(权限提升)
机下载地址: Ted: 1 ~ VulnHubTed: 1, made by Avraham Cohen. Download & walkthrough links are available.https://www.vulnhub.com/entry/ted-1,327/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.59.0/24|grep -B 2 00:0C…...
Python(TensorFlow)衍射光学层卷积算法模拟(英伟达GPU)
🎯要点 🎯衍射光学卷积算法模拟 | 🎯模拟或数字电子计算之前加入一层光学计算 | 🎯前馈卷积神经网络计算成像系统对输入图像进行分类 | 🎯相位掩模利用线性空间不变成像系统执行固有卷积 📜用例 Python非…...
iOS开发进阶(二十二):Xcode* 离线安装 iOS Simulator
文章目录 一、前言二、模拟器安装 一、前言 Xcode 15 安装包的大小相比之前更小,因为除了 macOS 的 Components,其他都需要动态下载安装,否则提示 iOS 17 Simulator Not Installed。 如果不安装对应的运行模拟库,真机和模拟器无法…...
Prostgresql的Timescaledb插件/扩展部署
背景:研发需求,需要把docker部署得postgresql迁移到新的节点并要求再本地部署,提前查看数据库需要那些插件,并进行安装,docker部署的默认有插件。 版本对比:postgresql版本对应某个Timescaledb版本 我得p…...
分布式知识总结(一致性Hash算法)
文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 一致性Hash算法 假如有三台服务器编号node0、node1、node2&…...
图数据库在社交网络分析中的应用
随着社交网络的飞速发展,用户之间的关系变得日益复杂。传统的关系型数据库由于其表结构的限制,难以高效地处理和查询这些复杂的网络数据。图数据库以其独特的图模型结构,能够更好地表示和分析社交网络中的关系,因而在社交网络分析…...
Git基础使用教程
版本控制手册 本文中出现的 [ ] 为根据需求自行修改的变量。 基本命令 git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中。 git config --global user.name [xxx]:设置全局用户名,信息记录在~/.gitconfig文件中。…...
技术速递|Python in Visual Studio Code 2024年8月发布
排版:Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展将于 2023 年 8 月发布! 此版本包括以下公告: 面向贡献者的 Python 扩展开发容器用于运行带有参数的 Python 文件的调试配置Python 扩展 API 的 Npm 包容错 …...
【话题】重塑未来:AI辅助编程对程序员工作的影响与应对策略
目录 人工智能时代,程序员如何保持核心竞争力? 引言 方向一:AI辅助编程对程序员工作的影响 效率提升 代码质量 潜在风险 方向二:程序员应重点发展的核心能力 复杂系统设计 跨学科知识整合 与AI协作的能力 方向三:人机协…...
在Debian上安装freeswitch
在Debian上安装freeswitch 说明: 首次发表日期:2024-08-12参考文档: https://medium.com/jogikrunal9477/ultimate-guide-to-installing-freeswitch-on-ubuntu-22-04-lts-3745ef6a6bd6https://developer.signalwire.com/freeswitch/FreeSWI…...
论文分享 | Fuzz4All: 基于大语言模型的通用模糊测试
大语言模型是当前最受关注的研究热点,基于其生成和理解能力,对现有领域在提升性能和效果上做更多尝试。分享一篇发表于2024年ICSE会议的论文Fuzz4All,它组合多个大语言模型以非常轻量且黑盒的方式,实现了一种跨语言和软件的通用模…...
VS Code 配置docker 管理员权限终端
问题描述 在容器中需要使用sudo或者su root时候,权限不够,被灵魂提问。 然而,镜像是官方发布的,翻遍了githubissues也没有找到password. 解决 Attach shell 在docker插件中,attach shell 可以直接获得shell。 所…...
使用Linux实现FTP云盘1
关于FTP服务器 FTP(文件传输协议)服务器是在互联网上提供文件存储和访问服务的计算机,它们依照FTP 协议提供服务。 FTP是File Transfer Protocol(文件传输协议)。 程序运行,服务端不断接收客户端指令,服务 端可同时处…...
4大核心能力赋能企业级视频资源管理:抖音批量下载工具的技术实现与商业价值
4大核心能力赋能企业级视频资源管理:抖音批量下载工具的技术实现与商业价值 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字化内容爆发的时代,企业级视频资源管理面临着效率与成…...
从零开始:用正则表达式处理日期时间格式的完整指南
从零开始:用正则表达式处理日期时间格式的完整指南 在数据处理和文本分析中,日期时间格式的校验一直是个高频需求。无论是表单验证、日志分析还是数据清洗,确保日期时间格式的正确性都至关重要。正则表达式作为文本处理的瑞士军刀,…...
终极Ghidra安装指南:5分钟在Ubuntu系统快速部署逆向工程神器
终极Ghidra安装指南:5分钟在Ubuntu系统快速部署逆向工程神器 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 想要…...
5分钟搞定OpenClaw+nanobot:超轻量级AI助手一键部署指南
5分钟搞定OpenClawnanobot:超轻量级AI助手一键部署指南 1. 为什么选择OpenClawnanobot组合 上周我在整理电脑上的项目文档时,突然意识到自己每天要重复执行大量机械操作:查找文件、转换格式、汇总数据。作为独立开发者,这些琐事…...
CANoe实战:手把手教你用J1939.dbc发送超8字节长帧报文(附完整CAPL代码)
CANoe实战:J1939长帧报文分包发送全解析与CAPL代码优化 在汽车电子开发领域,J1939协议作为商用车通信标准,其长帧报文处理一直是工程师面临的典型挑战。当数据长度超过CAN总线单帧8字节限制时,如何高效实现分包传输?本…...
OpenClaw安全配置要点:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理
OpenClaw安全配置要点:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF本地运行权限管理 1. 为什么需要特别关注OpenClaw的安全配置? 第一次在本地部署OpenClaw时,我犯了一个新手常见的错误——直接使用默认配置启动服务。结果第二天…...
基于MATLAB的VSG逆变器无源性分析与稳定性研究
基于MATLAB的VSG逆变器无源性分析与稳定性研究 摘要 随着分布式发电和微电网技术的快速发展,逆变器作为新能源并网的关键接口,其稳定性问题日益突出。虚拟同步发电机(VSG)控制技术通过模拟同步发电机的机电特性,为逆变器提供惯性和阻尼支撑,成为提升系统稳定性的重要手…...
OpenClaw+GLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题
OpenClawGLM-4.7-Flash学习助手:自动整理课程笔记与生成复习题 1. 为什么需要自动化学习助手? 去年备考研究生时,我每天要处理3-4小时的课程视频。最痛苦的不是听课本身,而是课后整理:手动截取关键片段、转录字幕、标…...
如何通过Universal Android Debloater实现Android设备深度优化
如何通过Universal Android Debloater实现Android设备深度优化 【免费下载链接】universal-android-debloater Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of your device. …...
基于springboot的志愿者招募管理系统
目录系统架构设计数据库设计核心功能实现报名与审核流程统计与报表部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用SpringBoot作为后端框架,搭配MyBatis或JPA实现数据持久化。前端可选择T…...
