Windows与Linux跨机房数据同步

背景:

总部研发中心需要将机房的存储SMB服务中某些文件同步到 IDC 及 分公司研发中心办公区内部SMB。 IDC与总部研发中心通过IPsecVPN,形成隧道链路;分公司办公区域仅为基本网络。

难点:

办公区无硬件VPN类设备,无固定IP

总部的防火墙提供的VPN客户端Linux版本仅为1.00,需要开图形且极其不好用;

 解决方法:

办公区域增加前置机安装windows版本软件VPN,实现与总部前置机联通。

 网络连接拓扑如下: 

 应用实施拓扑及步骤如下:

 

  实施步骤1:

配置两地SMB

总部samba服务器安装NFS(或者沿用SMB),分公司配置SMB服务器;

在两办公区将相关路径磁盘分别挂载到各自的前置机;

实施步骤2:

通过的IPSecVPN的方式,将总部前置与IDC前置策略打通;

将已经挂载SMB的前置机上文件夹rsync到IDC托管服务器的相关目录;

  实施步骤3:

实现Windows与Linux跨机房数据同步

本文着重讲述实施步骤3的相关细则

要点:

分公司无固定IP,采用“PULL”方式,将数据文件通过rsync同步到分公司前置机。

所需软件:

防火墙自带Windows版本VPN客户端

cwRsync_5.5.0_x86_Free.zip

