rsync简介
rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,且采用优化的同步算法,在传输前执行压缩,因此非常适用于异地备份,镜像服务器等。
?
| 主机名称 | IP | 主要软件 | 
|---|---|---|
| 服务器A | 192.168.200.129 | rsync、inotify | 
| 服务器A | 192.168.200.130 | rsync、inotify | 
1:建立/etc/rsyncd.conf 配置文件
# vim /etc/rsyncd.conf
    uid = nobody
    gid = nobody
    use chroot = yes                                  //禁锢在源目录
    address = 192.168.200.129                  //监听地址
    port 873                                                   //监听端口
    log file = /var/log/rsyncd.log                    //日志文件路径
    pid file = /var/run/rsyncd.pid                    //进程ID文件路径
    hosts allow = 192.168.200.0/24            //允许访问的客户机地址
    [wwwroot]                                              //共享模块名称    
    path = /var/www/html                           //源目录的实际地址
    comment = www.kgc.cn                 
    read only = no                                 //是否为只读    
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2      //同步时 不再压缩的文件类型
    auth users = backuper                           //授权账户
    secrets file = /etc/rsyncd_users.db       //存放账户信息的数据文件
2:为备份账户创建数据文件、创建源目录
# vim /etc/rsyncd_users.db
    backuper:abc123
# chmod 600 /etc/rsyncd_users.db
# mkdir -p /var/www/html
# chmod 777 /var/www/html/
3:启动rsync服务,运行参数为 --daemon
# rsync --daemon           //启动rsync服务
# netstat -natp | grep rsync     
- -a 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD。
 - -z 对备份的文件在传输时进行压缩处理。
 - -H 保留硬链结。
 - -D 保持设备文件信息。
 - -A 保留ACL属性信息
 - --delete 删除那些目标位置有而原始位置没有的文件。
 - --checksum 打开校验开关,强制对文件传输进行校验。
 
将对方源目录的文件同步到我/opt目录下
格式一:
# rsync -avz backuper@192.168.200.129::wwwroot /opt/  
password:abc123
格式二:
# rsync -avz rsync://backuper@192.168.200.129/wwwroot /opt/
password:abc123
格式三:免密码交互
# vim /etc/server.pass
abc123
# chmod 600 /etc/server.pass
# rsync -az --delete --password-file=/etc/server.pass backuper@192.168.200.129::wwwroot /opt
1:调整inotify内核参数
# vim /etc/sysctl.conf
    fs.inotify.max_queued_events = 16384    监控事件队列(16384)
    fs.inotify.max_user_instances = 1024    最多监控实例数(1024)
    fs.inotify.max_user_watches = 1048576   每个实例最多监控文件数(1048576)

2:安装
# yum install gcc gcc-c++ make -y
# tar zxvf inotify-tools-3.14.tar.gz -C /opt/
# cd /opt/inotify-tools-3.14
# ./configure
# make && make install
去 /var/www/html/目录 创建 删除 移动 都会监控
# inotifywait -mrq -e modify,create,move,delete /var/www/html/
详解:
-m 表示持续监控
-r 表示递归整个目录
-q 简化输出信息
inotifywait 可监控: modify 修改、 create 创建、move 移动、delete 删除
脚本中指定的IP 是目标的IP(不是本地IP)
    # cd /opt 
    # vim /opt/inotify.sh
        #!/bin/bash
        INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
        RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.200.130::wwwroot/"
        $INOTIFY_CMD | while read DIRECTORY EVENT FILE
        do
                if [ $(pgrep rsync | wc -l) -ge 0 ] ; then
                        $RSYNC_CMD
                fi
        done
    # chmod +x /opt/inotify.sh
    # .//inotify.sh
    # echo ‘/opt/inotify.sh‘ >> /etc/rc.local     //加入开机自启动

?




原文:http://blog.51cto.com/13630803/2150288