rsync+inotify 备份

配置rsync+ inotify 实现实时同步
    同步项目实战之rsync篇
    1.多种备份方式的介绍
    2.rsync实现目录备份
    3.配置企业级无交互备份实战
    4.配置rsync企业服务器实现实时同步
备份方式;
        完整备份

rsync 远程同步: rsync(Remote sync)  ==> 做数据备份
rsync 客户端好处:
优点:支持增量备份
       选择性保存:符号链接,硬链接,文件属性,权限及时间等不变。
       传输的执行压缩,适用于异地备份,镜像服务器等应用。
官网:技术留言,官方文档。社区庞大。
        http://rsync.samba.org
首先认识同步数据的方式:
    推:一台主机负责把数据传给其它主机,服务器开销大,适合后端服务较少。
    拉:所有主机定时去找一主机拉数据,可能会导致数据同步缓慢,好处,节省服务器开销。
        交互式  :需要用户名和密码
     无交互式:  不需要密码的输入
优化 sshd:  #vim /etc/ssh/sshd_config   下面编辑   UseDNS no       GSSAPIAuthentication no
**********************
通常情况下我们在连接 OpenSSH服务器的时候假如 UseDNS选项是打开的话,服务器会先根据客户端的 IP地址进行 DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始 IP地址一致,通过此种措施来防止客户端欺骗。平时我们都是动态 IP不会有PTR记录,所以打开此选项也没有太多作用。我们可以通过关闭此功能来提高连接 OpenSSH 服务器的速度。*******

***GSSAPI是公共安全事务应用程序接口(GSS-API)
公共安全事务应用程序接口以一种统一的模式为使用者提供安全事务,由于它支持最基本的机制和技术,所以保证不同的应用环境下的可移植性.
该规范定义了GSS-API事务和基本元素,并独立于基本的机制和程序设计语言环境,并借助于其它相关的文档规范实现。
        如果我们在服务端打开GSSAPIAuthentication配置项  
        在客户端登录服务端会用gssapi-keyex,gssapi-with-mic进行身份校验
        (前提是服务器和客户端都开启这个功能)
**************************   
sshd 的配置
    生成密钥对: ssh-keygen
    查看密钥对: /root/.ssh/   这个目录下
    拷贝密钥: ssh-copy-id [email protected]
密钥的操作详细过程:
    如果你的系统里面安装了ssh
    [[email protected] ~]# ssh (连续敲击2次tab 可以实现命令搜索(一般用于命令补全)
    ssh     ssh-add      ssh-agent    ssh-copy-id  sshd         ssh-keygen   ssh-keyscan
    这里我用到的命令是  ssh-keygen ==>生成密钥对    ssh-copy-id  ===>给对方发送认真密钥
    1.生成密钥:
        [[email protected] ~]# ssh-keygen
            Generating public/private rsa key pair.
            Enter file in which to save the key (/root/.ssh/id_rsa):
            /root/.ssh/id_rsa already exists.
            Overwrite (y/n)? y       #####这里会出现这个是因为我之前练习过。需要覆盖。
            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:
            97:17:1f:7e:d9:c1:a7:71:49:e1:e7:0f:ca:f7:60:4c [email protected]
            The key‘s randomart image is:
            +--[ RSA 2048]----+
            |               o.|
            |              + .|
            |            . o=+|
            |           . + **|
            |        S o . E.+|
            |         . o + o.|
            |            o = .|
            |             o o |
            |                .|
            +-----------------+
    2.查看  执行情况
            [[email protected] ~]# ls /root/.ssh
            id_rsa  id_rsa.pub  known_hosts
            当然也可以通过这个查看
            [[email protected] ~]# echo $?
            0
            通过检查命令执行的返回结果查看。如果是0正常。非0,则需要好好查看排错。
    3.传递密钥,并且查看结果
        [[email protected] ~]# ssh-copy-id [email protected]
        [email protected]‘s password:
        Now try logging into the machine, with "ssh ‘[email protected]‘", and check in:
          .ssh/authorized_keys
        to make sure we haven‘t added extra keys that you weren‘t expecting.
        给出的信息大概意思是:试试  "ssh ‘[email protected]‘" 。看authorized_keys是否生效。
        看下是不是很意外:不输入密码也可以登录。

[[email protected] ~]# ssh [email protected]
        Last login: Fri Jan 13 08:13:55 2017 from 192.168.1.123
        [[email protected] ~]#
    结果:测试成功。又补习了一下ssh 的知识。

