Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能

Linux系统通过Rsync和Inotify技术实现本地和远程数据的实时同步。Rsync用于在本地和远程之间传输数据,而Inotify则用于监控文件系统的变化,以便在数据发生变化时触发同步操作。

在Linux系统中,rsync是一个非常强大的文件同步工具,它可以通过网络将本地计算机的文件同步到远程计算机,或者将远程计算机的文件同步到本地计算机,而inotify则是一个Linux内核子系统,它监控文件系统的变化,如文件的创建、删除、修改等,并生成相应的事件通知,通过结合rsync和inotify,我们可以实现本、异地远程数据实时同步功能。

安装rsync和inotify-tools

在Linux系统中,我们首先需要安装rsync和inotify-tools,对于基于Debian的系统(如Ubuntu),可以使用以下命令安装:

Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能

sudo apt-get update
sudo apt-get install rsync inotify-tools

对于基于RHEL的系统(如CentOS),可以使用以下命令安装:

sudo yum install rsync inotify-tools

配置rsync服务

1、创建rsync用户和组

为了安全起见,我们需要创建一个专门用于rsync的用户和组,使用以下命令创建:

sudo groupadd rsync_group
sudo useradd -g rsync_group -s /sbin/nologin rsync_user

2、配置rsync服务

编辑rsync服务的配置文件/etc/rsyncd.conf,添加以下内容:

Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能

uid = rsync_user
gid = rsync_group
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
[data]
path = /path/to/your/data
read only = no
list = yes
hosts allow = 192.168.1.0/24 127.0.0.1
auth users = rsync_user
secrets file = /etc/rsyncd.secrets

path为需要同步的目录,hosts allow为允许同步的主机IP地址或网段,保存并退出。

3、创建加密密码文件

为了提高安全性,我们可以使用加密密码文件来存储rsync用户的密码,使用以下命令创建:

sudo rsync --server --daemon --config=/etc/rsyncd.conf --enable=secrets --secrets-file=/etc/rsyncd.secrets --numeric-ids --timeout=0 --ignore-errors --exclude={"*/": "*"} --include={"*/": "*"} --password-file=/etc/rsyncd.password /path/to/empty_dir > /etc/rsyncd.password

这将在/etc/rsyncd.password文件中生成加密的密码,请确保只有具有读取权限的用户才能访问此文件。

配置inotify监控

1、创建监控脚本monitor.sh

Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能

!/bin/bash
while true; do
  inotifywait -e create,delete,modify /path/to/your/data | while read path event file; do
    rsync -avz --delete /path/to/your/data@remote_host:/path/to/remote_data --password-file=/etc/rsyncd.password --exclude={"*/": "*"} --include={"*/": "*"} --progress --rsh="ssh -p 22 -l rsync_user" &> /dev/null &
  done & disown %%
  sleep 5  每5秒检查一次变化,可以根据需要调整时间间隔
done

remote_host为远程主机的IP地址或域名,remote_data为远程主机上需要同步的目录,保存并退出。

2、为脚本添加可执行权限:

chmod +x monitor.sh

启动rsync服务和监控脚本

1、启动rsync服务:

sudo rsync --daemon --config=/etc/rsyncd.conf --enable=secrets --secrets-file=/etc/rsyncd.secrets --numeric-ids --timeout=0 --ignore-errors --exclude={"*/": "*"} --include={"*/": "*"} --password-file=/etc/rsyncd.password /path/to/empty_dir > /dev/null 2>&1 &

2、启动监控脚本:

nohup ./monitor.sh & disown %%  使用nohup命令使脚本在后台运行,即使关闭终端也不会停止运行。& disown %%表示将进程从当前shell中分离,使其在后台运行。&符号表示将命令放入后台执行,disown %%表示将最后一个后台进程从当前shell中分离。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/323500.html

(0)
K-seoK-seoSEO优化员
上一篇 2024年2月19日 01:41
下一篇 2024年2月19日 01:42

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入