Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2274596
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2007-10-19 19:08:51

使用rsync配置远程文件同步
 
2007-10-19 kenthy#qingdaonews.com
 
################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:
    rsync-2.6.8-3.1
    rsync-2.6.9.tar.gz   
    openssh-server-4.3p2-16.el5
    openssh-clients-4.3p2-16.el5
    openssh-4.3p2-16.el5
    openssh-askpass-4.3p2-16.el5
 
目标功能:
    Server: 1.2.3.4/24
    Client:  1.2.3.123/24
    分别配置rsync服务端和客户端,实现对Server上的/var/www/html网站目录进行远程镜像和定期同步更新。
 
[官方参考文档:]
-----------------------------------------------------------
http://rsync.samba.org/documentation.html


################################################################
一、安装rsync软件包
   
    1、服务器和客户端使用同一个rsync软件包,可以从官方下载新的rsync源码包编译安装:
      # wget
      # tar zxvf rsync-2.6.9.tar.gz -C /usr/src/
      # cd /usr/src/rsync-2.6.9
      # ./configure
      # make && make install
    或者
    2、本文中以RHEL5默认安装的rsync为例。(ssh等相关软件包亦可使用默认)
 
 
二、配置rsync服务器端
    rsyncd.conf详细配置项可以参考man rsyncd.conf。
 
    1、创建/etc/rsyncd.conf配置文件,内容如下:
uid = nobody        //指定文件传输过程中的用户身份
gid = nobody        //指定文件传输过程中的组身份
use chroot = no        //是否启动目录chroot限制
max connections = 5        //指定允许的最大并发客户端连接数
port = 873        //指定服务监听的端口,若使用默认的873端口,此行可省略
address = 1.2.3.4        //指定服务监听的ip地址,默认为0.0.0.0。使用xinetd方式启动服务时此行被忽略
log file = /var/log/rsyncd.log        //指定使用独立的日志文件的位置
pid file = /var/run/rsyncd.pid        //保存pid到指定文件,以便于使用脚本终止进程
hosts allow = 1.2.3.123/32        //此行可用于设置允许的客户端范围
[www]                         //设置一个名为www的备份目录区段(模块),名称可自定义
  path = /var/www/html        //指定需要被用于远程备份的目录
  comment = Whole Web Area        //注释信息
  read only = yes        //该目录设置为只读,即至允许客户端下行同步,不允许上传。若需要进行上行还原数据,可以改为no
  dont compress = *.gz *.tgz *.zip *.z *.bz2 *.tbz        //对指定格式的文件不再进行压缩
  auth users = bakuser1        //指定允许远程同步此目录的用户名。若使用匿名方式,此行和下行可以去掉
  secrets file = /etc/rsyncd.users        //指定用户名:密码数据库文件位置
 
    2、创建rsyncd用户名:密码数据库文件/etc/rsyncd.users:
      # echo 'bakuser1:1234' >> /etc/rsyncd.users
      # chmod 600 /etc/rsyncd.users
 
    3、设置启动方式,若文件同步动作不是很频繁,建议使用xinetd方式
      1> 编辑/etc/xinetd.d/rsync文件,确认以下内容:
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
      2> 启动服务并做基本测试
        # service xinetd restart
        # service sshd start        //配置并启动sshd服务(过程略)
        # telnet 1.2.3.4 873        //rsyncd默认在873端口监听服务,可在客户端使用telnet连接测试
        # chkconfig --level xinetd on
        # chkconfig --level sshd on
 

三、rsync客户端的基本使用
    rsync命令详细使用方法可以参考man rsync,若需要上行还原数据,将命令中备份源、目标交换即可。
 
    1、查看服务端文件及列表
注:若地址中使用两个分号“::”,将直接使用rsyncd的用户认证方式;
    若地址中使用一个“:”号,将启用ssh模式进行用户验证,需要服务端开启sshd服务;
    如结合sshd的进行用户认证和安全控制,请参考其它文章 http://blog.chinaunix.net/u1/40349/showart.php?id=316550
      # rsync 1.2.3.4::        //查看服务端可用的模块列表(如此处会显示www及注释信息)
      # rsync         //查看服务端www模块中的目录及文件列表(使用服务端rsyncd.users数据库中的用户进行验证)
      # rsync         //查看服务端/var/www/html目录中的内容(使用服务端的系统用户进行验证,如root)
 
    2、对远程目录进行同步备份[同一条备份命令重复执行时将只进行更新增量备份]
      # mkdir -p /backup/web1
      # rsync -avz /backup/web1/        //将服务端www模块下的内容备份到本地/backup/web1目录中,其中-a表示使用归档文件方式(保留原有权限、属性、属主及符号连接等),-z表示使用压缩方式以加快数据传输
      # rsync -avz /backup/        //使用ssh方式将远程的/var/www/html目录备份到本地/backup/目录下
      # rsync -avz --delete /backup/web1/        //--delete选项用于同步目录,删除本地目录中多余的文件
 
 
四、设置定期远程同步任务
 
    1、创建远程同步任务脚本
      # vi /opt/run.rsync
#!/bin/bash
if [ `netstat -anp | grep rsync | wc -l` -gt 0 ] ; then        #//若上一次rsync任务仍未完成,则跳过这次同步
    echo "Prev rsync still running. Skip now. `date`" >> /var/log/messages
    exit 1
else
    RDIR='www/'
    LDIR='/backup/'
    RADD='1.2.3.4'
    BAKUSER='wwwbackup'
    PROG='/usr/bin/rsync'
    OPTIONS='-arHvz --delete --checksum'
    export RSYNC_PASSWORD='1234'        #//设置此环境变量,则执行下条命令时不会提示输入密码
    $PROG $OPTIONS $LDIR
fi
      # chmod 700 /opt/run.rsync        //为刚建立的脚本设置适当的权限
 
    2、建立crontab计划任务,以定期进行同步备份(以每30分钟同步一次为例)
      # chkconfig --level 2345 crond on
      # service crond start
      # crontab -e 添加如下计划任务:
*/30 * * * *  /opt/run.rsync
############################## The End ##################################
阅读(2119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~