CentOS 6.3下rsync服务器的安装与配置
转载自:点击打开链接 一、rsync 简介 Rsync(remote synchronize)是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件,也可以使用 Rsync 同步本地硬盘中的不同目录。 Rsync 是用于取代rcp的一个工具,Rsync使用所谓的 “Rsync 算法” 来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。您可以参考How Rsync Works A Practical Overview进一步了解 rsync 的运作机制。 Rsync支持大多数的类Unix系统,无论是Linux、Solaris还是BSD上都经过了良好的测试。此外,它在windows平台下也有相应的版本,比较知名的有cwRsync和Sync2NAS。 Rsync 的初始作者是 Andrew Tridgell 和 Paul Mackerras,它当前由http://rsync.samba.org维护。 Rsync的基本特点如下: 1. 可以镜像保存整个目录树和文件系统; 2. 可以很容易做到保持原来文件的权限、时间、软硬链接等; 3. 无须特殊权限即可安装; 4. 优化的流程,文件传输效率高; 5. 可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接; 6. 支持匿名传输,以方便进行网站镜像。 在使用 rsync 进行远程同步时,可以使用两种方式:远程 Shell 方式(建议使用 ssh,用户验证由 ssh 负责)和 C/S 方式(即客户连接远程 rsync 服务器,用户验证由 rsync 服务器负责)。 无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件)。 rsync 在首次复制时没有速度优势,速度不如 tar,因此当数据量很大时您可以考虑先使用 tar 进行首次复制,然后再使用 rsync 进行数据同步。 二、系统环境 系统平台:CentOS release 6.3 (Final) rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm
rsync 服务器:TS-DEV (172.16.1.135)
rsync 客户端:TS-CLIENT (172.16.1.136) 三、服务器端安装rsync服务 3.1. 检查rsync 是否已经安装 # rpm -qa|grep rsync 若已经安装,则使用rpm -e 命令卸载。 3.2. 下载RPM包 # wget http://pkgs.repoforge.org/rsync/rsync-3.0.9-2.el6.rfx.x86_64.rpm 3.3. 安装rsync # rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm 四、配置 rsync 服务 4.1. 配置 rsync 服务器的步骤
4.2. 以 xinetd 运行 rsync 服务 CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件 # chkconfig rsync on # service xinetd restart 管理员可以修改 /etc/xinetd.d/rsync 配置文件以适合您的需要。例如,您可以修改配置行 server_args = --daemon 在后面添加 rsync 的服务选项。 4.3. 独立运行 rsync 服务 最简单的独立运行 rsync 服务的方法是执行如下的命令: # /usr/bin/rsync --daemon 您可以将上面的命令写入 /etc/rc.local 文件以便在每次启动服务器时运行 rsync 服务。当然,您也可以写一个脚本在开机时自动启动 rysnc 服务。 4.4.配置文件 rsyncd.conf 两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件。 # mkdir /etc/rsyncd # touch /etc/rsyncd/rsyncd.conf # ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf 配置文件 rsyncd.conf 由全局配置和若干模块配置组成。配置文件的语法为:
全局参数 在文件中 [module] 之外的所有配置行都是全局参数。当然也可以在全局参数部分定义模块参数,这时该参数的值就是所有模块的默认值。 模块参数 模块参数主要用于定义 rsync 服务器哪个目录要被同步。模块声明的格式必须为 [module] 形式,这个名字就是在 rsync 客户端看到的名字,类似于 Samba 服务器提供的共享名。而服务器真正同步的数据是通过 path 来指定的。可以根据自己的需要,来指定多个模块,模块中可以定义以下参数: a. 基本模块参数 b. 模块控制参数 c. 模块文件筛选参数
d. 模块用户认证参数
username:passwd
e. 模块访问控制参数 客户主机列表定义可以是以下形式:
f. 模块日志参数 设置了”log file”参数时,在日志每行的开始会添加”%t [%p]“。
可以使用的日志格式定义符如下所示:
五、rsync 服务器应用案例 5.1.在服务器端TS-DEV上配置rsync 服务 a. 编辑配置文件 # vi /etc/rsyncd/rsyncd.conf # Minimal configuration file for rsync daemon # See rsync(1) and rsyncd.conf(5) man pages for help # This line is required by the /etc/init.d/rsyncd script max connections = 5 #lock file = /var/run/rsync.lock b. 建立/etc/rsyncd/rsyncd.secrets文件 # vim /etc/rsyncd/rsyncd.secrets david:asdf #格式 用户名:口令 c. 为了密码的安全性,我们把权限设为600 # chown root:root /etc/rsyncd/rsyncd.secrets # chmod 600 /etc/rsyncd/rsyncd.secrets d. 建立连接到服务器的客户端看到的欢迎信息文件/etc/rsyncd/rsyncd.motd # vim /etc/rsyncd/rsyncd.motd +++++++++++++++++++++++++++ e. 启动rsync # /etc/init.d/xinetd restart f. 查看873端口是否起来 # netstat -an | grep 873 如果rsync启动成功的话可以看到873端口已经在监听了。 g. 服务器端文件详细 5.2. 客户端配置 a. 客户端安装rsync # yum -y install rsync b. 通过rsync客户端来同步数据 场景一: # rsync -avzP david@172.16.1.135::davidhome /tmp/david/ Password: 这里要输入david的密码,是服务器端提供的,在前面的例子中,我们用的是 asdf,输入的密码并不显示出来;输好后就回车; 说明: 场景二: 这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 /tmp/david/目录中有服务器上不存在的文件,则删除。最终目的是让/tmp/david/目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除; 场景三: 这次我们加了一个选项 –password-file=rsync.password ,这时当我们以david用户登录rsync服务器同步数据时,密码将读取 /tmp/rsync.password 这个文件。这个文件内容只是david用户的密码。我们要如下做; # touch /tmp/rsync.password 注:这样就不需要密码了;其实这是比较重要的,因为服务器通过crond 计划任务还是有必要的; 5.3. rsync 客户端自动与服务器同步数据 编辑crontab 10 0 * * * rsync -avzP --delete --password-file=/tmp/rsync.password david@172.16.1.135::davidhome /tmp/david/ 表示每天0点10分执行后面的命令。 六、错误分析
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]
rsync: opendir "." (in xxxxxxx) failed: Permission denied (13) 解决办法: 1、将 selinux 对 rsync 的限制全部去掉: 至此,rsync服务器配置完毕。 七、参考 关于rsync 命令的使用,请参考:http://www.howtocn.org/rsync:use_rsync 关于rsync 服务的详细说明,请参考:http://www.howtocn.org/rsync:use_rsync_server (编辑:鄂州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |