ubuntu下rsync服务器端和客户端的配置

rsync同步


mall1和mall2、mall3的同步


mall2、3同步mall1上更新的内容:此时:mall2、3为服务器端,mall1为客户端


mall2、mall3上的安装配置:

===========================================================================================


apt-get install -y rsync(安装rsync)

sudo find / -name rsyncd.conf

/usr/share/doc/rsync/examples/rsyncd.conf(rsync的配置文件的默认安装路径)

sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/ (复制配置文件到/etc/目录下)

===========================================================================================

sudo vi /etc/rsyncd.conf(编辑配置文件为你需要的内容)

[global]##全局选项

uid = ubuntu#指定该模块传输文件时守护进程应该具有的uid

gid = sudo#指定该模块传输文件时守护进程应该具有的gid

use chroot = no##是否让进程离开工作目录

max connections = 10#客户端最大连接数,默认0(没限制)

pid file = /var/run/rsyncd.pid#运行进程的ID写到哪里 

lock file = /var/run/rsync.lock         

log file = /var/log/rsyncd.log#日志记录文件



[mall] # 这里是认证的模块名,在client端需要指定

path=/home/ubuntu/data/web/mall.hiigame.com# 需要做备份的目录

comment = update #备注同步项

ignore errors#可以忽略一些无关的IO错误

read only = no#no客户端可上传文件,yes只读

list = no #用于设定当客户请求可以使用的模块列表,该模块是否被列出,默认为true

host allow = 10.133.200.125#充许连接连接的主机(*为任何主机)

auth users = test # 认证的用户名,如果没有这行,则表明是匿名

uid = ubuntu

gid = sudo

secrets file = /etc/rsync.pass   # 指定认证口令文件位置


[statics]

path=/home/ubuntu/data/web/statics.hiigame.com

comment = update

ignore errors

read only = no

list = no

host allow = 10.133.200.125

auth users = test

uid = ubuntu

gid = sudo

secrets file = /etc/rsync.pass


===========================================================================================

编辑认证口令文件:文件名与配置文件中的路径一样

vi /etc/rsync.pass

test:123456789(认证用户名:认证口令)

     chmod 600 /etc/rsync.pass (修改权限,只有root用户才可执行)

(备注)注意:密码文件的权限,是由rsyncd.conf里的参数

                    strict modes =yes/no 来决定:#是否检查口令文件的权限

rsync的启动:sudo /etc/init.d/rsync (start| restart| stop)

==========================================================================================

ubuntu@VM-200-27-ubuntu:~$ ps -aux | grep rsync  (rsync进程)

Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html

root      1109  0.0  0.0  11004   732 ?        S     2015   0:05 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf


ubuntu@VM-200-27-ubuntu:~$ netstat -an | grep 873 (rsync端口)

tcp        0      0 10.133.200.27:873       0.0.0.0:*               LISTEN 


===========================================================================================

客户端的配置:

    apt-get intall rsync inotify-tools (安装客户端的配置)

    #sudo vim /etc/rsync.pass(与服务器端相互对应,口令文件 ,只需要有口令即可)

    123456789


编写监控脚本并加载到后台执行

vi /home/ubuntu/data/bin/rsync_mall.sh

        

#!/bin/bash

src=/home/ubuntu/data/web/mall.hiigame.com/ 

des=mall#模块标签

host1="10.133.200.27"#监控主机ip

host2="10.133.200.135"

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib,move $src | while read files

  do

    rsync -qzrtopg --exclude-from=/home/ubuntu/data/bin/rsync.list  --delete --progress --password-file=/etc/rsync.pass $src test@$host1::$des

    rsync -qzrtopg --exclude-from=/home/ubuntu/data/bin/rsync.list --delete --progress --password-file=/etc/rsync.pass $src test@$host2::$des


   done

   echo "${files} was rsynced" >>/tmp/rsync.log 2>&1



==========================================================================================



案例二

脚本路径/home/ubuntu/


vi gameserver.sh

#!/bin/bash

src=/home/ubuntu/data/nfs/

des1=game

host1="10.133.193.230"

host2="10.105.16.128"

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e modify,delete,create,attrib,move $src | while read files

  do

    rsync -qzrtopg --delete --progress --password-file=/etc/rsync.pass $src test@$host1::$des1

    rsync -qzrtopg --delete --progress --password-file=/etc/rsync.pass $src test@$host2::$des1

   # rsync -qzrtopg --delete --progress --exclude-from=/home/wolfplus/bin/rsync.list --password-file=/etc/rsync.pass $src test@$host6::$des6

   done

   echo "${files} was rsynced" >>/tmp/rsync.log 2>&1



放在后台执行

./gameserver.sh &




====================================================================================


inotify之inotifywait命令常用参数详解



[root@inotify-master inotify-tools-3.14]# cd /usr/local/inotify-3.14/

[root@inotify-master inotify-3.14]# ./bin/inotifywait --help

-r|--recursive   Watch directories recursively. #递归查询目录

-q|--quiet      Print less (only print events). #打印监控事件的信息

-m|--monitor   Keep listening for events forever.  Without this option, inotifywait will exit after one  event is received.        #始终保持事件监听状态

--excludei <pattern>  Like --exclude but case insensitive.    #排除文件或目录时,不区分大小写。

--timefmt <fmt> strftime-compatible format string for use with %T in --format string. #指定时间输出的格式

--format <fmt>  Print using a specified printf-like format string; read the man page for more details.

#打印使用指定的输出类似格式字符串

-e|--event <event1> [ -e|--event <event2> ... ] Listen for specific event(s).  If omitted, all events are  listened for.   #通过此参数可以指定需要监控的事件,如下所示:

Events:

access           file or directory contents were read       #文件或目录被读取。

modify           file or directory contents were written    #文件或目录内容被修改。

attrib            file or directory attributes changed      #文件或目录属性被改变。

close            file or directory closed, regardless of read/write mode    #文件或目录封闭,无论读/写模式。

open            file or directory opened                    #文件或目录被打开。

moved_to        file or directory moved to watched directory    #文件或目录被移动至另外一个目录。

move            file or directory moved to or from watched directory    #文件或目录被移动另一个目录或从另一个目录移动至当前目录。

create           file or directory created within watched directory     #文件或目录被创建在当前目录

delete           file or directory deleted within watched directory     #文件或目录被删除

unmount         file system containing file or directory unmounted  #文件系统被卸载


                                                     


本文转自 蔡小赵 51CTO博客,原文链接:http://blog.51cto.com/zhaopeiyan/1731459

 




上一篇:LeetCode 11. 盛最多水的容器(JAVA)


下一篇:Redisson官方文档 - 13. 工具