使用rsync定期同步windows系统文件到Linux系统

作者: JavasBoy 分类: Linux, Script 发布时间: 2017-02-27 16:21 ė1440 views 61条评论

1 Windows 平台 cwRsync 安装配置成客户端,通过设置计划任务每 5 分钟推文件到 linux 的 rsync 服务端。
2 linux 配置成服务端。
3 记录同步详细日志,linux平台记录日志。
4 只同步新增或者修改过的不一样的文件,忽略时间、权限的同步。
示意图如下:

+----------------------+            |           +----------------------+
|   Windows IIS web    |10.10.100.2 |10.10.100.0|   Linux Nginx web    |
|                      +------------+-----------+                      |
|   /data/htdocs/*     |    --------------->    |     /data/htdocs/*   |
+----------------------+         copy           +----------------------+

一、Windows 客户端配置:
cwRsync是基于cygwin平台的rsync软件包,支持windows对windows、windows对Linux、Linux对windows高效文件同步。由于CwRsync已经集成了cygwin类库,因此安装的时候可以省去cygwin包。Cwrsync还集成了OpenSSH for windows,可以实现Linux 下Rsync一模一样的操作。使用 cwRsync 来同步文件后,只需要对一台主服务器进行文件修改,其他镜像服务器可以自动同步,包括文件的更新、删除、重命名等。

cwRsync分为付费版和免费版两种,我们只需要使用免费版即可,在官方网站上面下载 cwRsync Free Edition 版本。

https://www.itefix.net/content/cwrsync-free-edition
Name: cwRsync_5.5.0_x86_Free.zip
SHA256: 37e8ef21ac975d4ee86c9d3be40c8935e8b9d0ba84e9302fc106b9452296cb85

包含如下几个程序
Version information:
Rsync 3.1.2
Cygwin 2.3.1
OpenSSH 7.1p
OpenSSL 1.0.2e

1.2 解压 cwRsync_5.5.0_x86_Free.zip 到 D:\data\app\cwRsync_5.5.0_x86_Free 目录中
1.3 双击 cwrsync.cmd 运行,会在当前生成 home\%USERNAME%\.ssh 目录,供 ssh 认证方式使用。
1.4 为系统新建一个环境变量,目录为cwrsync的bin目录下,例:path:D:\data\app\cwRsync_5.5.0_x86_Free\bin。这样 cmd 命令行下可以直接运行 rsync 这个命令
C:\Users\Administrator>rsync --version
rsync version 3.1.2 protocol version 31

2.1 Ubunut 16.04 下安装 rsync

apt-get install rsync
# rsync  --version
rsync  version 3.1.1  protocol version 31

2.2 配置文件
vim /etc/rsyncd.conf

pid file = /var/run/rsync.pid
port = 873
log file = /var/log/rsyncd.log
lock file = /var/run/rsync.lock 

# create new
# any name you like
[resources]
# destination directory to copy
path = /data/htdocs/
# hosts you allow to access
hosts allow = 10.10.100.2
hosts deny = *
secrets file = /etc/rsyncd.pass
# 表示该节点是否可被发现。
list = true
# 指定传输到这里文件所属的用户。
uid = www-data
# 指定传输到这里的文件所属的组。
gid = www-data
# rsync连接时的用户名,要和客户端rsync的命令一致
auth users = www-data
# 该目录是否只读
read only = no
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.  
timeout = 600

# 创建密码文件
touch /etc/rsyncd.pass
#权限修改
chown root:root /etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass
vim /etc/rsyncd.pass
内容为:www-data:passwd # 用户名:密码

2.3 启动服务端

service rsync start

# 添加开机启动
update-rc.d rsync defaults

2.4 检查 rsync 端口,确认已启动

netstat -ntlpu | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      25753/rsync     
tcp6       0      0 :::873                  :::*                    LISTEN      25753/rsync     

3.1 客户端测试
新建立目录
D:\data\app\cwRsync_5.5.0_x86_Free\etc
创建 rsync.pass 文件
输入 rsync 服务端的密码

# -u 同步不覆盖(源到目的)目的产生的新文件内容,不修改覆盖目标目录下的新增类的文件
完整的同步命令:

rsync -acrtzv --password-file=/cygdrive/d/data/app/cwRsync_5.5.0_x86_Free/etc/rsync.pass /cygdrive/d/data/htdocs/ www-data@10.10.100.0::resources

日志:
2017/02/27 14:44:38 [25798] name lookup failed for 10.10.100.2: Name or service not known
解决这个 not known 的问题,把客户端的 hostname 写入服务端的系统 host 文件中

vim /etc/hosts

10.10.100.2 IISWEB01

3.2 创建同步脚本文件
D:\data\app\cwRsync_5.5.0_x86_Free\etc
dynamicres_sync.bat

@echo off
D:\data\app\cwRsync_5.5.0_x86_Free\bin\rsync -acrtzv --password-file=/cygdrive/d/data/app/cwRsync_5.5.0_x86_Free/etc/rsync.pass /cygdrive/d/data/htdocs/ www-data@10.10.100.0::resources

4.1 在Windows中创建任务计划:
每5分钟执行一次 dynamicres_sync.bat 这个同步脚本

5.1 Linux Rsync server 日志
发现日志中第二行和第三行时间是使用 UTC 时间。

# tail -100f /var/log/rsyncd.log 
2017/02/27 16:15:58 [26150] connect from IISWEB01 (10.10.100.2)
2017/02/27 08:15:58 [26150] rsync to resources/ from www-data@IISWEB01 (10.10.100.2)
2017/02/27 08:15:58 [26150] receiving file list
2017/02/27 08:15:59 [26150] sent 25 bytes  received 7441 bytes  total size 8515857
2017/02/27 16:20:58 [26156] connect from IISWEB01 (10.10.100.2)
2017/02/27 08:20:58 [26156] rsync to resources/ from www-data@IISWEB01 (10.10.100.2)
2017/02/27 08:20:58 [26156] receiving file list
2017/02/27 08:20:59 [26156] sent 25 bytes  received 7441 bytes  total size 8515857

本文出自 刘荣星的博客,转载时请注明出处及相应链接。

本文永久链接: https://www.liurongxing.com/use-rsync-crontab-windows-system-file-to-linux-system.html

一条评论

  1. 东方星痕 2017年4月5日 14:54 回复

    很好但我选择btsync

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Ɣ回顶部