O2OA如何实现文件跨服务器的备份
O2OA可以外接存储服务器,但是一个存储服务器上怕磁盘损坏等问题导致文件丢失,所以需要实现文件跨服务器备份。
整体过程:
1、SSH免密登录配置
2、增加一个同步推送文件的.sh文件
3、编辑crontab 增加定时任务执行上一步的.sh文件
一、配置SSH免密登录
两台存储服务器之间需要先配置好ssh免密登录。 免密登录通常是通过公钥认证(SSH Key Pair)实现的 , 具体步骤如下:
1.生成SSH密钥对
如果还没有SSH密钥对,可以通过以下命令生成一个新的密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
-
-t rsa: 生成RSA类型的密钥 -
-b 4096: 设置密钥长度为4096位 -
-C "your_email@example.com": 注释,通常用邮箱作为标识
生成过程会提示存储位置(默认是~/.ssh/id_rsa),并可选择是否设置密码(免密登录通常选择不设置密码)。
2. 将公钥复制到SFTP服务器
使用 ssh-copy-id 命令将公钥复制到目标SFTP服务器:
ssh-copy-id username@remote_host
这会将公钥追加到远程服务器的 ~/.ssh/authorized_keys 文件中。确保远程服务器的authorized_keys文件权限是 600,并且.ssh目录的权限是 700,否则免密登录可能无效。
3. 验证免密登录
确保你可以通过SSH免密登录到SFTP服务器:
ssh username@remote_host
4. 免密连接的注意事项
服务器设置:确保SFTP服务器允许公钥认证(在/etc/ssh/sshd_config文件中,确保 PubkeyAuthentication yes)。
二、增加同步文件的.SH文件
1.通过命令新增一个.sh文件
vim sync_to_93.100.sh
在.sh文件中写入同步文件的命令,将本地目录中的文件同步到远程服务器的目录上:
rsync -av --delete /data/o2serverStorage root@172.16.93.100:/data
-
rsync: 这是命令本身,表示使用rsync工具进行文件同步。 -
-a: 表示归档模式,等同于-rlptgoD,这意味着:
-
-
-r: 递归处理子目录及其文件。 -
-l: 保留符号链接。 -
-p: 保留文件权限。 -
-t: 保留修改时间。 -
-g: 保留文件的组信息。 -
-o: 保留文件的所有者信息。 -
-D: 保留设备文件和其他特殊文件。
-
-
-v: 表示详细模式,显示同步过程中的详细信息。 -
--delete: 在目标目录中删除那些源目录中不存在的文件。这确保了目标目录与源目录保持一致。 -
/data/o2serverStorage: 这是源目录,即你要从哪个目录同步文件。 -
root@172.16.93.100:/data: 这是目标目录,表示将文件同步到远程服务器172.16.93.100上的/data目录。root是远程服务器上的用户名。
2.增加执行权限
使用 chmod 命令添加执行权限。
chmod +x /data/sync_to_93.100.sh
三、增加定时任务
1.执行crontab -e命令
crontab -e
如果你是第一次使用 crontab -e,系统会提示你选择一个编辑器。常见的编辑器有 nano、vi 和 vim。选择一个你熟悉的编辑器。例如,选择 nano 可以输入数字对应的选择编号,通常是 1。
2.编辑 crontab 文件
可以在这个文件中添加定时任务,每一行代表一个定时任务。
10 23 * * * /data/sync_to_93.100.sh >> /var/log/mycron.log 2>&1
-
10:表示分钟,这里是10分。 -
23:表示小时,这里是23点。 -
*:表示日期(1-31),这里的*表示每天。 -
*:表示月份(1-12),这里的*表示每个月。 -
*:表示星期几(0-7,其中0和7都表示周日),这里的*表示每一天。 -
/data/sync_to_93.100.sh:表示要执行的文件。 -
>> /var/log/mycron.log:将标准输出追加到日志文件中。 -
2>&1:将标准错误输出重定向到标准输出,从而一起追加到日志文件中。
这样配置都完成了,可以进行同步测试。
相关文章:
O2OA如何实现文件跨服务器的备份
O2OA可以外接存储服务器,但是一个存储服务器上怕磁盘损坏等问题导致文件丢失,所以需要实现文件跨服务器备份。 整体过程: 1、SSH免密登录配置 2、增加一个同步推送文件的.sh文件 3、编辑crontab 增加定时任务执行上一步的.sh文件 一、配…...
语音提示器-WT3000A离在线TTS方案-打破语种限制/AI对话多功能支持
前言: TTS(Text To Speech )技术作为智能语音领域的重要组成部分,能够将文本信息转化为逼真的语音输出,为各类硬件设备提供便捷的语音提示服务。本方案正是基于唯创知音的离在线TTS(离线本地音乐播放与在线…...
使用HAL库的STM32工程,实现DMA传输USART发送接收数据
以串口3为例,初始化部分为STM32CubeMX生成代码 串口初始化 UART_HandleTypeDef huart3; DMA_HandleTypeDef hdma_usart3_rx; DMA_HandleTypeDef hdma_usart3_tx;/* USART3 init function */ void MX_USART3_UART_Init(void) {/* USER CODE BEGIN USART3_Init 0 */…...
常用排序算法总结
内容目录 1. 选择类排序 1.1 直接选择排序1.2 堆排序 2. 交换类排序 2.1 冒泡排序2.2 快速排序 3. 插入类排序 3.1 直接插入排序3.2 希尔排序 4. 其它排序 4.1 归并排序4.2 基数排序/桶排序 排序 1. 选择类排序 选择类排序的特征是每次从待排序集合中选择出一个最大值或者最…...
[项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引
目录 编写建立索引的模块 Index 1. 设计节点 2.基本结构 3.(难点) 构建索引 1. 构建正排索引(BuildForwardIndex) 2.❗构建倒排索引 3.1 cppjieba分词工具的安装和使用 3.2 引入cppjieba到项目中 倒排索引代码 本篇文章,我们将继续项…...
R语言编程
一、R语言在机器学习中的优势 R语言是一种广泛用于统计分析和数据可视化的编程语言,在机器学习领域也有诸多优势。 丰富的包:R拥有大量专门用于机器学习的包。例如,caret包是一个功能强大的机器学习工具包,它提供了统一的接口来训练和评估多种机器学习模型,如线性回归、决…...
Mysql主主互备配置
在现有运行的mysql环境下,修改相关配置项,完成主主互备模式的部署。 下面的配置说明中设置的mysql互备对应服务器IP为: 192.168.1.6 192.168.1.7 先检查UUID 在mysql的数据目录下,检查主备mysql的uuid(如下的server-…...
如何预防数据打架?数据仓库如何保持指标数据一致性开发指南(持续更新)
大数据开发人员最经常遇到尴尬和麻烦的事是,指标开发好了,以为万事大吉了。被业务和运营发现这个指标在不同地方数据打架,显示不同的数值。为了保证指标数据一致性,要从整个开发流程做好。 目录 一、数据仓库架构规划 二、数据抽取与转换 三、数据存储管理 四、指标管…...
我谈Canny算子
在Canny算子的论文中,提出了好的边缘检测算子应满足三点:①检测错误率低——尽可能多地查找出图像中的实际边缘,边缘的误检率(将边缘识别为非边缘)低,且避免噪声产生虚假边缘(将非边缘识别为边缘…...
算法的学习笔记—平衡二叉树(牛客JZ79)
😀前言 在数据结构中,二叉树是一种重要的树形结构。平衡二叉树是一种特殊的二叉树,其特性是任何节点的左右子树高度差的绝对值不超过1。本文将介绍如何判断一棵给定的二叉树是否为平衡二叉树,重点关注算法的时间复杂度和空间复杂度…...
SSM学习day01 JS基础语法
一、JS基础语法 跟java有点像,但是不用注明数据类型 使用var去声明变量 特点1:var关键字声明变量,是为全局变量,作用域很大。在一个代码块中定义的变量,在其他代码块里也能使用 特点2:可以重复定义&#…...
kubeadm快速自动化部署k8s集群
目录 一、准备环境 二、安装docker--三台机器都操作 三、使用kubeadm部署Kubernetes 在所有节点安装kubeadm和kubelet、kubectl 配置启动kubelet(所有主机) master节点初始化 Mater重新完成初始化 执行Master初始化后的提示配置 配置使用网络插件 创建flannel网络 …...
解决JAVA使用@JsonProperty序列化出现字段重复问题(大写开头的字段重复序列化)
文章目录 引言I 解决方案方案1:使用JsonAutoDetect注解方案2:手动编写get方法,JsonProperty注解加到方法上。方案3:首字母改成小写的II 知识扩展:对象默认是怎样被序列化?引言 需求: JSON序列化时,使用@JsonProperty注解,将字段名序列化为首字母大写,兼容前端和第三方…...
分布式理论基础
文章目录 1、理论基础2、CAP定理1_一致性2_可用性3_分区容错性4_总结 3、BASE理论1_Basically Available(基本可用)2_Soft State(软状态)3_Eventually Consistent(最终一致性)4_总结 1、理论基础 在计算机…...
Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
说在前面的话 要想获得测试覆盖率报告,第一步要做的是,采集覆盖率数据,并输入到tcp。 而本文便是介绍一种java应用程序部署下的推荐方式。 作为一种通用方案,首先不想对应用程序有所侵入,其次运维和管理方便。 正好,jacoco agent就是类似于pinpoint agent一样,都使用…...
【机器学习】13. 决策树
决策树的构造 策略:从上往下学习通过recursive divide-and-conquer process(递归分治过程) 首先选择最好的变量作为根节点,给每一个可能的变量值创造分支。然后将样本放进子集之中,从每个分支的节点拓展一个。最后&a…...
《a16z : 2024 年加密货币现状报告》解析
加密社 原文链接:State of Crypto 2024 - a16z crypto译者:AI翻译官,校对:翻译小组 当我们两年前第一次发布年度加密状态报告的时候,情况跟现在很不一样。那时候,加密货币还没成为政策制定者关心的大事。 比…...
Laravel 使用Simple QrCode 生成PNG遇到问题
最近因项目需求,需要对qrcode 进行一些简单修改,发现一些问题,顺便记录一下 目前最新的版本是4.2,在环境是 PHP8 ,laravel11 的版本默认下载基本是4.0以上的 如下列代码 QrCode::format(png)->generate(test);这样…...
一站式学习 Shell 脚本语法与编程技巧,踏出自动化的第一步
文章目录 1. 初识 Shell 解释器1.1 Shell 类型1.2 Shell 的父子关系 2. 编写第一个 Shell 脚本3. Shell 脚本语法3.1 脚本格式3.2 注释3.2.1 单行注释3.2.2 多行注释 3.3 Shell 变量3.3.1 系统预定义变量(环境变量)printenv 查看所有环境变量set 查看所有…...
批处理操作的优化
原来的代码 Override Transactional(rollbackFor Exception.class) public void batchAddQuestionsToBank(List<Long> questionIdList, Long questionBankId, User loginUser) {// 参数校验ThrowUtils.throwIf(CollUtil.isEmpty(questionIdList), ErrorCode.PARAMS_ERR…...
【苍穹外卖 | 篇⑥】登录流程
在牛某网看见了牛肉哥的帖子之后,打算向牛肉大佬学习,故开始书写CSDN博客,通过博客的方式来巩固自身知识学习。因为之前有粗略的学习了Java Web 的基础课程,所以博客内容主要是巩固之前学习当中的模糊点,以及一些自己认…...
AI早报 | 2026.03.29(周日)
🤖 AI 早报 | 2026.03.29(周日) 采集时间:2026-03-29 13:25 (Asia/Shanghai) 🛡️ 安全/治理 1️⃣ Anthropic 安全漏洞泄露下一代模型 Mythos Anthropic 公司遭遇数据安全事件,未受保护的数据存储中泄露了…...
TypeScript——编译器和编译选项
编译器和编译选项 1、编译器1.1、安装编译器1.1.1、--help、--all1.1.2、--version 2、编译程序2.1、编译单个文件2.2、编译多个文件2.3、--watch和-w2.4、--presserveWatchOutput 2、编译选项2.1、编译选项风格2.2、使用编译选项2.3、严格类型检查2.3.1、--strict2.3.2、--nol…...
别再手动配环境了!用COLMAP已知位姿重建,从数据集到.ply点云保姆级避坑指南
别再手动配环境了!用COLMAP已知位姿重建,从数据集到.ply点云保姆级避坑指南 三维重建技术正逐渐成为计算机视觉领域的标配工具,而COLMAP作为开源重建方案中的佼佼者,其强大功能背后却隐藏着诸多配置陷阱。本文专为那些已经拥有带位…...
extern ‘C‘原理与C/C++混合编程实践
1. 深入解析extern C的底层原理与工程实践1.1 C/C混合编程的核心挑战在嵌入式系统开发中,C与C语言的混合编程是常见需求。当C代码需要调用C语言编写的库函数时,编译器对函数名的处理方式差异会导致链接错误。这种差异源于两种语言对函数重载和名字空间的…...
RT-Thread消息邮箱机制解析与应用实践
RT-Thread消息邮箱机制深度解析1. 消息邮箱概述1.1 线程通信基础机制在实时操作系统中,线程间通信(IPC)是系统设计的关键组成部分。RT-Thread提供了两种基础通信机制:消息邮箱和消息队列。消息邮箱以其轻量级和高效性著称,特别适合小数据量的…...
告别地图切换卡顿:优化OpenLayers加载天地图瓦片的性能与体验指南
告别地图切换卡顿:优化OpenLayers加载天地图瓦片的性能与体验指南 在WebGIS项目开发中,地图加载速度和操作流畅度直接影响用户体验。当项目上线后,用户反馈地图切换卡顿、加载缓慢时,开发者往往需要深入底层优化才能解决问题。本文…...
Ubuntu22.04上ROS1 Noetic安装避坑指南:从编译错误到完美运行
Ubuntu 22.04上ROS1 Noetic终极安装指南:解决C17兼容性与依赖冲突 当Ubuntu 22.04成为主流开发环境时,许多机器人开发者面临一个尴尬局面:官方支持的ROS1 Noetic仅适配到Ubuntu 20.04。但现实项目中,我们常被迫在新系统上运行旧版…...
python教育培训机构教务信息管理系统vue
目录功能模块分析学员管理课程管理教师管理财务管理数据统计与分析系统管理技术实现要点前端(Vue)后端(Python)数据交互示例(API设计)扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获…...
Cesium交互绘图避坑指南:从CallbackProperty到CustomDataSource的完整流程
Cesium交互绘图避坑指南:从CallbackProperty到CustomDataSource的完整流程 在三维地理信息可视化领域,Cesium凭借其强大的渲染能力和丰富的API接口,已成为开发者构建交互式地图应用的首选工具。然而,当涉及动态绘图功能时…...
