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-AINPUT -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_passshibocong
@10.1.1.10::
test
/tmp/
把本地的推上服务器 rsync-avL
--port 873--password-file=/etc/sync_pass/tmp/1.txtshibocong
@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.passshibocong@10.1.1.10::test//cygdrive/d/python/echo 同步完成 pause
PS:如果同步的时候出现密码权限错误,就采取下面步骤(一般不会,我在这个问题上面卡了两天) 第一种做法:修改客户端密码文件权限
chmod 600 rsync.passchown administrator rsync.pass 第二种就是用重定向符号 rsync.exe --port=873 -avzPshibocong@10.1.1.10::test//cygdrive/d/python/ < d:/cwRsync/rsync.pass
PS:如果出现其他错误,基本上大部分都是配置文件/etc/rsyncd.conf配置文件上面的错误,可能是你某个字母打错了
PS:还要检查防火墙netfilter或者firewalld是否放行了端口
【Linux作为Rsync的服务端,Linux和windows作为Rsync的客户端】PS:用ps aux|rsyncd查看你的rsyncd服务是不是启动了
参考链接: https://blog.csdn.net/admin_root1/article/details/78911674
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具