Fedora 10 下rsync的配置和使用
rsync是一个提供快速增量文件传输的开源工具。其基于GNU General Public License 发布,目前主要有 Wayne Davison (http://opencoder.net/)维护。
通过他所提供的功能,rsync是一个用来做备份或者镜像的理想工具。
2009年的5月8好,rsync 3.0.6版本发布,本文所做的配置和实验就是基于这个本版,系统环境为Fedora 10。
rsync介绍
rsync是一个Unix系统的的文件传输程序,通过使用“rsync 算法”,提供远程文件同步的快速方法。顾名思义,rsync就是 remote sync。通过过程中,只是发送发生改变的文件,而不是发送全部的内容。
他的特性如下:
1、可以更新整个目录树和文件系统;
2、可以保留文件的软链接、硬链接、权限信息、属主信息、设备和时间信息;
3、无须特殊权限即可安装;
4、内部的流水线提高了多文件传输的速度;
5、可以使用ssh、rsh或者socket链接进行传输;
6、支持匿名传输;
rsync安装
rsync的安装通过了Fedora的yum源,yum install rsync.i386 即可安装。
rsync工作原理
在两台电脑间同步数据时,必须设置其中一台安装"rsync server"(rsync必须以daemon的方式运行,关于daemon,可以参考后面的资料),同时配置 /etc/rsyncd.conf。
有了一台rsync服务器以后,我们就可以向其他多台机器上同步数据,来建立数据的备份或者镜像。由于使用了“同步算法”和文件比较压缩机制,所以rsync的工作效率非常高。
使用rsync离不开ssh(如果对于ssh不熟悉的,可以参考资料中的链接)。
服务器配置
通过配置一个rsync服务器,我们就可以将他的文件同步回来,如果在两台机器上都配置了rsync服务,我们就可以实现双向的同步。rsync作为daemon运行有两种方式,一种是通过inet daemon,一种是采用单独运行的方法。
建议使用单独运行的方法,通过一个cron来定期的同步文件,这种方法可以应对比通过inet方式大得多的访问量。
rsync的配置文件存放在 /etc/rsyncd.conf中,下面是一份样例:
motd file = /etc/rsyncd.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[simple_path_name]
path = /rsync_files_here
comment = My Very Own Rsync Server
uid = nobody
gid = nobody
read only = no
list = yes
auth users = username
secrets file = /etc/rsyncd.scrt
下面来介绍下这个配置文件,第一行是message of the day(motd),文件内的内容会在用户进行连接的时候显示。第二个文件显而易见是日志文件,记录程序执行的日志。
PID文件包含了程序执行的进程ID(Process ID)。Lock文件用来确保rsync daemon能够正常运行。写在这里的选项是全局的,也就是对所有的rsync 目录都生效。
从方括号中path以下的部分,属于局部的配置,只对与在这个目录下的请求生效,方括号中的路径不需要是完整的路径,他只相当于一个别名。真正的目录写在path变量中,如果你怕时间长了记不住这个目录存放的内容,可以在comment中做一下备注。
配置完成这两项以后,rsync就可以使用了,但是这时你的服务是不安全的,他是wide open to the world的,所以你还需要在安全方面进行一些加强。
rysnc提供了用户验证和地址验证两种方式
auth users 存放允许访问的用户名, secrets file 存放访问的密码,文件内容很简单,形式为 username:password。
如果希望通过地址来限制访问,则需要添加 hosts allow 和 hosts deny。
使用Rsync
使用rsync的方式很简单,对于没有用户权限限制的访问,如下:
rsync -rv 10.210.141.125::path_name /home/cipher/rsyncdata/
就可以同步服务器上的文件了。
如果需要设置rsync的密码文件,需要对该文件的权限特别注意,文件的属主必须为root:root,而且文件权限为600,即不能被其他人读取。
rsync的选项很多,灵活运用这些选项我们就能够完成各种各样的同步需求,最常用的有 -r 递归、-l 同步链接、 -t 同步文件时间(这个选项需要确保两台服务器的时间同步)、-p 同步权限
--exclude 同步中不包括某些文件。
如果你想了解更多的配置选项,可以通过 man rsyncd.conf 来了解更多的内容。
诸如rsync的man page
参考资料
1、rsync home http://www.samba.org/rsync/
2、about daemon http://www.adamjiang.com/blog/archives/599
3、about ssh http://kimmo.suominen.com/docs/ssh/
4、rsync man page http://www.samba.org/ftp/rsync/rsync.html
5、ma rsyncd.conf http://www.samba.org/ftp/rsync/rsyncd.conf.html