zoukankan      html  css  js  c++  java
  • 配置rsync+inotify实现实时同步

    本节所讲内容:

    • rsync 远程同步
    • 实战1: 备份/var/www/html 目录
    • 实战2: 使用ssh密钥实现无交互备份
    • 实战3:配置rsync+inotify实现实时同步
    • 实验环境:

    服务端:xuegod63.cn   IP:192.168.10.63

    客户端:xuegod64.cn   IP:192.168.10.64

     

    rsync 远程同步: 一款快速增量备份工具 Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync主机同步。

     作用:做数据备份

    备份方式:

           完全备份

         增量备份

     

    rsync客户端 好处:

    优点:   第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。支持增量备份。

             选择性的保持 : 符号链接,硬链接,文件属性,权限 及时间 等。

                  传输前执行压缩。适用于异地备份 ,镜像服务器等应用 。

                  安全,使用ssh做为传输端口。 sftp  ,ssh 

    官网:http://rsync.samba.org

    首先认识同步数据的方式:

        推:  一台主机负责把数据传给其它主机。服务器开销大。适合后端服务器比较少

        拉:  所有主机定时去找一主机拉数据 。 可能会导致数据同步缓慢。好处,节省服务器开销。

    方法二:

    实战:使用rsync进行数据同步

    rsync命令的基本用法:

    格式:rsync 【选项】 源文件 目标文件

     

    常见的选项:

    -a,--archive(存档) 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD

    -r,–recursive 对子目录以递归模式处理

    -l,--links 表示拷贝链接文件

    -p , --perms 表示保持文件原有权限

    -t , --times 表示保持文件原有时间

    -g , --group 表示保持文件原有属用户组

    -o , --owner 表示保持文件原有属主

    -D , --devices 表示块设备文件信息

    -z , --compress 表示压缩传输

    -H 表示硬连接文件

    -A 保留ACL属性信息

    -P 显示传输进度

    --delete 删除那些目标位置有而原始位置没有的文件

     

     

    实战1: 备份xuegod63的/var/www/html 目录到xuegod64的/web-back。

                                           

    开始备份:

    xuegod63: 创建用于测试的数据

    [root@xuegod63 ~]# cp -r /boot/grub/ /var/www/html/

    备份xuegod63的/var/www/html 目录到xuegod64的/web-back

    注:rsync是基于ssh协议。需要知道对端服务器的root和密码

    [root@xuegod63 ~]# rsync -azP --delete /var/www/html/  root@192.168.1.64:/web-back

     

     

    常见的选项:

    -a,--archive(存档) 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于加了参数-rlptgoD

    -z , --compress 表示压缩传输

    -P 显示传输进度

    --delete 删除那些目标位置有而原始位置没有的文件

     

    你打算几点备份?

    24点,不行。  业务最不忙的时候。  

    3:00   人都休息。    找一个人最少的时间去备份。  不是24:00.

    每天晚上3点起来备份???

     

    实战2: 使用ssh密钥实现无交互备份。做成脚本,将xuegod63上的数据,定期备份到xuegod64上。

    在xuegod63上生成密钥对

    [root@xuegod63 ~]# ssh-keygen

    Generating public/private rsa key pair.

    Enter file in which to save the key (/root/.ssh/id_rsa): #直接回库

    Enter passphrase (empty for no passphrase):

    Enter same passphrase again:  #直接回库

    Your identification has been saved in /root/.ssh/id_rsa.

    Your public key has been saved in /root/.ssh/id_rsa.pub.

    The key fingerprint is:   #直接回库

    ac:64:7f:6c:54:41:a1:80:4a:ab:79:9a:6d:d1:ef:e0 root@xuegod63.cn

    The key's randomart image is: 

    +--[ RSA 2048]----+

    |       ..  .+.   |

    |    . .  . . .   |

    |   . o    . .    |

    |    o  .   .     |

    |   o .o S .      |

    |  o oo.o o       |

    |   = .o.. +      |

    |  o o. ..o       |

    |   .  E..        |

    +-----------------+

     

    查看生成的公钥和私钥:

    [root@xuegod63 ~]# ls /root/.ssh/

    id_rsa(私钥)  id_rsa.pub(公钥)  known_hosts

     

     

    将公钥上传到xuegod64 数据源

     

    [root@xuegod63 ~]# ssh-copy-id root@192.168.1.64

    root@192.168.1.64's password:

    Now try logging into the machine, with "ssh 'root@192.168.1.64'", and check in:

     

      .ssh/authorized_keys

     

    to make sure we haven't added extra keys that you weren't expecting.

     

    相当于你执行了:

    [root@xuegod63 ~]# scp /root/.ssh/id_rsa.pub   root@192.168.1.64:/root/.ssh/authorized_keys

    查看:

    [root@xuegod64 ~]# ls /root/.ssh/

    authorized_keys  known_hosts

     

    测试,不输密码直接登录:

     [root@xuegod63 ~]# ssh root@192.168.1.64

    [rget1@xuegod64 ~]# exit

     

    测试,不输密码直接备份:

    [root@xuegod64 ~]# rm -rf /web-back/*

    [root@xuegod63 ~]# rsync -azP --delete /var/www/html/  root@192.168.1.64:/web-back

     

     

    登录顺序: 服务器A想直接登录B, 把A的公钥上传到B上。

    扩展:          

    快速查找历史命令:

    ctrl+R -》 输入历史命令的关键字-》按下右方向键

    总结:

    1、在xuegod63上生成密钥对

    2、将公钥上传到xuegod64 数据源

    3、执行备份命令 rsync 实现无交互备份

     

    实战:配置rsync+inotify实现实时同步

    把xuegod63.cn服务器上的/var/www/html目录时实同步到xuegod64.cn主机上的/web-back目录中。

    inotify概述:

    Linux内核从2.6.13版本开始提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。

    修改windows注册表,安装一些有危险性的软件。 这时,系统或安全卫士会弹出以下窗口:

     

     

    使用rsync工具与inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等侍状态,这样一来,就避免了按固定周期备份进存在的延迟性、周期过密等问题。

     

     

    查看是否支持inotify,从kernel 2.6.13开始正式并入内核。

    [root@xuegod63 ~]# uname -r

    2.6.32-220.el6.x86_64

     

    安装inotify-tools-3.13.tar:

    上传

    [root@xuegod63 ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

    rz  上传

    sz  下载

     

    安装inotify-tools-3.13.tar:

     

    [root@xuegod63 ~]# tar -zxvf inotify-tools-3.13.tar.gz

    [root@xuegod63 ~]# cd inotify-tools-3.13

    [root@xuegod63 inotify-tools-3.13]# ./configure   检查安装环境

    [root@xuegod63 inotify-tools-3.13]# make -j 4   #make编译,将源代码编译成二进制,可执行的文件  

    源码编译mysql或内核: make -j 4   快。

     

    [root@xuegod63 inotify-tools-3.13]# make  install  # 安装

    [root@xuegod63 ~]# inotifywait -h  

    常用参数:

    -e  用来指定要监控哪些事件。

    这些事件包括: create创建,move移动,delete删除,modify修改文件内容,attrib属性更改。

    -m 表示持续监控

    -r  表示递归整个目录

    -q 表示简化输出信息。

    [root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

     

    在另一个终端登录,在/var/www/html目录进行相关的操作,然后,回到原来的终端查看监控变化情况。

    [root@xuegod63 ~]# echo aaa > /var/www/html/a.html

    [root@xuegod63 ~]# mkdir /var/www/html/test

    [root@xuegod63 ~]# cp /etc/passwd /var/www/html/test/

    [root@xuegod63 ~]# rm -rf /var/www/html/test/passwd

     

    查看变化:

    [root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

    /var/www/html/ CREATE a.html

    /var/www/html/ MODIFY a.html

    /var/www/html/ CREATE,ISDIR test

    /var/www/html/test/ CREATE passwd

    /var/www/html/test/ MODIFY passwd

    /var/www/html/test/ DELETE passwd

    注:使用inotifywait输出的监控结果中,每行记录中依次包括目录、事件、文件。据此可以识别变动情况。

     

    编写触发式同步脚本

    思路: 只要使用inotifywait检测到事件时,自动执行rsync进行同步操作即可。

    [root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

    /var/www/html/   CREATE   a.html

     

    [root@xuegod63 ~]# cat a.sh

    #!/bin/bash

    inotifywait -mrq -e create,move,delete,modify /var/www/html/  | while read a b c

    do      

    rsync -azP --delete /var/www/html/ root@192.168.10.64:/web-back

    done

    [root@xuegod63 ~]# chmod +x a.sh

     [root@xuegod63 ~]# ./a.sh

    测试:

    创建文件测试

    数据已经实时同步。

  • 相关阅读:
    匈牙利算法(Kuhn-Munkres)算法
    城城城城
    Windows平台将远程服务器的目录挂载为本地磁盘
    怎么看自己电脑的内存多少赫兹
    sqlserver isnull函数
    带参数的存储过程
    EFCore学习记录笔记
    js保留两位小数方法总结
    C#中 ??、 ?、 ?: 、?.、?[ ] 问号
    C#枚举转化示例大全,数字或字符串转枚举
  • 原文地址:https://www.cnblogs.com/lovehx/p/8622258.html
Copyright © 2011-2022 走看看