背景:

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

 难点:

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

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

 解决方法:

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

 网络连接拓扑如下: 

Windows与Linux跨机房数据同步_第1张图片

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

 

Windows与Linux跨机房数据同步_第2张图片


  实施步骤1:

    配置两地SMB

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

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

  实施步骤2:

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

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

  实施步骤3:

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


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

   要点:

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

   所需软件:

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

    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 Administrator@IP

    一路回车,无密码

   

    将得到的公钥下发到总部前置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

   于是更改文件属性到如下

   

Windows与Linux跨机房数据同步_第3张图片

      修改后如下:

Windows与Linux跨机房数据同步_第4张图片

     执行以下脚本进行同步:

     

@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 backup@总部前置机IP:/home/share/ /cygdrive/e/



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