设为首页 加入收藏

TOP

Linux 利用inotify和rsync服务实现数据实时同步(二)
2023-07-23 13:38:51 】 浏览:74
Tags:Linux 利用 inotify rsync 时同步
  • 本地模式:本地文件系统上实现同步。命令行语法格式为上述"Local"段的格式

  • 基于传统的ssh协议,本地主机使用远程shell和远程主机通信

  • 作为一个独立服务,本地主机通过网络套接字连接远程主机上的rsync daemon

  • 区别:

    ??前两者的本质是通过本地或远程shell,而第3种方式则是让远程主机上运行rsyncd服务,使其监听在一个端口上,等待客户端的连接。

    本地模式:
    rsync [OPTION...] SRC... [DEST]
    

    例如:

    [root@LAP1 data]# rsync file1  file111
    
    [root@LAP1 data]# ls
    file1  file11  file111  file2
    
    基于传统的ssh协议使用格式:
    Pull:
    rsync [OPTION...] [USER@]HOST:SRC... [DEST]
    
    Push:
    rsync [OPTION...] SRC... [USER@]HOST:DEST
    

    例如:

    rsync -av --delete /data/  10.0.0.12:/back
    #不写用户名默认使用的就是当前主机使用的用户
    
    作为一个独立服务:
    Pull:
    rsync [OPTION...] [USER@]HOST::SRC... [DEST]
    rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] #协议的形式访问,效果等同于上面
    
    Push:
    rsync [OPTION...] SRC... [USER@]HOST::DEST
    rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
    
    rsync常用选项:
    -v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
    
    -a --archive :归档模式,表示递归传输并保持文件属性。
    
    -t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新,检查出mtime不同从而导致增量传输无效
    
    --delete   :以SRC为主,对DEST进行同步。多则删之,少则补之
    
    rsync的软件包:

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

    软件包:rsync,rsync-daemon(CentOS 8)

    服务文件:/usr/lib/systemd/system/rsyncd.service

    配置文件:/etc/rsyncd.conf

    端口:873/tcp

    两种方式实现rsync服务器

    ??rsync即可以作为服务器端,也可以作为客户端程序。

    方式一:通过rsync守护进程的方式实现rsync服务

    #在备份服务器启动 rsync 进程
    [root@bakup_server ~]# rsync --daemon #--daemon选项表示启动为守护进程
    Failed to parse config file: /etc/rsyncd.conf #必须要有这个配置文件才能启动成功
    
    [root@bakup_server ~]# touch /etc/rsyncd.conf #需要创建这个配置文件才能正常启动
    
    [root@bakup_server ~]# rsync --daemon  #启动rsync守护进程
    
    [root@bakup_server ~]# ss -ntl  #守护进程启动后会监听873端口
    State                Recv-Q               Send-Q                              Local Address:Port                               Peer Address:Port               
    LISTEN               0                    5                                         0.0.0.0:873                                     0.0.0.0:*                  
    
    
    #设置rsync服务器的共享信息
    [root@bakup_server ~]# cat /etc/rsyncd.conf #等号之间可以有空格
    [backup]          #定义存放数据共享的名字
    path = /bakup     #真实的路径,存放共享文件的路径 (利用rsync将这个目录共享出去,共享出去的名字叫做bakup)
    read only = no    #指定可读写,默认只读
    
    [root@bakup_server ~]# rsync --daemon #更改问配置文件以后需要重新开启守护进程才会生效
    
    [root@bakup_server ~]# setfacl -m u:nobody:rwx /bakup/ #指定目录给nobody权限,默认用户以nobody访问此目录
    
    
    使用客户端连接rsync备份服务器:
    #格式 rsync rsync://host 或者 rsync host::
    
    客户端查看服务器的情况:
    [root@data_server ~]# rsync rsync://10.0.0.12  #以协议的形式访问
    backup  #共享出来的名字
    
    [root@data_server ~]# rsync 10.0.0.12::  #以服务的形式访问
    backup
    
    #实现客户端将文件拷贝到rsync共享的目录中
    注意:传输的时候不管以谁的身份,都会映射为nobody,所以不用写用户名都行
    [root@data_server ~]# rsync /root/anaconda-ks.cfg root@10.0.0.12::backup
    
    
    [root@bakup_server bakup]# ll
    total 8
    -rw------- 1 nobody nobody 1526 Oct 24 17:48 anaconda-ks.cfg
    -rw-r--r-- 1 nobody nobody  658 Oct 24 17:49 fstab
    

    以独立服务方式运行rsync并实现验证功能

    ??rsync-daemon:安装这个软件包以后会提供一个service服务,它会监听自己的独立端口

    [root@bakup_server ~]# yum install rsync-daemon
    Installed:
      rsync-daemon-3.1.3-9.el8.noarch
    
    [root@bakup_server ~]# systemctl enable rsyncd.service 
    Created symlink /etc/systemd/system/multi-user.target.wants/rsyncd.service → /usr/lib/systemd/system/rsyncd.service.
    

    说明:

    ??rsync默认传输文件的时候不需要验证

    启用rsync的验证功能的方法:

    [root@backup-centos8 ~]#dnf -y install rsync-daemon
    
    #安装服务的时候自动创建rsync服务器的配置文件
    [root@centos8 ~]#vi /etc/rsyncd.conf
    uid = root             #远程用户映射到本机的用户,默认为nobody
    gid = root             #默认为nobody
    #port = 874            #可指定非标准端口,默认873/tcp
    #use chroot = no
    max connections = 0    #不限制最大连接数
    ignore errors          #如果有些错误,就跳过这些错误
    exclude = lost+found/  #跳过指定的目录,不去复制
    log file = /var/log/r
    首页 上一页 1 2 3 下一页 尾页 2/3/3
    】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
    上一篇Ansible使用playbook部署LNMP 下一篇RHCSA认证考试

    最新文章

    热门文章

    Hot 文章

    Python

    C 语言

    C++基础

    大数据基础

    linux编程基础

    C/C++面试题目