linux实现rsync+sersync实时数据备份

1.概述

rsync(Remote Sync) 是一个Unix/linux系统下的文件同步和传输工具

2.端口和运行模式

tcp/873

采用C/S模式(客户端/服务器模式)

3.特点

  • 可以镜像保存整个目录和文件
  • 第一次全量备份(备份全部的文件),之后是增量备份(只备份变化的文件)

4. 数据同步方式

  • 推(push) 本地将数据发送到远程服务器
  • 拉(pull) 远程服务器获取数据到本地

5.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选项)
    -P 显示传输进度
    -u, --update 仅仅进行更新,也就是跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
    --port=PORT 定义rsyncd(daemon)要运行的Port(预设为tpc  873)
    --delete 删除那些目标位置有而原始位置没有的文件
    --password-file=FILE 从FILE中得到密码
    --bwlimit=KBPS 限制I/O带宽,KBytes /second
    --filter “-filename” 需要过滤的文件
    --exclude=filename :需要过滤的文件
    -v 显示同步过程的详细信息
    #常用的-avz
    #补充:如果传输的特别大的文件,就不要用z 参数,因为压缩和解压比较耗时
    
  • 示例

    #格式1
    rsync  选项  rsync://用户名@同步源服务器IP:/共享模块名  目标目录  
    rsync -avz --delete rsync://backuper@192.168.98.143:/test /test  
    #--delete 是删除服务端(下面实验的主机A)没有的文件
    #格式2
    rsync  选项  用户名@同步源服务器IP::共享模块名  目标目录  
    rsync -avz --delete backuper@192.168.98.143::test /test
    

6.实验

主机ip 地址
A192.168.98.143
B192.168.98.140
(1).数据同步
  • 在主机A上编写rcync的配置文件

    vim /etc/rsyncd.conf
        uid = root
        gid = root
        address = 192.168.98.143 #写的是本机的ip地址否则服务无法启动
        use chroot = yes
        port = 873 #定义端口
        hosts allow = 192.168.98.0/24 #定义允许访问的地址
        max connections = 4
        pid file = /var/run/rsyncd.pid #进程id文件
        lock file = /var/run/rsyncd.lock #日志文件
        log file = /var/log/rsyncd.log #锁文件
        motd file = /etc/rsyncd.motd #消息文件
    	[backup] #模块名
           path = /test  #备份路径
           comment = backup area #描述
           read only = yes #是否只读
           list = yes #是否隐藏模块列表
           auth users = b1 #备份所使用的用户
           secrets file = /etc/rsync.passwd #校验文件,包含用户名和密码的文件,用户名是			auth users的值	
    
  • 创建描述文件和校验文件

    echo "I am backup server" > /etc/rsyncd.motd #创建描述文件
    echo  "b1:123456" >> /etc/rsync.passwd #创建用户名和密码文件
    chmod 600 /etc/rsyncd.passwd #设置校验文件的权限,不设置会报错
    
  • 开启服务

    rsync --daemon --config=/etc/rsyncd.conf  #指定配置文件并启动服务
    ss -anputl | grep 873 #查看服务是否启动
    systemctl stop firewalld 
    setforce 0
    iptables -F #关闭防火墙
    
  • 主机B测试

    sync -avz --delete b1@192.168.98.143::backup /test  #输入/etc/rsync.passwd中定义的密码
    #免密备份
    vim /etc/rsync.passwd #在主机B上创建文件
    	123456 #只写密码不写用户名,输入/etc/rsync.passwd中定义的密码
    chmod 600 /etc/rsync.passwd  #修改文件权限否则会报错
    sync -avz --delete b1@192.168.98.143::backup /test  --password-file=/etc/rsync.passwd  #指定密码文件
    
(2).实时数据同步(rsync+sersync)

目的:将主机B的数据实时同步到主机A上

  • 修改主机A的rsync的配置文件

    uid = root
    gid = root
    address = 192.168.98.143
    use chroot = yes
    port = 873
    hosts allow = 192.168.98.0/24
    max connections = 4
    pid file = /var/run/rsyncd.pid
    lock file = /var/run/rsyncd.lock
    log file = /var/log/rsyncd.log
    motd file = /etc/rsyncd.motd
    
    [backup]
           path = /test
           comment = backup area 
           read only = false  #在上述实验的基础上只修改这里
           list = yes
           auth users = b1
           secrets file = /etc/rsync.passwd
    
  • 主机B安装sersync

    #使用tar包解压后直接使用
    tar -xf  sersync2.5.4_64bit_binary_stable_final.tar.gz -C /opt/
    	mv /opt/GNU-Linux-x86 /opt/sersync  #修改文件名
    	cp /opt/sersync/confxml.xml{,.bak}  #备份配置文件
    #修改配置文件
      vim /opt/sersync/confxml.xml
      	#修改第24-28行
    	<localpath watch="/monitored">  #本地监控目录
            <remote ip="192.168.98.143" name="backup"/> #主机A(rsync主机的ip),模块名
            <!--<remote ip="192.168.8.39" name="tongbu"/>-->
            <!--<remote ip="192.168.8.40" name="tongbu"/>-->
            </localpath>
         #修改第31-34行
         <commonParams params="-artuz"/>
                <auth start="true" users="b1" passwordfile="/etc/rsync.passwd"/>  #users是备份使用的用户,rsync配置文件中定义的用户, passwordfile就是rsync的校验文件,包含用户名和密码
                <userDefinedPort start="false" port="874"/><!-- port=874 -->
                <timeout start="false" time="100"/><!-- timeout=100 -->
                 <ssh start="false"/>
    
  • 主机B开启守护进程同步数据

    #创建校验文件,修改权限
    echo "123456" > /etc/rsync.passwd  && chmod 600 /etc/rsync.passwd  
    /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml #开启服务,停止服务使用kill命令
    mkdir /monitored  && echo "hello linux !!!" >> /monitored/1.txt  #更改监听的目录查看是否会同步到主机A
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值