欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > linux实现rsync+sersync实时数据备份

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

2025/5/19 4:31:47 来源:https://blog.csdn.net/weixin_55103823/article/details/146538385  浏览:    关键词: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.confuid = rootgid = rootaddress = 192.168.98.143 #写的是本机的ip地址否则服务无法启动use chroot = yesport = 873 #定义端口hosts allow = 192.168.98.0/24 #定义允许访问的地址max connections = 4pid 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 = /testcomment = backup area read only = false  #在上述实验的基础上只修改这里list = yesauth users = b1secrets 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
    

    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词