OCC服务器和BCC服务器中文件同步
OCC服务器到BCC服务器文件正向同步
需求:编写shell脚本,使用rsync
命令来同步目录,把全部需要同步的目录放在配置文件中,设置定时任务自动同步
服务器IP:
服务器类型 | IP地址 |
---|---|
OCC服务器 | 192.168.1.188 |
BCC服务器 | 192.168.1.88 |
第一步:配置SSH免密登录
-
生成SSH密钥(如果尚未生成):
在192.168.1.88上执行:ssh-keygen -t rsa
按提示操作,不要输入密码,这样就会在
~/.ssh/id_rsa.pub
生成公钥。 -
复制公钥到192.168.1.188:
在192.168.1.88上执行:ssh-copy-id -i ~/.ssh/id_rsa.pub mml3@192.168.1.188
输入密码
XXXXXX
,完成后应能免密码登录到192.168.1.188 -
反向操作:
同样的步骤也需要在192.168.1.188上执行,复制其公钥到192.168.1.88上。ssh-copy-id -i ~/.ssh/id_rsa.pub mml3@192.168.1.88
第二步:编写Shell脚本
在BCC服务器1.88上新建一个脚本sync_dirs.sh,将使用rsync
命令从1.188上同步指定的目录到1.88的本地目录。请确保两台服务器上都安装了rsync
。将需要同步的文件夹全部填写到配置文件/home/mml3/sync_dirs.conf
中。
#!/bin/bash# 定义源服务器的地址
SOURCE_SERVER="mml3@192.168.1.188"# 配置文件路径
CONF_FILE="/home/mml3/sync_dirs.conf"# 日志文件路径
LOG_FILE="/home/mml3/app/sync_dirs.log"# 检查配置文件是否存在
if [ ! -f "$CONF_FILE" ]; thenecho "配置文件不存在: $CONF_FILE" | tee -a "$LOG_FILE"exit 1
fi# 读取配置文件并同步每个目录
while IFS= read -r dir; do# 跳过空行if [ -z "$dir" ]; thencontinuefi# 如果目录不存在,则创建if [ ! -d "$dir" ]; thenecho "目录不存在,正在创建: $dir" | tee -a "$LOG_FILE"mkdir -p "$dir"fi# 开始同步echo "开始同步目录: $dir - $(date)" | tee -a "$LOG_FILE"rsync -avz --delete "$SOURCE_SERVER:$dir/" "$dir" >> "$LOG_FILE" 2>&1echo "完成同步目录: $dir - $(date)" | tee -a "$LOG_FILE"
done < "$CONF_FILE"
第三步:设置定时任务
-
保存脚本:将上述脚本保存为
sync_dirs.sh
,并赋予执行权限:chmod +x sync_dirs.sh
-
首次需要手动执行,执行完以后配置定时任务
./sync_dirs.sh
-
编辑Crontab:
使用crontab -e
命令编辑定时任务,使其同时记录标准输出和错误输出。*/5 * * * * /home/mml3/sync_dirs.sh >> /tmp/cron.log 2>&1
这会将脚本执行的所有输出(包括错误)重定向到指定的cron.log日志文件中。可以在
/home/mml3/app/sync_dirs.log
和/tmp/cron.log
中查看同步操作和定时任务的详细日志。目前上面这个脚本是单向的,文件只从188的目录同步到88。 如果188出问题了,那么我们就需要把88上面的文件同步到188上面 以下是执行的步骤:
OCC服务器到BCC服务器文件反向同步
第一步:修改脚本以反转同步方向
在上面现有脚本中,只需将rsync
命令的源和目标地址调换即可:然后在1.188上新建脚本并执行。
并且需要把同步的文件夹全部填写到配置文件/home/mml3/sync_dirs.conf
中。
#!/bin/bash# 定义源服务器的地址
SOURCE_SERVER="mml3@192.168.1.88"# 配置文件路径
CONF_FILE="/home/mml3/sync_dirs.conf"# 日志文件路径
LOG_FILE="/home/mml3/app/sync_dirs.log"# 检查配置文件是否存在
if [ ! -f "$CONF_FILE" ]; thenecho "配置文件不存在: $CONF_FILE" | tee -a "$LOG_FILE"exit 1
fi# 读取配置文件并同步每个目录
while IFS= read -r dir; do# 跳过空行if [ -z "$dir" ]; thencontinuefi# 如果目录不存在,则创建if [ ! -d "$dir" ]; thenecho "目录不存在,正在创建: $dir" | tee -a "$LOG_FILE"mkdir -p "$dir"fi# 开始同步echo "开始同步目录: $dir - $(date)" | tee -a "$LOG_FILE"rsync -avz --delete "$SOURCE_SERVER:$dir/" "$dir" >> "$LOG_FILE" 2>&1echo "完成同步目录: $dir - $(date)" | tee -a "$LOG_FILE"
done < "$CONF_FILE"
第二步:设置定时任务
-
保存脚本:将上述脚本保存为
sync_dirs.sh
,并赋予执行权限:chmod +x sync_dirs.sh
-
首次需要手动执行,执行完以后配置定时任务
./sync_dirs.sh
-
编辑Crontab:
使用crontab -e
命令编辑定时任务,使其同时记录标准输出和错误输出。*/5 * * * * /path/to/sync_dirs.sh >> /tmp/cron.log 2>&1
相关文章:
OCC服务器和BCC服务器中文件同步
OCC服务器到BCC服务器文件正向同步 需求:编写shell脚本,使用rsync命令来同步目录,把全部需要同步的目录放在配置文件中,设置定时任务自动同步 服务器IP: 服务器类型IP地址OCC服务器192.168.1.188BCC服务器192.168.1…...