实战:使用rsync进行数据同步
    命令意思 参数 作用 局限性
    格式: rsync  【选项】 源文件  目标文件
    常见的选项:
        -a  --archive (存档)归档模式,表示以递归的方式传输文件,并且保持文件属相,等同于
                加了参数  - r l p t g o D             ******************
        -r  --recursive 对子目录以递归模式处理。
        -l  --link表示拷贝链接文件
        -p  --perm  表示 保持文件原有权限
        -t  --times 表示保持文件原有时间
        -g  --group 表示保持文件原有用户组
        -o  --owner 表示保持文件原有属主
        -D  --devices 表示块设备文件信息
        -z  --compress 表示压缩传输
        -H  表示硬链接文件
        -A  保留ACL属性信息
        -P  显示传输进度                                              **************
    (增量备份)    --delete  删除哪些目标位置有而原始位置没有的文件。**************
无交互备份模拟;备份 oldboy  /var/www/html 目录到 jf 的/web-back
     # rsync -azP /var/www/html  [email protected]:/
操作实例:(ssh的密码交互在前面已经做好了)
        [[email protected] ~]# mkdir -p /var/www/html
        [[email protected] ~]# cp -r /boot/* /var/www/html/  (不加-r 不拷贝目录)如果不想重复输入/var/www/html(可以按esc+.重复上次命令最后参数)
        [[email protected] ~]# ssh 192.168.1.151
        Last login: Fri Jan 13 08:30:06 2017 from 192.168.1.123
        [[email protected] ~]# ls /web-back
        ls: cannot access /web-back: No such file or directory
        [[email protected] ~]# rsync -azP --delete /var/www/html/* [email protected]:/web-back
        sending incremental file list
        created directory /web-back
        。。。。。。由于加了P 选项所以显示进度这里略去。。。。。。。
        sent 54299622 bytes  received 529 bytes  5715805.37 bytes/sec
        total size is 59172855  speedup is 1.09
        [[email protected] ~]# ssh [email protected]
        Last login: Fri Jan 13 08:51:58 2017 from 192.168.1.123
        [[email protected] ~]# ls /web-back/
        config-2.6.32-504.el6.x86_64              symvers-2.6.32-504.el6.x86_64.gz
        config-2.6.32-642.11.1.el6.x86_64         symvers-2.6.32-642.11.1.el6.x86_64.gz
        efi                                       System.map-2.6.32-504.el6.x86_64
        grub                                      System.map-2.6.32-642.11.1.el6.x86_64
        initramfs-2.6.32-504.el6.x86_64.img       vmlinuz-2.6.32-504.el6.x86_64
        initramfs-2.6.32-642.11.1.el6.x86_64.img  vmlinuz-2.6.32-642.11.1.el6.x86_64
        lost+found
测试结果:实现了无交互式备份。

实现实时自动备份。(不用输入用户名和密码)
    步骤:
        1. 在服务器上生成密钥对
        2. 将公钥上传到目标服务器
        3. 执行备份命令 rsync 实现无交互备份
配置rsync+Inotify 实现实时同步
    Inotify概述:
        linux内核从2.6.13开始提供了Inotify通知接口,用来监控文件系统的各种变化情况,如文件存取,
        删除,移动等,利用这一机制,可以非常方便的实现文件异动告警,增量备份,并针对目录或文件
        的变化及时做出响应。
    使用rsync工具与Inotify机制相结合,可以实现触发式备份(实时同步),只要原始位置的文档发生变化,则立即启动增量备份操作,否则处于静态等待状态,这样一来,就避免了按固定周期备份而存在的延迟性,周期过密等问题。
    Inotify 下载地址:http://sourceforge.net/projects/inotify-tools/
    # make -j 4  #make编译.将源代码编译成二进制,可执行文件。-j 4使用4个进程同时编译,
    使用: inotifywait -h
    常用参数;
    -e 用来指定要监控哪些事件。
        这些事件包括 create  move delete  modify  attri
    -m  表示持续监控
    -r 表示递归整个目录
    -q 表示简化输出信息
    # inotifywait -mrq -e create,move,delete,modify /var/www/html/

创建脚本;
    #!/bin/bash
    inotifywait -mrq -e create,move,delete,modify /var/www/html |while read a b c
    do
    rsync -azP --delete /var/www/html/ [email protected]:/web-back
    done
