当前位置: 首页 > news >正文

OCC服务器和BCC服务器中文件同步

OCC服务器到BCC服务器文件正向同步

需求:编写shell脚本,使用rsync命令来同步目录,把全部需要同步的目录放在配置文件中,设置定时任务自动同步

服务器IP:

服务器类型IP地址
OCC服务器192.168.1.188
BCC服务器192.168.1.88
第一步:配置SSH免密登录
  1. 生成SSH密钥(如果尚未生成):
    在192.168.1.88上执行:

    ssh-keygen -t rsa
    

    按提示操作,不要输入密码,这样就会在~/.ssh/id_rsa.pub生成公钥。

  2. 复制公钥到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

  3. 反向操作
    同样的步骤也需要在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"
第三步:设置定时任务
  1. 保存脚本:将上述脚本保存为sync_dirs.sh,并赋予执行权限:

    chmod +x sync_dirs.sh
    
  2. 首次需要手动执行,执行完以后配置定时任务

    ./sync_dirs.sh
    
  3. 编辑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"
第二步:设置定时任务
  1. 保存脚本:将上述脚本保存为sync_dirs.sh,并赋予执行权限:

    chmod +x sync_dirs.sh
    
  2. 首次需要手动执行,执行完以后配置定时任务

    ./sync_dirs.sh
    
  3. 编辑Crontab
    使用crontab -e命令编辑定时任务,使其同时记录标准输出和错误输出。

    */5 * * * * /path/to/sync_dirs.sh >> /tmp/cron.log 2>&1
    

相关文章:

OCC服务器和BCC服务器中文件同步

OCC服务器到BCC服务器文件正向同步 需求&#xff1a;编写shell脚本&#xff0c;使用rsync命令来同步目录&#xff0c;把全部需要同步的目录放在配置文件中&#xff0c;设置定时任务自动同步 服务器IP&#xff1a; 服务器类型IP地址OCC服务器192.168.1.188BCC服务器192.168.1…...

工具系列:TimeGPT_(2)使用外生变量时间序列预测

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

应用于前端的自然断点法:wasm应用示例

某月某日&#xff0c;虾神本虾接到了这样一个需求&#xff0c;前端获取数据之后&#xff0c;在渲染之前&#xff0c;要对数据进行分类&#xff0c;分类的方法可以选择常用几种&#xff0c;例如等距法、自然断点法、标准差分类法等…… 问&#xff1a;为什么要在前端&#xff1…...

web前端javaScript笔记——(6)数组

对象一般分为内建对象&#xff0c;宿主对象&#xff0c;自定义对象。 数组(Array) 数组也是一个对象 它和我们普通对象功能类似&#xff0c;也是用来存储一些值的 不同的是普通对象是使用字符串作为属性名的&#xff0c;而数组时使用数字来作为索引操作元素案引: 从0开始的…...

vue的props

Vue的props是组件之间传递数据的一种方式&#xff0c;可以在组件中定义props并接收外部传递的数据。 在父组件中使用子组件时&#xff0c;可以使用v-bind指令将数据传递给子组件的props。子组件中可以通过props属性接收并使用这些数据。 父组件中&#xff1a; <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记录

建议先看完再按照步骤安装 代码地址&#xff1a;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 中的一个命令&#xff0c;用于从远程仓库获取最新的更改。 git fetch 会从指定的远程仓库中获取所有分支的最新提交&#xff0c;并将这些提交存储在本地的远程分支中。但是&#xff0c;这些更改并不会自动合并到…...

2023年软件工程师工作总结范文

各位领导&#xff1a; 你们好&#xff01;时光飞逝&#xff0c;光阴似箭&#xff0c;转眼间又到了一年的年末。2023年又是一个不平凡的年&#xff0c;今年是国家十四个五年计划的第三年&#xff0c;是全面贯彻党的二十大精神的开局之年。中国XX集团作为中国XX行业中最大的企…...

STM32实战之深入理解I²C通信协议

目录 IC的物理层 IC的协议层 IC特点 IC 总线时序图 软件模拟IC时序分享 软件模拟IIC驱动AT24C02分享 例程简介 例程分享 STM32的IC外设 IIC&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;也称为IC或TWI&#xff08;Two-Wire Interface&#xff09;&am…...

如何区分ChatGPT 3.5与ChatGPT 4:洞悉智能对话的新时代

如何区分ChatGPT 3.5与ChatGPT 4&#xff1a;洞悉智能对话的新时代 随着人工智能技术的快速发展&#xff0c;OpenAI持续推出更加强大和精准的模型&#xff0c;以改善和扩展用户体验。在聊天机器人领域&#xff0c;特别是OpenAI的ChatGPT系列&#xff0c;每一次迭代都带来了显著…...

blender scripting 编写

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

使用 Elasticsearch 检测抄袭 (二)

我在在之前的文章 “使用 Elasticsearch 检测抄袭 &#xff08;一&#xff09;” 介绍了如何检文章抄袭。这个在许多的实际使用中非常有意义。我在 CSDN 上的文章也经常被人引用或者抄袭。有的人甚至也不用指明出处。这对文章的作者来说是很不公平的。文章介绍的内容针对很多的…...

WPF DataGrid

文章目录 SelectionModeHeaderVisibilityBorderBrush SelectionMode DataGrid 控件的 SelectionMode 属性定义了用户可以如何选择 DataGrid 中的行。它是一个枚举类型的属性&#xff0c;有以下几个选项&#xff1a; Single&#xff08;默认值&#xff09;&#xff1a;只能选择…...

【cesium-5】鼠标交互与数据查询

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

Xcode 编译速度慢是什么原因?如何提高编译速度?

作为一个开发者&#xff0c;我们都希望能够高效地开发应用程序&#xff0c;而编译速度是影响开发效率的重要因素之一。然而&#xff0c;有时候我们会发现在使用 Xcode 进行开发时&#xff0c;译速度非常慢&#xff0c;这给我们带来了不少困扰。那么&#xff0c;为什么 Xcode 的…...

Best Arm Identification in Batched Multi-armed Bandit Problems

Q: 这篇论文试图解决什么问题&#xff1f; A: 这篇论文试图解决在批量多臂老虎机问题中进行最佳臂识别&#xff08;BAI&#xff09;的挑战&#xff0c;其中必须成批地对臂进行抽样&#xff0c;因为代理等待反馈的时间有限。这种场景出现在许多现实世界的应用中&#xff0c;例如…...

Unity编辑器紫色

紫色原因是因为编辑器内跑了其他平台的shader兼容性导致的&#xff0c;需要动态的去修改shader&#xff0c;主要用到Unity的api : Shader.Find(shaderName); 具体的工具代码如下&#xff1a; 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;}}} } 优化&#xff1a; 设置标志位flag&#xff0c;如果发生了交换flag设置…...

Unity中Shader观察空间推导(在Shader中实现)

文章目录 前言一、观察空间矩阵推导1、求观察空间基向量2、求观察空间的基向量在世界空间中的矩阵 的 逆矩阵2、求平移变换矩阵3、相乘得出 观察空间转化矩阵4、得到顶点的世界空间坐标&#xff0c;然后转化到观察空间5、把观察空间坐标转化为齐次裁剪坐标输出到屏幕 二、最终效…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...