一、rsync +cwrsync实现windows和linux的文件同步

Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。

一、Linux服务器端安装rsync服务

1、可以通过yum安装:

yum -y install rsync 
 
#启动rsync服务
systemctl start rsyncd.service
systemctl enable rsyncd.service

#检查是否已经成功启动
netstat -lnp|grep 873

2、rsync服务器的配置文件rsyncd.conf (/etc/rsyncd/rsyncd.conf):

rsync的主要有以下三个配置文件:

  • rsyncd.conf(主配置文件)
  • rsyncd.passwd(密码文件)
  • rsyncd.motd(rysnc服务器信息)

3、在/etc目录下创建一个rsyncd的目录,用来存放rsyncd.passwd文件

mkdir rsyncd
touch rsyncd.passwd
chmod 600 rsyncd.pwsswd        #为了密码的安全性,我们把权限设为600

配置rsyncd.passwd文件:

rsyncd.passwd的内容格式为 用户名:密码

root:123456

**注意:
将rsyncd.passwd这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功! 出于安全目的,文件的属性必需是只有属主可读**

4、配置rsyncd.conf文件:

# /etc/rsyncd: configuration file for rsync daemon mode

# See rsyncd.conf man page for more options.

# configuration example:

# uid = nobody
# gid = nobody
# use chroot = yes
# max connections = 4
# pid file = /var/run/rsyncd.pid
# exclude = lost+found/
# transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

#服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody
uid = root 
gid = root

#如果"use chroot"指定为yes,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为yes 
use chroot = no

#客户端最多连接数
max connections = 4

#指定运行端口,默认是873
#port = 8877  

#指定服务器IP地址
#address = 192.168.56.102

# CentOS7中yum安装不需指定pid file 否则报错
# pid file = /var/run/rsyncd.pid 
lock file =/var/run/rsyncd.lock
#日志文件
log file = /var/log/rsyncd.log
# //此文件定义完成后系统会自动创建
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 

#同步模块
[test_data]
#指定文件目录所在路径
path = /opt/leasing

#list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes 。如果你不想列出来,就no ;如果是no是比较安全的,至少别人不知道你的服务器上提供了哪些目录。你自己知道就行了
list=no

#指定在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误。一般来说 rsync 在出现 I/O 错误时将将跳过 –delete 操作,以防止因为暂时的资源不足或其它 I/O 错误导致的严重问题。
ignore errors

#如果为yes,表示只读本地文件就无法同步到服务器
read noly = no

#允许连接的ip,在演示中使用的云服务器就直接写*,表示无限制 如果要规定ip(192.168.10.223)或者ip段(10.1.4.0/255.255.255.0)需要进行其他配置
hosts allow=*

#auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开
auth users = root

#密码存在rsyncd.passwd文件里
secrets file=/etc/rsyncd/rsyncd.passwd


# [ftp]
#        path = /home/ftp
#        comment = ftp export area

5、配置rsyncd.motd 文件(似乎也不是必须的)

rsyncd.motd 文件类似ftp服务器登录时,我们所看到的提示信息……,当然这在全局定义变量时,并不是必须的,你可以用#号注掉,或删除

++++++++++++++++++++++++++++++++++++++++++++++
欢迎使用
++++++++++++++++++++++++++++++++++++++++++++++
---------------------

6、重启: 

systemctl restart rsyncd.service

 二、windows安装cwRsync客户端

1、下载服务端安装文件 http://www.jb51.net/softs/55933.html

2、cwRsync客户端不需要很复杂的配置,配置Windows的环境变量PATH:E:\cwRsync\Install\bin

3、在windows本地新建一个要同步的目录rsync_data作为同步数据的目录(名字自定义)

4、在E:\cwRsync目录下创建一个记录密码的文件rsync.passwd 内容即密码: 123456

5、写一个bat批处理文件,另存为 ANSI 格式的bat(不然会乱码):rsync_start.bat

@echo off
echo 开始同步服务器/opt/leasing/数据到本地rsync_data目录下
cd E:\cwRsync\Install\bin
rsync.exe --port=873 -avzP --delete --password-file=/cygdrive/e/cwRsync/rsync.passwd  [email protected]::test_data/  /cygdrive/E/cwRsync/rsync_data
echo 同步完成
pause



#–port=873 #端口
#--password-file 密码文件
#root #执行数据同步的用户
#106.14.69.110 #服务器地址
#test_data #模块名称
#--delete #从cwRsync客户端E:\cwRsync\rsync_data目录中删除与Rsync服务端/opt/leasing目录中不相同的数据,即保证两边的数据完全一致
#/cygdrive/E/cwRsync/rsync_data 表示本地的同步文件夹E盘:E:/cwRsync/rsync_data 为同步文件夹

由于rsync始终是Linux下的东西,所以在设置win的保存目录的时候,必须/cygdrive带头后面跟盘符及目录

运行rsync_start.bat即可。

三、可添加批处理脚本到Windows任务计划,实现自动同步数据

四、Windows同步到linux:  https://www.linuxidc.com/Linux/2012-09/71333.htm

猜你喜欢

转载自blog.csdn.net/qq_35893120/article/details/83541032