在CentOS上安装和使用rsync

原文地址:http://blog.51cto.com/jzfjeff/969744


rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下:
可以镜像保存整个目录树和文件系统。   
可以很容易做到保持原来文件的权限、时间、软硬链接等等。   
无须特殊权限即可安装。   
快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync在传输数据过程中可以实行压缩及解压缩操作,以使用更少的带宽。   
安全:可以使用rcp、ssh等方式来传输文件,也可以用直接的socket连接。   
支持匿名传输,以方便进行网站镜象。
下面我来简单介绍一下rsync在CentOS上的安装和使用。
首先安装rsync:
# yum install rsync -y
会有类似的信息出现:
---> Package rsync.x86_64 0:3.0.6-5.el6_0.1 will be updated
---> Package rsync.x86_64 0:3.0.6-9.el6 will be an update
安装完以后可以查看一下rsync安装的相关目录文件:
# rpm -ql rsync
/etc/xinetd.d/rsync
/usr/bin/rsync
/usr/share/doc/rsync-3.0.6
/usr/share/man/man1/rsync.1.gz
/usr/share/man/man5/rsyncd.conf.5.gz
为了便于启停rsync,我们可以安装xinetd:
# yum install xinetd
---> Package xinetd.x86_64 2:2.3.14-35.el6_3 will be installed
安装完后要修改以下配置文件:
# vim /etc/xinetd.d/rsync
service rsync
{
        disable = no
        flags           = IPv6
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon --config=/etc/rsyncd/rsyncd.conf
        log_on_failure  += USERID
}
默认disable = yes,这里需要把yes改成no,保存退出。
然后是配置rsync的主配置文件及密码文件:
# mkdir /etc/rsyncd
# vim /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid
port = 873
uid = root
gid = root
use chroot = yes
read only = yes
max connections = 5
log file = /var/log/rsync.log  
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300   
[test]   
path = /opt/mongo   
list=yes   
ignore errors   
auth users = root, jeff   
secrets file = /etc/rsyncd/rsyncd.pas
comment = myself test home   
exclude = tmp/

以上主配置文件有个地方我觉得要特别注意,就是在每个模块(如以上的[test])后指定path路径时,路径后绝对不能留空格,否则全一直报下方的错误一。下面是密码文件:

# vim /etc/rsyncd/rsyncd.pas
root:1q2w3e4rnhy67ujm
jeff:1q2w3ezxcv
# chmod 600 rsyncd.pas

将rsync添加为系统服务并在系统3和5级别下启动:
# chkconfig --add rsync
# chkconfig --level 35 rsync on
# /etc/init.d/xinetd restart
Stopping xinetd:                                           [  OK  ]
Starting xinetd:                                           [  OK  ]
启动好后可以用以下命令查看服务是否开启
# netstat -tpln
tcp        0      0 :::873     :::*          LISTEN    17752/xinetd 
由上可以看出873端口已经开启了,说明rsync服务已经启动。到此,服务器端的配置已完成。

客户端很简单,把rsync装上就行了,还是用以上的命令:
# yum install rsync -y
完了你可以创建一个密码文件:
# vim /etc/rsyncd/rsyncd.pas
1q2w3e4rnhy67ujm
1q2w3ezxcv
# chmod 600 rsyncd.pas
如果你不嫌麻烦,想每次同步的时候都自己敲密码的话也可以省略这个文件。
下面是该怎么用了,rsync的参数选项比较多,下面就稍微例举一下常见的用法:
rsync -参数 用户名@同步服务器的IP::rsyncd.conf中那个方括号里的内容 本地存放路径 如:   
rsync -avzP [email protected]::test /backup   
说明:   
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;   
-z 传输时压缩;   
-P 传输进度;   
-v 传输时的进度等信息,和-P有点关系.
更多的选项大家可以去查看帮助。

在使用rsync的时候会遇到一些问题,下面列举了一些常见的,希望到大家有所帮助:
错误一:
@ERROR: chroot failed
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
解决:
服务器端的目录不存在或无权限,创建目录并修正权限可解决问题。

错误二:
@ERROR: auth failed on module XXX
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
解决:
服务器端该模块(XXX)需要验证用户名密码,但客户端没有提供正确的用户名密码,认证失败。
提供正确的用户名密码解决此问题。可能是密码文件权限不对,必须确保rsyncd.pas的访问权限为600

错误三:
@ERROR: Unknown module ‘XXX’
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
解决:
服务器不存在指定模块。提供正确的模块名或在服务器端修改成你要的模块以解决问题。

错误四:
@ERROR: failed to open lock file
rsync error: error starting client-server protocol (code 5) at main.c(1495) [receiver=3.0.6]
解决:配置文件 rsync.conf 中添加 lock file = rsyncd.lock 即可解决。

错误五:
rsync: failed to connect to XXX: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(104) [receiver=3.0.6]
解决:对方没开机、防火墙阻挡、通过的网络上有防火墙阻挡,都有可能。关闭防火墙,其实就是把tcp udp 的873端口打开。

你可能感兴趣的:(linux,hadoop)