在Centos5.5下配置rsync服务器

 

2.7.1 rsync的概念

《构建高可用Linux服务器》第2章FreeBSD8.1在企业中的部署应用,本章将会详细讲解FreeBSD8.1的安装、最小化安装后的优化、jail虚拟机的部署,以及FreeBSD8.1下的应用部署。希望大家通过本章的学习,能够很好地掌握FreeBSD8.1的基础知识,并且可以快速地搭建自己的开发环境和测试环境。本节为rsync的概念。 

2.7 在FreeBSD8.1与Centos5.5下搭建rsync服务器

2.7.1 rsync的概念

rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地主机和远程主机之间的文件达到同步,这个算法并不是每次都整份传送,它只传送两个文件的不同部分,因此速度相当快。

rsync的优点如下:

可以镜像保存整个目录树和文件系统。

可以很容易地做到保持原来文件的权限、时间、软硬链接等。

无须特殊权限即可安装。

拥有优化的流程,文件传输效率高。

可以使用rsh、SSH等方式来传输文件,当然也可以直接通过socket连接。

支持匿名传输。

另外,与scp相比,传输速度不是一个数量级的。我们在局域网时经常用rsync和scp传输大量MySQL数据库文件,发现rsync至少比scp快20倍以上。所以大家如果需要在Linux/Unix服务器之间互传海量数据,rsync是最好的选择。

 

2.7.2 在Centos5.5下配置rsync服务器(1)

具体安装步骤如下:

首先准备一台Centos5.5,系统为64位Centos、IP为192.168.21.41,将其作为rsync服务器。另外准备一台64-bit FreeBSD8.1、IP为192.168.21.44的机器作为其客户端。

具体的安装步骤不多说,只介绍重点内容。首先检查rsync是否安装,命令如下:

      
      
      
      
  1. rpm –q rsync  
  2. rsync-2.6.8-3.1 

上面的结果说明rsync已安装,如果出现package rsync is not installed提示,则说明这个软件包没有安装,大家可以使用如下命令进行安装:

yum –y install rsync另外,关闭防火墙和SELinux,因为是在内网中传输,所以没必要打开。关闭它们,免得引起不必要的麻烦,命令如下:

      
      
      
      
  1. service iptables stop  
  2. chkconfig iptables off  
  3. setenforce 0 


下面分享一下我自己定义的配置文件/etc/rsyncd.conf(说明:

此文件并不是系统创建的,你也可以给它取不同的名字)。先给出具体代码,后面再进行详细注释,代码如下:

      
      
      
      
  1. uid=nobody 
  2. gid=nobody 
  3. user chroot=no 
  4. max connections=200 
  5. timeout=600 
  6. pid file=/var/run/rsyncd.pid  
  7. lock file=/var/run/rsyncd.lock  
  8. log file=/var/log/rsyncd.log  
  9. [backup]  
  10. path=/backup/  
  11. ignore errors  
  12. read only=no 
  13. list=no 
  14. hosts allow=192.168.21.0/255.255.255.0  
  15. auth users=test 
  16. secrets file=/etc/rsyncd.password 

下面说明一下/etc/rsyncd.conf的语法。
      
      
      
      
  1. uid=nobody 

上面指的是进行备份的用户,nobody为任何用户。
      
      
      
      
  1. gid=nobody 

表示进行备份的组,nobody为任意组。
      
      
      
      
  1. use chroot=no 

如果use chroot指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做可实现额外的安全防护功能,但缺点是需要给用户root权限,并且不能备份通过外部的符号连接所指向的目录文件。在默认情况下,chroot值为true,但是这一般不需要,可选择no或false。list=no表示不允许列清单。
      
      
      
      
  1. max connections=200 

表示最大连接数。
      
      
      
      
  1. timeout=600 

表示覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。
      
      
      
      
  1. pidfile=/var/run/rsyncd.pid 

 

2.7.2 在Centos5.5下配置rsync服务器(2)

指的是pid文件的存放位置。

      
      
      
      
  1. lock file=/var/run/rsync.lock 

指的是锁文件的存放位置。
      
      
      
      
  1. log file=/var/log/rsyncd.log 

指的是日志文件的存放位置。[backup]这是认证模块名,即跟Samba语法一样,是对外公布的名字。
      
      
      
      
  1. path=/backup/ 

这是参与同步的目录。
      
      
      
      
  1. ignore errors 

表示可以忽略一些无关的I/O错误。
      
      
      
      
  1. read only=no 

表示允许读和写。
      
      
      
      
  1. list=no 

表示不允许列清单。
      
      
      
      
  1. hosts allow=192.168.21.0/255.255.255.0 

