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
编辑密码文件并更改权限为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