Rsync的文件同步实现
一、rsync 简介
Rsync(remote synchronize)是一个远程数据同步工具,简要的概括就是主机于主机之间的文件目录数据的一个同步。
它的特性如下:
可以镜像保存整个目录树和文件系统。
可以很容易做到保持原来文件的权限、时间、软硬链接等等。
无须特殊权限即可安装。
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。
安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。
支持匿名传输,以方便进行网站镜象
度娘上面的解析。(我懒得看,可谓见其文,不如悟其理。看着我操作一遍立刻明白!)
总的来说是一个容错、可靠、高效的文件同步工具 。
二、环境需求(虚拟机上面搭建的环境)
系统:ceotos 6.5 内核:2.6.32-431.el6.x86_64
主机A:192.168.0.244/24
主机B:192.168.0.144/24
rsync-3.1.2.tar.gz
三、搭建rsync
rsync在主机A上面配置:
注意:rsync最重要的2个文件 1、rsyncd.conf 配置文件
2、rsyncd.password 用户密码文件
其他的rsyncd.motd 这些是次要的,这只是一个显示页面信息,类似于访问一个服务器的时候提示的一些广告似的信息。
本次操作中我在主机A的etc目录下面直接创建了上面三个文件。
-rw-r--r-- 1 root root 443 Aug 16 10:49 /etc/rsyncd.conf -rw-r--r-- 1 root root 252 Aug 16 10:44 /etc/rsyncd.motd -rw-r--r-- 1 root root 18 Aug 16 10:44 /etc/rsyncd.password
rsync.passwd:
nowview:nowcaster
rsync.motd:(打广告了)
***************************************** * * * Rsync * * * * * *****************************************
rsyncd.conf:这里我只是主要测试这个文件同步的功能,你们需要其他更多的功能的话,可以自行添加相关参数模块即可,可以参考:
#This is rsync conf###### uid = nowview #需要添加的,以及下面的模块里面的目录backup的属性需要改为nowview用户的 gid = nowview #关于这个uid跟gid没有处理好,后面在同步备份文件的时候后报错,文件权限不够。用root最保守,不过安全性。。这个需要自己认真调配置参数 max connections = 200 timeout = 300 pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock log file = /var/log/rsyncd.log #可以设置显示格式log format = %t %a %m %f %b motd file = /etc/rsyncd.motd #第一个打广告信息 - - [backup] #同步的模块的名称 path = /home/backup #模块下面的同步具体路径 ignore errors read only = false list = false hosts allow = * hosts deny = 0.0.0.0/32 auth users = nowview #用户名 secrets file = /etc/rsyncd.password exclude = www/ GR068/ #这是除了home目录的下www 跟GR068目录 comment = loading..... #第二个打广告信息,下面测试的时候可以看到 - -
找一下rsync的主程序,一般安装在了 /usr/local/bin/rsync
cp -a /usr/local/bin/rsync /usr/bin/rsync 放到bin下面
下面使用daemon启动rsync
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf
ps看一下进程,rsync的默认端口是873
[root@主机A-144 home]# ps -ef |grep rsync root 5835 1 0 10:51 ? 00:00:00 /usr/bin/rsync --daemon --config=/etc/rsyncd.conf root 5864 1323 0 11:08 pts/1 00:00:00 grep --color rsync
[root@主机A-144 home]# netstat -lantup |grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5835/rsync tcp 0 0 :::873 :::* LISTEN 5835/rsync
继续。。。
想开机启动的话,把
/usr/bin/rsync --daemon --config=/etc/rsyncd.conf 添加到/etc/rc.d/rc.local 下面即可注意:1、这个rsyncd.passwd 文件 的所属组是root 如果你的当前用户比如是rsync那就是改成rsync即可
chown rsync.rsync /etc/rsyncd.password
2、rsyncd.passwd 的权限改为600 否则密码无法访问[root@主机A-144 ~]# chmod 600 /etc/rsyncd.password [root@主机A-144 ~]# ll -d /etc/rsyncd.password -rw------- 1 root root 18 Aug 16 10:44 /etc/rsyncd.password [root@主机A-144 ~]#
在主机A添加nowview用户
useradd nowview
以上在主机A配置全部完毕!
四、测试
下面在主机B上面进行测试。
曾经在测试的时候出现过形形色色的问题(粗心--),我把这些问题归纳在一起。
注意:1、为了方便测试,我就把主机A和主机B的防火墙直接关闭掉,如果你对这方面有要求的话,就直接把873这个端口从两边打通即可。