Linux作为Rsync的服务端,Linux和windows作为Rsync的客户端

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
Linux作为Rsync的服务端,Linux和windows作为Rsync的客户端_第1张图片

编辑密码文件并更改权限为600
vim  /etc/rsyncd.passwd
内容如下:
shibocong:1234567890

chmod 600 /etc/rsyncd.passwd

启动服务rsync --daemon(默认文件在/etc/rsyncd.conf)
(如果你的配置文件不是该目录下的rsyncd.conf,就要加上 --config 的选项 
如: --config=/etc/rsyncd2.conf
命令:
rsync --daemon 或者 rsync -daemon --config=/etc/rsyncd.conf


防火墙放行:(请确认你的selinux是关闭的)
iptables  -A  INPUT -p tcp --dport=873  -s 10.1.1.14  -j ACCEPT




客户端:

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  [email protected]::test/  /cygdrive/d/python/   
echo 同步完成
pause


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

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

chmod 600 rsync.pass   
chown administrator rsync.pass
第二种就是用重定向符号
rsync.exe --port=873 -avzP      [email protected]::test/  /cygdrive/d/python/ < d:/cwRsync/rsync.pass

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

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

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


参考链接:
https://blog.csdn.net/admin_root1/article/details/78911674

你可能感兴趣的:(Linux)