前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7安装rsync及两台机器进行文件同步

centos7安装rsync及两台机器进行文件同步

作者头像
拓荒者
发布2019-03-11 10:58:07
1.9K0
发布2019-03-11 10:58:07
举报
文章被收录于专栏:运维经验分享

安装及配置

安装运行:

代码语言:javascript
复制
yum -y install rsync  
#启动rsync服务
systemctl start rsyncd.service
systemctl enable rsyncd.service

#检查是否已经成功启动
netstat -lnp|grep 873
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
这里写图片描述
这里写图片描述

好了,好了。安装成功。

配置:  首先,配置文件在:  /etc/rsyncd.conf

代码语言:javascript
复制
vim /etc/rsyncd.conf
  • 1

看到:

这里写图片描述
这里写图片描述

好了,先修改成:

代码语言:javascript
复制
 uid = root                              
 # //设置运行rsync 进程的用户
 gid = root
 use chroot = no
 max connections = 4
# pid file = /var/run/rsyncd.pid        
#//CentOS7中yum安装不需指定pid file 否则报错
 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          
 #  //传输时不压缩的文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
这里写图片描述
这里写图片描述

重启:

代码语言:javascript
复制
systemctl restart rsyncd.service
  • 1

两个服务器间传输文件

好了,上面配置完rsync了,那么接下来,假设有两台服务器,开发服务器dev及线上测试环境test,现在需要从dev将可运行代码更新到test上面去。

注意:每一次传输文件客户端将告诉服务端需要调用哪个传输规则进行传输,而传输规则如下:

代码语言:javascript
复制
[simba]          //此名字即客户端使用rsync来同步的路径
path=/usr/local/simba    //实际需要同步的路径
comment=simba    //和中括号里名字一样就行
ignore errors
read only=no   //表示可以pull 
write only=no      //表示可以push
list=no
auth users=rsyncuser    //客户端获取文件的身份此用户并不是本机中确实存在的用户
secrets file=/etc/rsyncd.passwd     //用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权       
                                                        //限一定需要改为600,且属主必须与运行rsync的用户一致。
hosts allow=*    //允许所有主机访问
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

好了,我们自己做一个规则,假定test上面接收的目录是: /data/www/helloRsync

代码语言:javascript
复制
#创建目录
mkdir  /data/www/helloRsync
  • 1
  • 2
  • 3
  • 4

而dev上面也是。。。  请自行创建。  那么在test上面的/etc/rsyncd.conf添加规则:

代码语言:javascript
复制
#规则名称,作为测试用规则,直接用这个算了。
[helloRsync]          
#同步的路径
path=/data/www/helloRsync    
#规则描述
comment=测试规则
ignore errors
#是否可以pull
read only=no    
#是否可以push
write only=no      
list=no
#下面配置同步时候的身份,注意该身份是在rsync里面定义的,并非是本机实际用户。等下说说如何在rsync里面定义身份。
#客户端获取文件的身份此用户并不是本机中确实存在的用户
auth users=rsyncuser    
#//用来认证客户端的秘钥文件 格式 USERNAME:PASSWD 此文件权     
#//限一定需要改为600,且属主必须与运行rsync的用户一致。  
secrets file=/etc/rsyncd.passwd                                                             
#允许所有主机访问
hosts allow=*    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
这里写图片描述
这里写图片描述

给rsync定义身份,如下:

代码语言:javascript
复制
echo 'rsyncuser:123456'>/etc/rsyncd.passwd   //文件用户名和路径为上面定义,别写错,密码自己定
chmod 600 /etc/rsyncd.passwd        //修改权限
  • 1
  • 2

重启服务。

代码语言:javascript
复制
systemctl restart rsyncd.service
  • 1

客户端的配置

1。创建密码。

代码语言:javascript
复制
echo '123456' >>/etc/rsyncd-test.passwd     //注意这里只需要服务器rsyncd.passwd 中的密码
chmod 600 /etc/rsyncd-test.passwd
  • 1
  • 2

为了测试顺利,我们添加一些文件进行同步,譬如:

代码语言:javascript
复制
echo 'test,hello'>> /data/www/helloRsync/readme.txt
  • 1
  • 2

好了,同步:

代码语言:javascript
复制
rsync -auv --password-file=/etc/rsyncd-test.passwd rsyncuser@120.x.x.x::helloRsync /data/www/helloRsync/   
  • 1
这里写图片描述
这里写图片描述

看看服务器上面对应目录

这里写图片描述
这里写图片描述

检查原因

这里写图片描述
这里写图片描述

test上面看日志:

代码语言:javascript
复制
vim  /var/log/rsyncd.log 
  • 1
  • 2
这里写图片描述
这里写图片描述

好了,

这里写图片描述
这里写图片描述

auth user 是错的,要用 auth users,也是醉了,都没发现吗?

改过以后重启rsync服务,在尝试

得到:

这里写图片描述
这里写图片描述

name or service not kunown

据查这不是问题,怀疑,是rsync命令问题,应该是将test的文件下载下来了,于是将目录调换一下顺序,得到:

代码语言:javascript
复制
rsync -auv --password-file=/etc/rsyncd-test.passwd  /data/www/helloRsync/ rsyncuser@120.x.x.x::helloRsync 
  • 1

报错: 

这里写图片描述
这里写图片描述

好了,是没有放开权限: 

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

放开以后重启终于成功了。泪流满面。坑爹丫。

一份真实环境用的更新脚本demo

代码语言:javascript
复制
src="/usr/local/webroot/java-web-bld"
rsync -rauvvt --progress \
--password-file=/etc/rsyncd-test.passwd \
--exclude="console/data" \
--exclude=".svn" \
--exclude="WEB-INF/logs" \
--exclude="res/upload" \
--exclude="WEB-INF/upload" \
--exclude="WEB-INF/temp" \
--exclude="env.properties" \
/usr/local/webroot/java-web-bld/ rsyncuser@xxx.xx.xx.xxx::backend

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/10/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装及配置
  • 两个服务器间传输文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档