工具系列:TimeGPT_(2)使用外生变量时间序列预测
文章目录 TimeGPT使用外生变量时间序列预测导入相关工具包预测欧美国家次日电力价格案例 TimeGPT使用外生变量时间序列预测 外生变量在时间序列预测中非常重要,因为它们提供了可能影响预测的额外信息。这些变量可以包括假日标记、营销支出、天气数据或与你正在预测…...

应用于前端的自然断点法:wasm应用示例
某月某日,虾神本虾接到了这样一个需求,前端获取数据之后,在渲染之前,要对数据进行分类,分类的方法可以选择常用几种,例如等距法、自然断点法、标准差分类法等…… 问:为什么要在前端࿱…...
web前端javaScript笔记——(6)数组
对象一般分为内建对象,宿主对象,自定义对象。 数组(Array) 数组也是一个对象 它和我们普通对象功能类似,也是用来存储一些值的 不同的是普通对象是使用字符串作为属性名的,而数组时使用数字来作为索引操作元素案引: 从0开始的…...
vue的props
Vue的props是组件之间传递数据的一种方式,可以在组件中定义props并接收外部传递的数据。 在父组件中使用子组件时,可以使用v-bind指令将数据传递给子组件的props。子组件中可以通过props属性接收并使用这些数据。 父组件中: <template&…...

【51单片机系列】DS18B20温度传感器模块
本文是关于温度传感器的相关内容。 文章目录 一、 DS18B20数字温度传感器介绍1.1、 DS18B20温度传感器的特点1.2、DA18B20内部结构1.3、 DS18B20的温度转换规则1.4、 DS18B20的ROM指令表1.6、 计算温度1.7、 读写时序 二、DS18B20使用示例 一、 DS18B20数字温度传感器介绍 DS1…...
ubuntu20.04 conda环境配置Mask2former记录
建议先看完再按照步骤安装 代码地址:GitHub - facebookresearch/Mask2Former: Code release for "Masked-attention Mask Transformer for Universal Image Segmentation" 一、配置环境 1、创建虚拟环境 conda create -n mask2former python3.8conda …...
Git更新远程分支
当本地仓库无法找到新创建的远程分支时使用。 git fetch 是 Git 中的一个命令,用于从远程仓库获取最新的更改。 git fetch 会从指定的远程仓库中获取所有分支的最新提交,并将这些提交存储在本地的远程分支中。但是,这些更改并不会自动合并到…...

