抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

之前有透露过,杜老师的去不图床使用三点备份,除本地备份外,还有内网存储备份,以及云上备份。而内网存储备份是通过 rsync 实现的,同步周期为每半个小时。近期打算配合 inotifywait 实现文件的实时同步!

工具介绍

rsync 是一个用于文件同步和备份的工具,inotifywait 是一种文件系统事件通知机制。

通过结合用 rsyncinotifywait,可实现文件的实时同步。

工具安装

安装 rsync 软件包:

1
sudo apt -y install rsync

安装 inotify-tools 软件包:

1
sudo apt -y install inotify-tools

服务配置

在源服务器上,创建一个 rsync 的配置文件,如/etc/rsyncd.conf,指定要同步的文件或目录及其它相关设置。

安装并配置 inotifywait,确保 inotifywait 模块已加载。使用 inotifywait 命令监视源目录事件。

编写同步脚本,使用 inotifywait 输出触发 rsync 命令,将更改的文件同步到目标服务器。

设置定时任务或者守护进程,使用 cron 或其它合适的工具定期执行同步脚本以实现实时同步。

示例脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
# 定义源目录和目标目录
SRC_DIR=/path/to/source
DEST_DIR=/path/to/destination
# rsync 的命令
RSYNC_CMD="rsync -avz --delete $SRC_DIR $DEST_DIR"
# inotifywait 的命令
INotify_CMD="inotifywait -mre modify,create,delete,move $SRC_DIR"
# 主题循环
while true; do
# 执行 inotifywait 并捕获输出
output="$(eval $INotify_CMD)"
# 如有事件发生
if [ -n "$output" ]; then
# 则执行 rsync 进行同步
echo "Syncing files..."
eval $RSYNC_CMD
fi
# 等待一段时间(例如 1 秒)
sleep 1
done

注意:这只是一个简要的概述,实际实现可能会因具体需求和环境而有所不同。在这个示例中,inotifywait 命令监视源目录修改、创建、删除、移动事件。当事件发生时,rsync 命令会执行,将源目录中的更改同步到目标目录中。

评论