rsync同步代码

1.前言:

rsync(remote sync)是unix及类unix平台下的数据镜像备份软件,它不像FTP那样需要全备份,rsync可以根据数据的变化进行差异备份,第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件,从而减少数据流量,提高工作效率。


2.前期准备:

主机A:192.168.10.10

需要同步代码的主机B:192.168.10.15 与 主机C:192.168.10.20

目的将主机A的代码传到主机B,C上


3.安装rsync(需切换到root用户)

主机A,B,C都应该安装rsync

sudo su

wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.9.tar.gz

对于wget方式因为找不到下载路径等原因下载不了的,可用:

yum -y install rsync

tar zxvf rsync-3.0.9.tar.gz

cd rsync-3.0.9

./configure —prefix=/usr/local/rsync

make && make install


4.主机A配置:

安装rsync后,创建配置rsyncd.conf文件,vim /etc/rsyncd.conf

添加内容如下:

  1. uid = root #连接到此用户被映射为用户root的权限
  2. gid = root #连接到此用户被映射为用户root的权限
  3. use chroot = no
  4. max connections = 20 #最大连接数,**视实际需获取代码的主机数量而定**
  5. exclude = test_ignore #**相对于path中所定义文件夹的路径,传输时候,不传这些目录;指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中**。
  6. transfer logging = yes
  7. timeout = 900 #连接超时时间
  8. ignore nonreadable = yes
  9. dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2 #防止使用这些方式进行压缩
  10. [test_php_deploy] # **自定义的标签名字,后续在客户端会用上**
  11. path=/home/vagrant/Code/EccangPlatformSystem/test #**主机B,C需要从主机A同步的文件目录,存在于主机A上**
  12. comment=test_php_deploy #自定义的标签名字,后续在主机B,C会用上
  13. ignore errors
  14. read only=true #为true,则不允许主机B,C上传文件
  15. write only=false #为false,则允许主机B,C下载文件
  16. list=false
  17. hosts allow = 192.168.10.15 192.168.10.20 #用一个主机列表指定哪些主机客户允许连接该模块,可以省略此句,若省略则代表允许所有的地址,安全起见,最好加上
  18. hosts allow示例:
  19. - 单个IP地址。例如:192.168.0.1
  20. - 整个网段。例如:192.168.0.0/24,192.168.0.0/255.255.255.0
  21. - 可解析的单个主机名。例如:centos,centos.bsmart.cn
  22. - 域内的所有主机。例如:*.bsmart.cn
  23. - “ * ”则表示所有。星号表示所有
  24. - 多个列表项要用空格间隔:192.168.0.1 192.168.0.3 192.168.16.1
  25. auth user=vagrant #**密码文件的登陆用户名,存在于主机A的用户,如有用多个逗号隔开,并且要求具有对需同步目录下的文件的读和执行权限。**
  26. secrets file=/usr/local/rsync/rsync.passwd #认证**密码文件**便于自动连接,存放用户名和密码的地方

5.配置主机A的密码

vim /usr/local/rsync/rsync.passwd #主机A新建密码文件

echo “vagrant:vagrant” > /usr/local/rsync/rsync.passwd #密码文件中添加”用户名:密码”

chmod 600 /etc/rsyncd.passwd #在主机A新建后,改变权限,修改密码文件的权限(只能是600)

rsync —daemon #在主机A,以daemon模式运行

service rsyncd start #启动rsyncd服务

kill rsync进程号 #停止rsync服务

ps -ef | grep rsync #查看是否正常启动

netstat -lntup | grep rsync #查看是否正常启动


6.主机B,C配置

先安装rsync;

mkdir /home/vagrant/project/givemecode #创建要同步的代码的保存文件夹

rsync —daemon #开启rsync;


7.测试执行

先在主机A对应的路径/home/vagrant/Code/EccangPlatformSystem/test中创建文件,文件夹:

mkdir a

touch b.txt

mkdir test_ignore#此文件夹不被同步到主机B,C,对应主机A中rsyncd.conf中的exclude参数指定的值。

然后在主机B,C执行:

rsync -vzrtopg vagrant@192.168.10.10::test_php_deploy /home/vagrant/project/givemecode/ —password-file=/usr/local/rsync/rsync.passwd —delete

其中参数说明:

  • vagrant为主机A的rsyncd.conf文件中的参数auth user授权用户
  • 192.168.10.10为主机A的ip
  • test_php_deploy为主机A的rsyncd.conf文件的test_php_deploy模块
  • /home/vagrant/project/givemecode/ 为从主机A同步文件到主机B,C的指定目录
  • —password-file=/usr/local/rsync/rsync.passwd此密码文件路径为主机A上的密码文件路径
  • —delete为删除本地多余的目录文件,也就是与主机A的目录文件匹配后不一样的多余文件。当主机A删除文件后,主机B,C同步文件时,若有此参数,主机B,C也会将相同文件删除。

执行效果,当主机A执行增删改文件时,主机B,C也会执行相同修改,达到同步效果;


8.同步的定时任务,主机B,C执行

vim /usr/local/rsync/rsync.sh

添加内容如下:

  1. #!/bin/bash
  2. rsync -vzrtopg vagrant@192.168.10.10::test_php_deploy /home/vagrant/project/givemecode/ --password-file=/usr/local/rsync/rsync.passwd --delete

添加到定时任务:

cd /etc

crontab –e


9.常见异常处理:

9.1若主机B,C同步时报错如下:

@ERROR: Unknown module ‘test_php_deploy’

rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]

可能是主机A中的rsyncd.conf中配置参数hosts allow未指定该主机B,C的ip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值