运行脚本: sh  x.sh

时间: 2024-11-08 17:41:12

rsync+inotify 备份的相关文章

2-3-2 rsync+inotify备份同步数据

RSYNC = Remote Sync 远程同步 高效,一定要结合shell 官网:https://rsync.samba.org Author: Andrew Tridgell, Wayne Davison, and others Andrew Tridgell是Samba项目的领导者和主要开发人员,同时还在参与开发rsync\Linux Kernel. 与SCP的比较:scp=无法备份大量数据,类似windows的复制 rsync=边复制 ,边统计,边比较 Rsync特性和优点 可以镜像保存

Rsync+inotify备份

Rsync+inotifyInotify是一个通知接口,用来监控文件系统的各种变化,如果文件存取,删除,移动.可以非常方便地实现文件异动告警,增量备份,并针对目录或文件的变化及时作出响应.rsync+inotify可以实触发式实时同步增量备份 案例: 实现web上传视频文件,写入NFS共享存储,然后将NFS存储内容实时复制至Backup服务器 环境准备 角色 外网IP(NAT) 内网IP(LAN) 安装工具Rsync-server eth0:10.0.0.41 eth1:172.16.1.41

rsync+inotify 实现数据的实时备份

我这个人写一些东西难免要发一番感慨,今天做rsync+inotify实现实时备份,做了好长时间没做出来,这段时间我看了好多博文还有一些视频,但自己做的时候还是没做出来,非常郁闷,就拿起书慢慢的看起来,最终我把思路整理好,又重新试验了一遍终于成功了.是的,你百分之九十的时间在实践,而剩下百分之十的时间才能到达成功,坚持加再看一遍很重要. 我先整理一下大致思路,如有时间,我再整理完整的文档出来. 1.先在两台主机里面安装rsync. 2.在服务节点上配置rsync. 3.在内容发布节点上安装inot

inotify介绍及rsync + inotify 实时同步备份

1.前言 rsync (remote sync)是一款非常好的数据同步工具,能够通过对比同步双方的数据变动,实现增量同步,还可以通过LAN/WAN实现远程多台主机间文件的同步,还能结合crond任务计划来执行自动备份,又可以结合ssh实现远程数据备份的安全,种种特性使他看起来相当优秀.但如果需备份数据十分庞大时,它的不足之处就显现出来了,比如每次执行同步操作时,rsync都会扫描全部数据进而计算出增量部分,而后再同步增量数据,这将会十分耗时,使其变得低效:并且受限于crond计划任务最小时间间隔

通过rsync+inotify实现文件的实时备份同步

原文参考:http://ixdba.blog.51cto.com/2895551/580280/ http://www.bamaol.com/Psy/Showposts-010000108-5048.html 一,rsync安装 目前rsync的最新版本是3.0.9 wget http://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz tar-xvzfrsync-3.0.9.tar.gz;cdrsync-3.0.9; ./configure;make;

rsync+inotify同步备份MYSQL数据

rsync+inotify同步备份MYSQL数据 rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但是rsync不能实时的去监测.同步数据.inotify 是一种强大的.细粒度的.异步的文件系统事件监控机制,通过inotify可以监控文件系统中添加.删除,修改.移动等各种细微事件. 实验环境:备份端192.168.1.123(rsync server) 备份源192.168.124(rsync client inotify mysql)

CentOS6.6 rsync+inotify实现数据时时备份

rsync+inotify实现数据时时备份 注意:rsync的daemon模式已提前配置好了,只需要配置inotify即可. 基本环境   系统版本 主机名 IP地址 角色 备份/监控目录 CentOS  6.6 backup 10.0.0.10 rsync服务端 /backup CentOS  6.6 nfs-server 10.0.0.7 rsync客户端 /data inotify安装配置 查看系统是否支持inotify,显示以下三个文件表示支持 [[email protected] to

rsync+inotify实现数据实时同步备份

在实际生产环境当中,我们总会遇见需要把一些重要数据进行备份,且随着应用系统规模的增大,对数据的安全性.可靠性.时效性要求还是比较高的, 因此我自己有在用rsync+inotify来实现数据实时同步备份,下面记录下操作步骤,以防日后自己忘记. 实验背景: 操作系统          IP         机器名        角色 CentOS 7.2       172.16.22.1     nginx01        数据源(服务器端) CentOS 7.2       172.16.22

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件