标题:rsync安装、配置全攻略 出处:沧海一粟 时间:Sat, 29 Dec 2012 12:03:49 +0000 作者:jed 地址:http://www.dzhope.com/post/949/ 内容: 一.介绍 (不想看直接可以跳过) Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。 Rsync 本来是用以取代 rcp 的一个工具,它当前由 rsync.samba.org 维护。 Rsync 使用所谓的“ Rsync 演算法 ”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server ,一个 Rsync server 可同时备份多个 client 的数据;也可以多个 Rsync server 备份一个 client 的数据。   Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。 Rsync server 会打开一个 873 的服务通道 (port) ,等待对方 Rsync 连接。连接时, Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。   Rsync 支持大多数的类 Unix 系统,无论是 Linux 、 Solaris 还是 BSD 上都经过了良好的测试。此外,它在 windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS 。   Rsync 的基本特点如下:   1. 可以镜像保存整个目录树和文件系统;   2. 可以很容易做到保持原来文件的权限、时间、软硬链接等;   3. 无须特殊权限即可安装;   4. 优化的流程,文件传输效率高;   5. 可以使用 rcp 、 ssh 等方式来传输文件,当然也可以通过直接的 socket 连接; 6. 支持匿名传输。 核心算法介绍: 假定在名为α和β的两台计算机之间同步相似的文件 A 与 B ,其中α对文件 A 拥有访问权,β对文件 B 拥有访问权。并且假定主机α与β之间的网络带宽很小。那么 rsync 算法将通过下面的五个步骤来完成:   1. β将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。   2. β对每一个分割好的数据块执行两种校验:一种是 32 位的滚动弱校验,另一种是 128 位的 MD4 强校验。   3. β将这些校验结果发给α。   4. α通过搜索文件 A 的所有大小为 S 的数据块 ( 偏移量可以任选,不一定非要是 S 的倍数 ) ,来寻找与文件 B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。   5. α发给β一串指令来生成文件 A 在β上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。 命令: rsync 的命令格式可以为以下六种:   rsync [OPTION]... SRC DEST   rsync [OPTION]... SRC [USER@]HOST:DEST   rsync [OPTION]... [USER@]HOST:SRC DEST   rsync [OPTION]... [USER@]HOST::SRC DEST   rsync [OPTION]... SRC [USER@]HOST::DEST   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]   对应于以上六种命令格式, rsync 有六种不同的工作模式:   1) 拷贝本地文件。当 SRC 和 DES 路径信息都不包含有单个冒号 ":" 分隔符时就启动这种工作模式。   2) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将本地机器的内容拷贝到远程机器。当 DST 路径地址包含单个冒号 ":" 分隔符时启动该模式。   3) 使用一个远程 shell 程序 ( 如 rsh 、 ssh) 来实现将远程机器的内容拷贝到本地机器。当 SRC 地址路径包含单个冒号 ":" 分隔符时启动该模式。   4) 从远程 rsync 服务器中拷贝文件到本地机。当 SRC 路径信息包含 "::" 分隔符时启动该模式。   5) 从本地机器拷贝文件到远程 rsync 服务器中。当 DST 路径信息包含 "::" 分隔符时启动该模式。   6) 列远程机的文件列表。这类似于 rsync 传输,不过只要在命令中省略掉本地机信息即可。 二.安装 在centos系统下默认已经安装了rsync,只需进行配置,并开启rsync守候进程即可。 #rpm -qa | grep rsync 检查是否已安装。 在CentOS服务器,我们可以执行以下命令安装 yum install rsync 对于debian、ubuntu服务器,则是以下命令 sudo apt-get install rsync 三、配置 1、修改rsync的配置文件 #cat /etc/xinetd.d/rsync 可以看到rysnc服务是关闭的(disable = yes),这里把它开启,把disable的值改为no 2、 创建rsync服务器配置文件/etc/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 pid file = /var/run/rsyncd.pid port = 873 address = 192.168.1.171 #uid = nobody #gid = nobody uid = root gid = root use chroot = yes read only = no #limit access to private LANs hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 hosts deny=* max connections = 5 motd file = /etc/rsyncd/rsyncd.motd #This will give you a separate log file #log file = /var/log/rsync.log #This will log every file transferred - up to 85,000+ per user, per sync #transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 [linuxsirhome] path = /home list=yes ignore errors auth users = grtongbu secrets file = /etc/rsyncd/rsync.passwd comment = linuxsir home exclude = beinan/ samba/ 参考释义 #全局选项 strict modes =yes #是否检查口令文件的权限 port = 873 #默认端口873 log file = /var/log/rsyncd.log #日志记录文件 原文中有的,我没有使用,日志文件 pid file = /usr/local/rsync/rsyncd.pid #运行进程的ID写到哪里 原文中有的,我没有使用,日志文件 #模块选项 [test] # 这里是认证的模块名,在client端需要指定 max connections = 5 #客户端最大连接数,默认0(没限制) uid = root #指定该模块传输文件时守护进程应该具有的uid gid = root #指定该模块传输文件时守护进程应该具有的gid path = /home/admin/testrsync # 需要做备份的目录 ignore errors # 可以忽略一些无关的IO错误 read only = no #no客户端可上传文件,yes只读 write only = no #no客户端可下载文件,yes不能下载 hosts allow = * #充许任何主机连接 hosts deny = 10.5.3.77 #禁止指定的主机连接 auth users = root # 认证的用户名,如果没有这行,则表明是匿名 secrets file = /home/admin/security/rsync.pass # 指定认证口令文件位置 http://blog.sina.com.cn/s/blog_5eda2dda01015fcs.html http://hi.baidu.com/cxh1984/item/03bf5816a32febf8dceecabc http://www.centos.bz/2011/06/rsync-server-setup/ http://blog.johntechinfo.com/technology/87 Generated by Bo-blog 2.1.1 Release