美文网首页
Linux文件双向实时同步rsync + inotify

Linux文件双向实时同步rsync + inotify

作者: 龙之叶 | 来源:发表于2022-08-11 16:41 被阅读0次

    服务器:192.168.24.31

    客户端:192.168.22.167

    一.配置rsync(服务端和客户端都需要进行相同的配置)

    1.配置 /etc/rsyncd.conf (如果没有该文件,就新建文件),写入如下内容

    strict modes = yes
    #rsync default port
    uid = root #守护进程的用户权限
    gid = root
    port = 873 #rsync使用的端口,默认873
    logfile = /var/log/rsyncd.log # 日志位置
    pidfile = /var/run/rsyncd.pid # 进程号存放位置
    max connections = 4 # 客户端最大连接数目
    auth users = backup, user #授权用户
    secrets file = /etc/rsyncd.secrets #授权用户密码文件位置
    use chroot = yes
    read only = no # no客户端可上传文件,yes只读
    write only = no # no客户端可下载文件,yes不能下载
    
    #[modules] each path responding to a module
    [appbackup] # 要同步的模块名
    path = /home/software/rsync/test1 # 要同步的目录
    auth user = user # 登陆系统使用的用户名,没有默认为匿名。
    #hosts allow=9.4.122.24
    

    2.配置密码文件

    密码文件为配置文件中所写的文件/etc/rsyncd.secrets格式为账户:密码,写入如下内容

    user:123
    backup:123
    

    3.修改配置文件和密码文件的权限

    [root@localhost ~]#chmod 600 /etc/rsyncd.conf
    [root@localhost ~]#chmod 600 /etc/rsyncd.secrets
    

    4.启动守护进程

    [root@localhost ~]#rsync --daemon --config=/etc/rsyncd.conf
    

    5.检查rsync是否启动

    [root@localhost ~]#lsof -i :873 或
    [root@localhost ~]#netstat -an |grep 873</a>
    

    二.客户端配置

    1.新建密码文件

    在/home/longzhiye/softWare/rsync目录下新建一个密码文件

    [root@localhost ~]#vi /home/longzhiye/softWare/rsync/rsyncd.secrets
    

    写入如下内容

    user:123
    backup:123
    

    2.修改密码文件的权限

    [root@localhost ~]chown root.root /home/longzhiye/softWare/rsync/rsyncd.secrets
    [root@localhost ~]#chmod 600 /home/longzhiye/softWare/rsync/rsyncd.secrets
    

    3.测试下载和上传功能

    从服务器上下载文件

    [root@localhost ~]#rsync -avz --password-file=/home/longzhiye/softWare/rsync/rsyncd.secrets user@192.168.24.31::appbackup /home/longzhiye/softWare/rsync/test1/
    

    上传文件到服务器

    [root@localhost ~]#rsync -avz --password-file=/home/longzhiye/softWare/rsync/rsyncd.secrets /home/longzhiye/softWare/rsync/test1/ user@192.168.24.31::appbackup
    

    至此就实现了手动同步的功能

    三.inotify 安装,实现自动同步功能(只在服务端操作)

    1.查看是否支持

    [root@localhost ~]#ll /proc/sys/fs/inotify
    

    执行结果:

    total 0
    -rw-r--r--. 1 root root 0 Nov 29 05:34 max_queued_events
    -rw-r--r--. 1 root root 0 Nov 29 05:34 max_user_instances
    -rw-r--r--. 1 root root 0 Nov 29 05:34 max_user_watches
    

    2.下载安装inotify

    2.1下载源码包

    下载地址:http://inotify-tools.sourceforge.net

    笔者分享个百度云下载地址:http://pan.baidu.com/s/1qXYV7Fe

    2.2上传到服务器的任意路径,解压安装包

    切换到上传文件位置,解压安装包

    [root@localhost ~]# tar zxvf inotify-tools-3.14
    

    进入该目录执行安装操作

    [root@localhost ~]#cd inotify-tools-3.14
    
    [root@localhost ~]#./configure --prefix=/usr/local/inotify
    

    提示:/usr/local/inotify为安装路径,可自行修改

    [root@localhost ~]#make
    

    编译

    [root@localhost ~]#make install
    

    安装

    3.配置inotify

    3.1.新建文件 rsync.sh 并赋予执行权限,文件名、位置随便,写入如下内容

    #!/bin/bash
    #同步接收方ip
    client=192.168.22.167
    src=/home/longzhiye/softWare/rsync/test1/
    #同步接收方配置的rsync模块名
    dest=appbackup
    #同步接收方鉴权时的用户
    user=user
    /home/longzhiye/softWare/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,move,attrib $src | while read files
    do
    /usr/bin/rsync -vzrtopgq --delete --progress --password-file=/home/longzhiye/rsyncpasswd.secrets $src $user@$client::$dest
    done
    

    3.2.修改文件执行权限

    [root@localhost ~]#chmod +x ~/rsync.sh
    

    3.3.在家目录下新建一个rsyncpasswd.secrets文件,内容为刚才新建文件中用户对应的对应密码,写入如下内容

    123
    

    修改对应的权限

    [root@localhost ~]#chmod 600 ~/rsyncpasswd.secrets
    

    4.运行rsync.sh

    [root@localhost ~]#sh ~/rsync.sh
    

    5.测试

    在/home/software/rsync/test1下新建、修改、删除文件,客户端查看是否可以自动同步所进行的操作

    至此单向实时同步已经实现,再重复设置另一端就能实现双向实时同步

    相关文章

      网友评论

          本文标题:Linux文件双向实时同步rsync + inotify

          本文链接:https://www.haomeiwen.com/subject/rhktgrtx.html