这里跟Samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其他一切网段连接。

      
      
      
      
  1. auth users=test 

指的是认证的用户名。
      
      
      
      
  1. secrets file=/etc/rsyncd.password 

指的是密码文件的存放地址。

启动服务端的rsync,可通过xinetd来控制,这里要对rsync进行修改,我们先编辑rsync相关的文件etc/xinetd.d/rsync,如下所示:

      
      
      
      
  1. service rsync  
  2. {  
  3.  disable=yes 
  4.  socket_type=stream  
  5.  wait= no  
  6.  user= root  
  7.  server = /usr/bin/rsync  
  8.  server_args=--daemon  
  9.  log_on_failure += USERID  

将disable=yes 改为disable=no,然后重启xineted即可,命令如下:

      
      
      
      
  1. /etc/ini.d/xinetd restart 

配置中应该注意的问题如下。

[backup]:认证模块名,这个认证模块名是服务器对外的名字,机器同步时只会认这个名字。这里的path不要随便设置,要知道这里是认证模块,以后从客户机备份的数据会存储在这里。

auth users=redhat:认证的用户名。这个名字是服务器端实实在在存在的用户,如果服务器端少了它,估计你的数据同步就无法实现了,请不要忽略它。

path=/backup/:参与同步的目录的权限。如果此目录权限不够,rsync同步是成功不了的。

这需要稍后在根目录下自己建,并分配相应的写权限,如下所示:

      
      
      
      
  1. mkdir /backup  
  2. chmod –R 777 /backup  
  3. echo "test:test" >/etc/rsyncd.password 

说明 这里我设置的是用户名和密码一致。

为了安全起见,我设置他的权限为600,如下所示:

      
      
      
      
  1. chmod 600 /etc/rsyncd.password 

客户端配置如下:
      
      
      
      
  1. echo "test" > /etc/rsyncd.password 

这里只需要密码,不需要用户名,免得要同步时还要手动互动。为了安全,一样配置600的权限,如下所示:
      
      
      
      
  1. chmod 600 /etc/rsyncd.password 

下面说说在工作中经常遇到的rsync问题。

故障一:服务器端的目录不存在或无权限。故障描述如下:

      
      
      
      
  1. @ERROR: chroot failed  
  2. rsync error: error starting client-server protocol  (code 5) at main.c(1522) [receiver=3.0.3] 
 
 

2.7.2 在Centos5.5下配置rsync服务器(3)

解决方法:创建目录或修改目录权限。

故障二:服务器端该模块(tee)需要验证用户名和密码,但客户端没有提供正确的用户名和密码,认证失败。故障描述如下:

      
      
      
      
  1. @ERROR: auth failed on module tee  
  2. rsync error: error starting client-server protocol (code 5) at main.c(1522) [receiver=3.0.3] 

解决方法:提供正确的用户名和密码。

故障三:服务器上不存在指定的模块。故障描述如下:

      
      
      
      
  1. @ERROR: Unknown module 'tee_nonexists'  
  2. rsync error: error starting client-server protocol  (code 5) at main.c(1522) [receiver=3.0.3] 

解决方法:提供正确的模块名。

我们接着可以进行测试工作了。

在FreeBSD8.1的机器上执行如下命令:

      
      
      
      
  1. rsync –vzrtopg --delete /home/andrewy/etc  [email protected]::backup --password-file=/etc/rsyncd.password 

这时候就可以看到正确的同步效果了。

下面再说说工作中经常用到的rsync参数。

如果不需要交互式的操作,rsync平时也可以像scp那样工作,我由于经常要在服务器之间拷贝MySQL文件,MySQL的库文件有时有几十GB,感觉rsync在速度上还是占绝对优势的。以下是我在工作中经常用到的rsync参数:

-v --verbose:详细模式输出。

-r --recursive:对子目录以递归模式处理。

-p --perms:保持文件权限。

-o --owner:保持文件属主信息。

-g --group:保持文件属组信息。

-t --times:保持文件时间信息。

--delete:删除那些DST中存在而SRC中不存在的文件或目录。

--delete-excluded:同样删除接收端那些被该选项指定排除的文件。

-z --compress:对备份的文件在传输时进行压缩处理。

--exclude=PATTERN:指定排除不需要传输的文件模式。

--include=PATTERN:指定不排除需要传输的文件模式。

--exclude-from=FILE:排除FILE中指定模式的文件。

--include-from=FILE:不排除FILE指定模式匹配的文件。

 

你可能感兴趣的:(mysql,工作,centos,服务器,FreeBSD,Path)