2023年软件工程师工作总结范文
各位领导: 你们好!时光飞逝,光阴似箭,转眼间又到了一年的年末。2023年又是一个不平凡的年,今年是国家十四个五年计划的第三年,是全面贯彻党的二十大精神的开局之年。中国XX集团作为中国XX行业中最大的企…...

STM32实战之深入理解I²C通信协议
目录 IC的物理层 IC的协议层 IC特点 IC 总线时序图 软件模拟IC时序分享 软件模拟IIC驱动AT24C02分享 例程简介 例程分享 STM32的IC外设 IIC(Inter-Integrated Circuit),也称为IC或TWI(Two-Wire Interface)&am…...
如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代
如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代 随着人工智能技术的快速发展,OpenAI持续推出更加强大和精准的模型,以改善和扩展用户体验。在聊天机器人领域,特别是OpenAI的ChatGPT系列,每一次迭代都带来了显著…...

blender scripting 编写
blender scripting 编写 一、查看ui按钮对应的代码二、查看或修改对象名称三、案例:渲染多张图片并导出对应的相机参数 一、查看ui按钮对应的代码 二、查看或修改对象名称 三、案例:渲染多张图片并导出对应的相机参数 注:通过ui交互都设置好…...

使用 Elasticsearch 检测抄袭 (二)
我在在之前的文章 “使用 Elasticsearch 检测抄袭 (一)” 介绍了如何检文章抄袭。这个在许多的实际使用中非常有意义。我在 CSDN 上的文章也经常被人引用或者抄袭。有的人甚至也不用指明出处。这对文章的作者来说是很不公平的。文章介绍的内容针对很多的…...
WPF DataGrid
文章目录 SelectionModeHeaderVisibilityBorderBrush SelectionMode DataGrid 控件的 SelectionMode 属性定义了用户可以如何选择 DataGrid 中的行。它是一个枚举类型的属性,有以下几个选项: Single(默认值):只能选择…...

【cesium-5】鼠标交互与数据查询
scene.pick返回的是包含给定窗口位置基元的对象 scene.drillpack返回的是给定窗口位置所有对象的列表 Globe.pick返回的是给光线和地形的交点 Cesium.ScreenSpaceEventType.MIDDLE_CLICK 鼠标中间点击事件 Cesium.ScreenSpaceEventType.MOUSE_MOVE 鼠标移入事件 Cesium.ScreenS…...

Xcode 编译速度慢是什么原因?如何提高编译速度?
作为一个开发者,我们都希望能够高效地开发应用程序,而编译速度是影响开发效率的重要因素之一。然而,有时候我们会发现在使用 Xcode 进行开发时,译速度非常慢,这给我们带来了不少困扰。那么,为什么 Xcode 的…...
Best Arm Identification in Batched Multi-armed Bandit Problems
Q: 这篇论文试图解决什么问题? A: 这篇论文试图解决在批量多臂老虎机问题中进行最佳臂识别(BAI)的挑战,其中必须成批地对臂进行抽样,因为代理等待反馈的时间有限。这种场景出现在许多现实世界的应用中,例如…...
Unity编辑器紫色
紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的,需要动态的去修改shader,主要用到Unity的api : Shader.Find(shaderName); 具体的工具代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine…...
冒泡排序(C语言)
void BubbleSort(int arr[], int len) {int i, j, temp;for (i 0; i < len; i){for (j len - 1; j > i; j--){if (arr[j] > arr[j 1]){temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}} } 优化: 设置标志位flag,如果发生了交换flag设置…...

Unity中Shader观察空间推导(在Shader中实现)
文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标,然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...