rsync通过服务方式同步



这种方式虽然复杂,但是安全,一旦配置完,用起来也很方便


大致的介绍:开启rsync服务,监听某个端口(默认是873),等待客户端的连接和同步(有点像FTP,有一个服务端,可以有多个客户端)






服务端:



 创建你服务器要同步数据的目录 /tmp/rsync


mkdir /tmp/rsync



设置权限为700


chmod 700  /tmp/rsync/



编辑配置文件/etc/rsyncd.conf  (修改该文件  除了修改监听端口跟ip需要重启,修改的其他选项都不需要重启服务)


vim /etc/rsyncd.conf



内容如下:


#监听的端口


port=873


#日志


log file=/var/log/rsync.log


#pid文件


pid file=/var/run/rsyncd.pid


#监听服务的IP(服务端本机的IP)


address=10.1.1.10


#模块名


[test]


 #模块名所代表的的路径(目录必须存在)


path=/tmp/rsync


 #是否限制跨越目录到其他路径下的权限  true代表限制  false代表不限制(主要是针对L选项是否能将软链接指向本级目录外的内容同步到本级目录)


use chroot=true


#服务最大连接数目   默认是0 即不限制


max connections=4


#是否只读


read only=no


#是否列出所有可用模块


list=true


#同步时文件所用的用户


uid=root


#同步时文件所用的组


gid=root


#登录的用户


auth users=shibocong


#模块用户和对应的密码文件存放的地方  格式 :    用户名:密码,  权限 600  这个密码文件是放在服务端


secrets file=/etc/rsyncd.passwd


#允许哪些IP连接该服务(客户端)


hosts allow=10.1.1.11




rsync 修改端口 rsync服务端口_客户端cwRsync




编辑密码文件并更改权限为600


vim  /etc/rsyncd.passwd


内容如下:


shibocong:1234567890



rsync 修改端口 rsync服务端口_客户端cwRsync_02



chmod 600 /etc/rsyncd.passwd



rsync 修改端口 rsync服务端口_客户端cwRsync_03



启动服务rsync --daemon(默认文件在/etc/rsyncd.conf)


(如果你的配置文件不是该目录下的rsyncd.conf,就要加上 --config 的选项 


如: --config=/etc/rsyncd2.conf


命令:


rsync --daemon 或者 rsync -daemon --config=/etc/rsyncd.conf



rsync 修改端口 rsync服务端口_客户端cwRsync_04




防火墙放行:(请确认你的selinux是关闭的)


iptables  -A  INPUT -p tcp --dport=873  -s 10.1.1.14  -j ACCEPT



rsync 修改端口 rsync服务端口_cwRsync客户端密码权限错误_05






客户端:



linux下面的客户端



同步数据(有时候因为密码设置的很复杂,所以我们在客户端新建一个文本来存储密码)


添加密码文件


vim /etc/sync_pass


内容如下:(只需要填写密码)


1234567890


修改密码文件的权限为600


chmod 600 /etc/sync_pass 




把服务器的拉下来


rsync -avL  --port 873  --password-file=/etc/sync_pass     shibocong @10.1.1.10:: test     /tmp/



把本地的推上服务器


rsync  -avL  --port 873  --password-file=/etc/sync_pass   /tmp/1.txt    shibocong @10.1.1.10:: test      










windows下面的客户端



如果windows系统要跟linux系统文件同步


windows作为客户端


工具:cwRsync


下载地址


https://www.itefix.net/dl/cwRsync_5.5.0_x86_Free.zip



1.解压压缩包cwRsync_5.5.0_x86_Free.zip到D盘,顺便重命名文件夹为cwRsync


2.进入解压后的文件夹运行cwrsync.cmd生成home 目录


3.在windows本地新建一个你要同步的目录python 作为我们同步数据的目录(名字自定义)


4.在D:\cwRsync目录下创建一个记录密码的文件rsync.pass 内容是 1234567890





写一个批处理文件:


在任意地方创建一个文本文件,并且把后缀名改成bat  另存为 ANSI 格式的bat(不然会乱码)




内容如下:(因为--password-file=D:/cwRsync/rsync.pass不生效,所以改成--password-file=/cygdrive/d/cwRsync/rsync.pass)




@echo off


echo 开始同步服务器/tmp/rsync/数据到本地Python目录下


cd d:\cwRsync\bin\


d:


rsync.exe --port=873 -avzP  --password-file=/cygdrive/d/cwRsync/rsync.pass


echo 同步完成


pause






PS:如果同步的时候出现密码权限错误,就采取下面步骤(一般不会,我在这个问题上面卡了两天)


第一种做法:修改客户端密码文件权限


chmod 600 rsync.pass   


chown administrator rsync.pass


第二种就是用重定向符号


rsync.exe --port=873 -avzP    d:/cwRsync/rsync.pass




PS:如果出现其他错误,基本上大部分都是配置文件/etc/rsyncd.conf配置文件上面的错误,可能是你某个字母打错了

PS:还要检查防火墙netfilter或者firewalld是否放行了端口

PS:用ps aux|rsyncd  查看你的rsyncd服务是不是启动了