Linux系统通过Rsync和Inotify技术实现本地和远程数据的实时同步。Rsync用于在本地和远程之间传输数据,而Inotify则用于监控文件系统的变化,以便在数据发生变化时触发同步操作。
在Linux系统中,rsync是一个非常强大的文件同步工具,它可以通过网络将本地计算机的文件同步到远程计算机,或者将远程计算机的文件同步到本地计算机,而inotify则是一个Linux内核子系统,它监控文件系统的变化,如文件的创建、删除、修改等,并生成相应的事件通知,通过结合rsync和inotify,我们可以实现本、异地远程数据实时同步功能。
安装rsync和inotify-tools
在Linux系统中,我们首先需要安装rsync和inotify-tools,对于基于Debian的系统(如Ubuntu),可以使用以下命令安装:
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
,添加以下内容:
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
:
!/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