Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1215932
  • 博文数量: 259
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2518
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-13 16:12
个人简介

科技改变世界,技术改变人生。

文章分类

全部博文(259)

分类: 系统运维

2015-11-30 15:09:10

一、系统环境

系统平台:CentOS release 6.3 (Final)
rsync 版本:rsync-3.0.9-2.el6.rfx.x86_64.rpm
rsync 服务器:SERVER (172.16.1.135)
rsync 客户端:CLIENT (172.16.1.136)

二、服务器端安装rsync服务
2.1. 检查rsync 是否已经安装

# rpm -qa|grep rsync
若已经安装,则使用rpm -e 命令卸载。

2.2. 下载RPM包
# wget

2.3. 安装rsync
# rpm -ivh rsync-3.0.9-2.el6.rfx.x86_64.rpm

三、配置 rsync 服务

3.1. 配置 rsync 服务器的步骤

    首先要选择服务器启动方式
        对于负荷较重的 rsync 服务器应该使用独立运行方式
        对于负荷较轻的 rsync 服务器可以使用 xinetd 运行方式
    创建配置文件 rsyncd.conf
    对于非匿名访问的 rsync 服务器还要创建认证口令文件

3.2. 以 xinetd 运行 rsync 服务

CentOS 默认以 xinetd 方式运行 rsync 服务。rsync 的 xinetd 配置文件
在 /etc/xinetd.d/rsync。要配置以 xinetd 运行的 rsync 服务需要执行如下的命令:

# chkconfig rsync on
# service xinetd restart
xinetd: unrecognized service
安装xinetd 包
[root@capaa ~]# yum -y install xinetd

管理员可以修改vi /etc/xinetd.d/rsync 修改rsync 的服务选项。

service rsync
{
        disable = no
    socket_type     = stream
    wait            = no
    user            = root
    server          = /usr/bin/rsync
    server_args     = --daemon
    log_on_failure  += USERID
}


3.3. 配置文件 rsyncd.conf

两种 rsync 服务运行方式都需要配置 rsyncd.conf,其格式类似于 samba 的主配置文件。
配置文件 rsyncd.conf 默认在 /etc 目录下。为了将所有与 rsync 服务相关的文件放在单独的目录下,可以执行如下命令:

# mkdir /etc/rsyncd
# touch /etc/rsyncd/rsyncd.conf
# ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

vi /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
# GLOBAL OPTIONS
uid = root                         
gid = root                                  

use chroot = no                             
read only = yes                            

#limit access to private LANs
hosts allow=172.16.1.0/255.255.255.0
hosts deny=*

max connections = 5        

pid file = /var/run/rsyncd.pid

secrets file = /etc/rsyncd/rsyncd.secrets

#lock file = /var/run/rsync.lock  

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

# MODULE OPTIONS
[wwwhome]                               
path = /home/www/rsyncroot                 
list=yes                                   
ignore errors                              
auth users = www                          
comment = www home                  
#exclude = important/


b. 建立/etc/rsyncd/rsyncd.secrets文件

# vim /etc/rsyncd/rsyncd.secrets

www:w@123          #格式   用户名:口令
              #该用户不要求是系统用户

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

+++++++++++++++++++++++++++
+        www Camp         +
+++++++++++++++++++++++++++

e. 启动rsync
# /etc/init.d/xinetd restart

f. 查看873端口是否起来
# netstat -an | grep 873

如果rsync启动成功的话可以看到873端口已经在监听了。




四、客户端配置

a. 客户端安装rsync
# yum -y install rsync

b. 通过rsync客户端来同步数据
场景一:
# rsync -avzP www@172.16.1.135::wwwhome  /tmp/www/
Password: 这里要输入www的密码,是服务器端提供的,在前面的例子中,我们用的是 asdf,输入的密码并不显示出来;输好后就回车;
注: 这个命令的意思就是说,用www 用户登录到服务器上,把wwwhome数据,同步到本地目录/tmp/www/上。当然本地的目录是可以你自己定义的,比如 dave也是可以的;当你在客户端上,当前操作的目录下没有wwwhome这个目录时,系统会自动为你创建一个;当存在wwwhome这个目录中,你要注意它的写权限。

说明:
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;


场景二:
# rsync -avzP  --delete www@172.16.1.135::wwwhome  /tmp/www/

这回我们引入一个 –delete 选项,表示客户端上的数据要与服务器端完全一致,如果 /tmp/www/目录中有服务器上不存在的文件,则删除。最终目的是让/tmp/www/目录上的数据完全与服务器上保持一致;用的时候要小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;


场景三:
# rsync -avzP  --delete  --password-file=/tmp/rsync.password  www@172.16.1.135::wwwhome  /tmp/www/

这次我们加了一个选项 –password-file=rsync.password ,这时当我们以www用户登录rsync服务器同步数据时,密码将读取 /tmp/rsync.password 这个文件。这个文件内容只是www用户的密码。我们要如下做;

# touch /tmp/rsync.password
# chmod 600 /tmp/rsync.password
# echo "w@123"> /tmp/rsync.password
# rsync -avzP  --delete  --password-file=/tmp/rsync.password  www@172.16.1.135::wwwhome  /tmp/www/
注: 这样就不需要密码了;其实这是比较重要的,因为服务器通过crond 计划任务还是有必要的;


5.3. rsync 客户端自动与服务器同步数据

编辑crontab
# crontab -e
加入如下代码:
*/10 * * * * rsync -avzP --delete --password-file=/tmp/rsync.password  www@172.16.1.135::wwwhome /home/www/rsyncroot/
表示每10分执行后面的命令。


其他客户端上传文件到rsync服务器:

rsync -az -e "ssh -i id_rsa -o StrictHostKeyChecking=no -o GSSAPIAuthentication=no" test.html www@172.16.1.135:/home/www/rsyncroot

rsync -av --timeout=30 data www@192.168.1.135:/home/www/rsyncroot


补充:免密码传输
在hdfs用户下
cat ~/.ssh/id_rsa.pub
scp ~/.ssh/id_rsa.pub www@172.16.1.135:~/

在172.16.1.135上www用户下
$cat id_rsa.pub >> ~/.ssh/authorized_keys
$chmod 600 ~/.ssh/authorized_keys

在客户端服务器上尝试ssh登录
ssh www@172.16.8.146
 
报错:
我在服务器上查看日志,看到有这么一行:
rsync: unable to open configuration file "/etc/rsyncd.conf": No such file or directory
解决方法:
ln -s /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf

参考:
http://www.cnblogs.com/mchina/p/2829944.html

http://wanwentao.blog.51cto.com/2406488/579008/
http://hx100.blog.51cto.com/44326/331312/
http://blog.csdn.net/vboy1010/article/details/7652728
阅读(1905) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~