分类: LINUX
2010-08-19 22:51:17
1. 测试环境:
OS : RedHat Enterprise Linux 5.4
Rsync: version 3.0.7 protocol version 30
2. 安装步骤
有两种方式,RPM或源码安装,我这里把系统自带的RPM卸掉后通过源码安装,
首先去 下载源码
下载得到 rsync-3.0.7.tar.gz
下面是安装步骤:
tar -zxvf rsync-3.0.7.tar.gz
cd rsync-3.0.7
注:这里你应该习惯性的看README和INSTALL文件(如果有的话),一般的安装步骤
都可以在这两个文件中找到, 下面开始编译三步曲:
./configure --prefix=/usr/local/rsync/
make
make install
为了使用方便,创建一个符号链接或把这个安装路径加入环境变量,我这里所使用的是
符号链接:
ln -s /usr/local/rsync/bin/rsync /usr/local/bin/rsync
到这里已经安装完成。接下来启动服务并验证
3. 启动 rsync
启动方式可以由xinetd或独立方式启动,这里没有依赖xinetd而是采用单独方式启动,在
启动前需要创建一个配置文件,不过这里有一点不明白,安装后为什么需要自己创建
此配置文件?连示例都没(有可能是我没找到,哈哈)。 下面是具体的文件内容:
uid=root # 传输模块时守护进程应该具有的UID
gid=root # 传输模块时守护进程应该具有的GID
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/run/rsyncd.log # 日志文件
use chroot = no
max connections = 10 # 最大连接数
[disk1] # 模块名,此名字必须唯一
path=/disk1
comment=backup disk1
ignore errors
read only=yes # 只读
list=yes # 允许显示文件列表
auth users=root # 授权用户
hosts allow = localhost,192.168.1.104,192.168.1.105 # 允许访问的IP,其他IP全拒绝
secrets file=/etc/root.pass # 授权用户的密码文件,格式为:user:password
此文件由全局参数和模块参数组成,[disk1]之前全是全局参数,之后(包括disk1)就是
模块参数了。
由于是独立方式启动的,所以需要把rsync加入 /etc/services:
echo "rsync 873/tcp" >> /etc/services
echo "rsync 873/udp" >> /etc/services
开始启动:
rsync --daemon --config=/etc/rsyncd.conf
使用netstat验证是否成功:
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 10129/rsync
tcp 0 0 :::873 :::* LISTEN 10129/rsync
可以看出服务已经启动,然后就要验证是否能够从服务器同步文件:
[root@taurus software]# rsync -vzrpgu --progress --delete root@192.168.1.104::disk1 /opt
Password: # 这里需要你输入密码,密码就是/etc/root.password所对应的密码
receiving incremental file list
aquota.group
7168 100% 6.84MB/s 0:00:00 (xfer#1, to-check=4/6)
aquota.user
7168 100% 1.71MB/s 0:00:00 (xfer#2, to-check=3/6)
lost+found/
test/
test1/
sent 105 bytes received 513 bytes 247.20 bytes/sec
total size is 14336 speedup is 23.20
各个参数的意思就不说了,通过 rsync --help或 google 都能查到。
从结果可以看到共同步了2个文件和3个目录. 不过平常一般都是把它放在 crontab
中去执行的,幸好 rsync有 password-file 选项,这样就免了人工输入密码,具体
用法是在客户端创建一个rsync_passwd(名字随意)文件,内容就是一个密码:
touch rsync_passwd
echo "123456" > rsync_passwd
rsync -vzrpgu --progress --delete --password-file=rsync.pass root@192.168.1.104::disk1 /opt
[root@taurus ~]# rsync -vzrpgu --progress --delete --password-file=rsync.pass root@192.168.1.104::disk1 /opt
receiving incremental file list
aquota.group
7168 100% 2.28MB/s 0:00:00 (xfer#1, to-check=4/6)
aquota.user
7168 100% 777.78kB/s 0:00:00 (xfer#2, to-check=3/6)
lost+found/
test/
test1/
sent 105 bytes received 513 bytes 1236.00 bytes/sec
total size is 14336 speedup is 23.20
这样就可以不用我们输入密码而自动同步文件,之后把这加入crontab 就一切搞定。
上面的客户端密码文件一定要注意格式,里面不能多余空格或空行,不然就会出现如下问题:
@ERROR: auth failed on module disk1
rsync error: error starting client-server protocol (code 5) at main.c(1506) [Receiver=3.0.7]
解决这个问题唯一办法就是注意上面说到这两点,记住password-file的内容只有密码,这点和
服务端有所不同,服务端是 user:password 格式。就因为这个问题害偶google 了近一小时。