zoukankan      html  css  js  c++  java
  • rsync同步备份搭建

     

     

    Rsync 是 Unix/Linux 下的一款应用软

    在平常的运维中进常要对一些数据进行备份,以防止意外的服务器故障导致不可避免的后果,tar,cp只能适应一些小范围backup,对于几T甚至几P的数据却毫无用处了

    rsync可以做到这一点:

     

    它的特性如下:

    可以镜像保存整个目录树和文件系统。

    可以很容易做到保持原来文件的权限、时间、软硬链接等等。

    无须特殊权限即可安装。

    快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。

    安全:可以使用scp、ssh等方式来传输文件,当然也可以通过直接的socket连接。

    支持匿名传输,以方便进行网站镜象。

    件,利用它可以使多台服务器数据保持同步一致性,

    Rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。可
    以很容易做到保持原来文件的权限、时间、软硬链接等。

     

    下面正式来配置 Rsync 服务器,模拟真实环境服务器数据同步:
    A 是源服务器,B、C 为客户端服务器,因需求,B、C 服务器需要从 A 某个同步某个目
    录到本地。
    正式安装,官网下载 rsync 稳定版本,然后进行安装编译。
    cd /usr/src ;wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
    tar xzf rsync-3.0.7.tar.gz && cd rsync-3.0.7 && ./configure --
    prefix=/usr/local/rsync &&make &&make install
    安装完毕,配置 rsync 配置文件,默认/etc/不存在 rsyncd.conf 配置文件,需要手动
    创建,配置内容为如下:cat rsyncd.conf
    #########[global] 全局配置
    uid = nobody
    gid = nobody
    use chroot = no
    max connections = 30
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    transfer logging = yes
    log format = %t %a %m %f %b
    syslog facility = local3
    timeout = 300
    [www]
    read only = yes
    path = /usr/local/webapps
    comment = www
    auth users =test
    secrets file = /etc/rsync.pas
    hosts allow = 192.168.0.11,192.168.0.12
    [web]
    read only = yes
    path = /data/www/web
    comment = web
    auth users =test
    secrets file = /etc/rsync.pas
    hosts allow = 192.168.1.11,192.168.0.0/24
    Rsync 配置参数说明:
    [www] #要同步的模块名
    path = /usr/local/webapps #要同步的目录
    comment = www #这个名名称无所谓,最后模块名一直)
    read only = no # no 客户端可上传文件,yes 只读
    write only = no # no 客户端可下载文件,yes 不能下载
    list = yes #是否提供资源列表
    auth users =test #登陆系统使用的用户名,没有默认为匿名。
    hosts allow = 192.168.0.10,192.168.0.20 #本模块允许通过的 IP 地址
    hosts deny = 192.168.1.4 #禁止主机 IP
    secrets file=/etc/rsync.pas #密码文件存放的位置
    启动服务器端 RSYNC 主进程,/usr/local/rsync/bin/rsync --daemon ,监听端口 TCP
    873
    设置 rsync 服务器端同步密钥:
    vi /etc/rsync.pas
    username:userpasswd (表示用户名:密码)
    test:test999
    保存完毕,chmod 600 /etc/rsync.pas 设置权限为宿主用户读写。
    最后在客户端配置同步密钥和命令,如下设置即可同步。
    vi /etc/rsync.pas 输入服务器端配置的密码:
    test999
    保存即可开始同步:执行如下语句
    Rsync -aP --delete test@192.168.0.100::www /usr/local/webapps
    --password-file=/etc/rsync.pas
    Rsync -aP --delete test@192.168.0.100::web /data/www/web
    --password-file=/etc/rsync.pas
    注*/usr/local/webapps 为客户端的目录,@前 test 是认证的用户名;IP 后面 www 为
    rsync 服务器端的模块名称。
    Rsync 常用参数解析:
    -a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性。
    ––exclude=PATTERN 指定排除一个不需要传输的文件匹配模式
    ––exclude-from=FILE 从 FILE 中读取排除规则
    ––include=PATTERN 指定需要传输的文件匹配模式
    ––delete 删除那些接收端还有而发送端已经不存在的文件
    -P 等价于 ––partial ––progress
    -v, ––verbose 详细输出模式
    -q, ––quiet 精简输出模式
    ––rsyncpath=PROGRAM 指定远程服务器上的 rsync 命令所在路径
    ––password-file=FILE
    从 FILE 中读取口令,以避免在终端上输入口令,
    通常在 cron 中连接 rsync 服务器时使用
    . 5.2. 2 2 c Rsync 基于 H SSH 同步
    除了可以使用 rsync 密钥进行同步之外,还有一个比较简单的同步方法就是基于 linux
    ssh 来同步。具体方法如下:
    rsync -aP --delete root@192.168.0.10:/data/www/webapps
    /data/www/webapps ,如果想每次同步不输入密码,需要做 Linux 主机之间免密码登录。
    . 5.2. 3 3 c Rsync 实时同步配置
    在企业日常 web 应用中,某些特殊的数据需要要求保持跟服务器端实时同步,那我们该
    如何来配置呢?如何来实现呢?这里可以采用 rsync+inotify 来实现需求。
    Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。
    Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
    Rsync 安装完毕后,需要安装 inotify 文件检查软件。同时为了同步的时候不需要输入
    密码,这样可以使用 ssh 免密钥方式进行同步。
    安 装 inotify-tools-3.14.tar.gz 软 件 , tar – xzf
    inotify-tools-3.14.tar.gz ;./configure ;make
    ;make install 即可。配置 auto_inotify.sh 同步脚本,内容如下:
    #!/bin/sh
    src=/data/webapps/www
    des=/home/webapps/
    ip=192.168.0.11
    inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e
    modify,delete,create,attrib ${src} | while read file
    do
    for i in $ip
    do
    /usr/local/rsync/bin/rsync -aP --delete $src root@$ip:$des
    done
    done
    在服务器端后台启动该脚本,nohup sh auto_inotify.sh & ,在服务器端目录新建
    或者删除,客户端都会实时进行相关操作。

    要保持着对知识的渴求,给自己充电,不要这荒废了短暂的时光;
  • 相关阅读:
    https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,300italic,400italic,600italic net::ERR_CONNECTION_TIMED_OUT问题解决
    nginx 下使用 bootstrap 字体的问题
    php中函数preg_match或preg_match_all 第三个参数$match的解释
    thinkphp中 volist循环的 mod取值的问题
    mysql中sql注入的随笔
    修改mysql的字符集和默认存储引擎
    使用Marsedit在博客园写作
    Server Tomcat v7.0 Server at localhost failed to start.临时解决办法
    【转】Linux Mint 17.2 gedit中文乱码
    HashMap和HashSet
  • 原文地址:https://www.cnblogs.com/activecode/p/9354570.html
Copyright © 2011-2022 走看看