【51CTO独家特稿】搞运维的同行们对远程同步工具Rsync应该都不陌生。Rsync的使用和配置方法网上已经有很多,本文就不用再多说。这篇文章主要是跟大家分享一下我在使用Rsync的过程中总结的一些心得经验,以及出现一些权限问题的时候,应该如何解决。 作者简介:余洪春(博客),网名抚琴煮酒,英文名Andrew.Yu,武汉某外企高级Linux/Unix系统管理员、项目实施工程师,红帽RHCE讲师,擅长负载均衡高可用和中小型证券类和商务网站架构,目前关注网站架构研究及网络安全。 推荐专题:企业内网开发环境部署与管理全攻略(FreeBSD+PHP) 本文使用的测试机器: rsync服务器 64-bit Centos5.5 192.168.21.41 rsync客户端 64-bit FreeBSD8.1 192.168.21.44 一、什么是rsync? Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。Rsync使用所谓的“Rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync的优点 ①可以镜像保存整个目录树和文件系统; ②可以很容易做到保持原来文件的权限、时间、软硬链接等; ③无须特殊权限即可安装; ④优化的流程,文件传输效率高; ⑤可以使用rsh、ssh等方式来传输文件,当然也可以通过直接的socket连接; ⑥支持匿名传输 二、服务器端的配置 具体的就不多说了,重要的地方说一下。首先检查rsync是否安装: rpm –q rsync rsync-2.6.8-3.1 说明rsync已安装,如果提示出现 package rsync is not installed 则说明这个软件报没有安装大家可以使用yum进行安装 另外,关闭防火墙和SElinux,因为是内网中传输,所以这些没必要 service iptables stop && chkconfig iptables off setenforce 0 下面分享下我自己定义的配置文件/etc/rsyncd.conf。这个文件是我自己定义的,并不是系统创建的,当然你也可以叫不同的名字;文件我先贴出来,方便线上环境的朋友直接复制,后面再写上详细注释。 uid = nobody gid = nobody user chroot = no max connections = 200 timeout = 600 pid file = /var/run/rsyncd.pid lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log [backup] path=/backup/ ignore errors read only = no list = no hosts allow = 192.168.21.0/255.255.255.0 auth users = test secrets file = /etc/rsyncd.password 注释: uid = nobody 进行备份的用户,nobody 为任何用户 gid = nobody 进行备份的组,nobody为任意组 use chroot = no 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是这个一般不需要,我选择no或false list = no 不允许列清单 max connections = 200 最大连接数 timeout = 600 覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。 pidfile = /var/run/rsyncd.pid pid文件的存放位置 lock file = /var/run/rsync.lock 锁文件的存放位置 log file = /var/log/rsyncd.log 日志文件的存放位置 [backup] 这里是认证模块名,即跟samba语法一样,是对外公布的名字 path = /backup/ 这里是参与同步的目录 ignore errors 可以忽略一些无关的IO错误 read only = no 允许可读可写 list = no 不允许列清单 hosts allow = 192.168.21.0/255.255.255.0 这里跟samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其它一切 auth users = test 认证的用户名 secrets file = /etc/rsyncd.password 密码文件存放地址 注意:对于这个地方的配置文件,虽然解释的很清楚,可是一些朋友始终还会在这里出错,这里我提亮点易错点: 1、[backup] 认证模块名和 path = /backup/ 参与同步的目录 这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。 2、auth users = redhat 认证的用户名 这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。 3、path = /backup/ 参与同步的目录 这个需要稍后自己要在根目录下自己建 cd / mkdir backup chmod –R 777 /backup echo “test:test” > /etc/rsyncd.password (这里我设置的是用户名和密码一致) 为了安全起见,我设置他的权限为600 chmod 600 /etc/rsync.password 客户端配置: echo “test” > /etc/rsyncd.password 这里仅仅只需要密码,不需要用户了,免得要同步时还要手动互动 chmod 600 /etc/rsync.password 配置完了之后,可能会遇到一些权限问题。以下就一些常见的权限问题进行解答:
内容导航
|
|