(下载地址:https://www.itefix.net/dl/cwRsync_5.5.0_x86_Free.zip)

众所周知,rsync依赖于ssh进行登录,Windows版本rsync的难点在于如何实现无密码自动登录。

难点1:ssh所对应Windows下的/home目录创建

增加环境变量:

系统变量

新增path

C:\cwRsync_5.5.0_x86_Free\bin

用户变量

新增CWRSYNCHOME

C:\cwRsync_5.5.0_x86_Free\bin

   完成后需要通过命令行创建/home/Administrator/.ssh

创建.ssh必须通过命令行

 cmd中执行

   SET CWRSYNCHOME=C:\cwRsync_5.5.0_x86_Free
   MKDIR %CWRSYNCHOME%\home\%USERNAME%\.ssh

难点2:keygen权限问题

cmd中执行

ssh-keygen -t rsa -C [email protected]

一路回车,无密码

将得到的公钥下发到总部前置Linux服务器

导入分公司前置机公钥

 cat id_rsa.pub >> ~/.ssh/authorized_keys
 chmod 600 .ssh/authorized_keys

公钥下发后依旧保持需要密码,报错如下:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@WARNING: UNPROTECTED PRIVATE KEY FILE!. @@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

这个报错是因为Windows下生成的id_rsa id_rsa.pub及konw_hosts权限不是600

于是更改文件属性到如下

修改后如下:

执行以下脚本进行同步:

@ECHO OFF
SET CWRSYNCHOME=C:\cwRsync_5.5.0_x86_Free
IF NOT EXIST %CWRSYNCHOME%\home\%USERNAME%\.ssh MKDIR %CWRSYNCHOME%\home\%USERNAME%\.ssh
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\bin;%PATH%
rsync -vzrtopg --progress --delete [email protected]总部前置机IP:/home/share/ /cygdrive/e/

设置任务计划,就可以实现定时自动同步。

时间: 2025-01-14 08:31:37

Windows与Linux跨机房数据同步的相关文章

利用otter实现跨机房数据同步

Otter: otter是阿里开源的一个分布式数据库同步系统,尤其是在跨机房数据库同步方面,有很强大的功能.它是基于数据库增量日志解析,实时将数据同步到本机房或跨机房的mysql/oracle数据库. 环境:(由于环境隐私原因,环境中使用的外部IP隐藏) 网络图: 实验环境: A机房(公司内网)<===>B机房(云服务环境内网) 数据源(mysql需开启binlog,binlog_format=ROW): Mysql_A:192.168.1.20:3306(外部IP:xx.xx.xx.xx:3

sybase代理表 跨服务器数据同步

sybase ASE 代理表  跨服务器数据同步 之前双做了sybase服务器数据同步,使用的代理表.近期更换server1,一开始安装sybase时本地服务器名不同,server1的数据直接dump,完成后可以读取数据,但在执行代理表数据插入本地表中时报错.查询后 select @@servername 本地名为db3 查询原本地服务器名为charge 删除原名 sp_dropserver db3 设置新名,即原server1名 sp_addserver charge,local 重启syba

MySQL数据库跨服务器数据同步

1.背景介绍最近公司项目要求与开源项目Zentao做数据对接,因为改动开源项目风险较大,采用将Zentao数据库的相关表与本地数据库同步的方案.由我测试方案的可行性.mysql版本:5.7.20.本地数据库A(作为Zentao数据库),本地数据库B,本地程序C:本地为Windows环境. 2.方案探索方案1项目经理的意思是在A中写触发器,表中数据变化时将ID发给C,由C在A中查询变化的数据,写入B.过程中需要安装mysql-udf-http插件(参考:https://www.2cto.com/d

Linux之rsync数据同步服务

rsync是一个开源.快速的.多动能的.可以实现全量,增量的本地或远程数据同步备份工具,它适用于多种操作系统平台. 1.rsync的特性(功能) (1)支持拷贝特殊文件(如链接文件.设备文件) (2)拷贝时可以排除目录中目录或文件不需要同步的功能 (3)可以保持源文件或目录的属性不发生改变 (4)可以实现全量.增量的同步功能.传输效率比较高 (5)可以使用scp.ssh.rsh等方式配合使用 (6)可以通过socke传输方式来同步数据 (7)支持匿名或认证(无需系统用户)的进和模式来进行传输同步

Oracle Job定时任务详解、跨数据库数据同步

业务需求,需要与A公司做数据对接,我们公司用的Oracle,A公司用的SQL Server数据库,如何跨数据库建立连接呢?这里使用的是DBLink,不会配置的请看我的另外一篇博客:https://www.cnblogs.com/chenyanbin/p/11291752.html 如果做数据同步呢?上面我们已经通过DBLink与SQL Server建立连接了,那么我们就可以获取A公司表中的数据.在通过Oracle Job定时任务,具体JOB还有那些功能,这里不做详细介绍了,百度上一大堆,这里我们

Linux系统实时数据同步inotify+rsync

一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Linux内核版本必须是大于2.6.13,在这之前的内核都没有这个功能.我们可以利用inotify去监控我们要监控的资源,当资源发生变化时,我们扑捉它的事件,从而触发同步数据等操作. 二.inotify软件介绍 inotify是内核的一个功能,众所周知内核的功能我们必须要配合工具才能使用,通常情况下用户

使用HTML5 跨域共享特性解决AJAX跨域数据同步问题

HTML 5以前的标准由于考虑到浏览器安全问题并不允许直接跨域通信,于是为了达到跨域通信的目的各种蛋疼的解决办法出现了,常用的有:jsonp.使用代理文件.地址栏hash等等,这些办法的出现在达到解决跨域问题的同时,也增加了前端页面的性能开销和维护成本.HTML5新的标准中,增加了" Cross-Origin Resource Sharing"特性,这个特性的出现使得跨域通信只需通过配置http协议头来即可解决. Cross-Origin Resource Sharing 详细解释见:

在 Windows 下用 TDM-GCC(MinGW)开发 DLL 涉及到数据同步锁及 DLL 初始化终止化函数的问题

在 Windows 下用 TDM-GCC(MinGW)开发 DLL 如果要用到数据同步锁,理论上可以采用 Windows API 提供的临界区实现(需要用到的函数有 InitializeCriticalSection.DeleteCriticalSection.EnterCriticalSection.LeaveCriticalSection),也可以采用 GCC 的 pthread 库中的 pthread mutex lock 互斥锁来实现(需要用到的函数有 pthread_mutex_ini

[转]跨机房问题

跨机房问题一直都是一个老大难的问题,先看传统数据库的跨机房方案. Master/Slave方案 这是最常用的方案,适用于大多数需求.Master将操作日志实时地发送到Slave,Slave当成Master的一个Hot Backup.Master宕机时,服务切换到Slave,需要修改客户端逻辑使得Master失效时自动寻找新的Master. 这个方案有一个问题就是数据库的Master和Slave一般不是强同步的,所以,切换到Slave后可能丢失宕机前的少量更新.如果将Master和Slave做成强