麒麟系统中用Rsync+inotify可实现毫秒级文件同步:第一步配置rsync服务端并开放873端口;第二步安装inotify-tools;第三步编写含inotifywait -m的监控脚本;第四步赋权测试;第五步通过systemd设为开机自启。

您需要在麒麟操作系统中让某个本地文件夹与远程服务器或云端存储保持毫秒级变化响应,而不是依赖每分钟或每小时才检查一次的定时任务。这种需求常见于开发环境代码推送、日志目录镜像、多节点配置文件统一分发等场景,传统cron+rsync方案存在同步盲区,必须用内核级事件驱动机制解决。
用rsync+inotify实现毫秒级实时同步
这是麒麟系统原生支持、无需额外软件源、精度最高且资源占用最低的方案。inotify监听内核事件,一旦文件创建/修改/删除即刻触发rsync,延迟通常低于100ms。
第一步:确认服务端已启用rsync守护进程并开放873端口。若未配置,请先完成rsync服务端基础设置,包括创建专用用户、共享模块、密码文件及启动命令sudo rsync --daemon --config=/etc/rsyncd.conf。
第二步:在客户端安装inotify-tools。执行sudo apt install -y inotify-tools。ARM架构飞腾处理器需确认仓库已启用arm64源,否则会提示包不可用。
第三步:编写监控脚本。创建/usr/local/bin/inotify-rsync.sh,内容如下:
#!/bin/bash<br>src_dir="/home/user/project"<br>dest_module="backup"<br>dest_host="192.168.10.151"<br>password_file="/etc/rsync.password"<br><br>inotifywait -m -e create,modify,delete,move,attrib "$src_dir" | while read path action file; do<br> rsync -avz --password-file="$password_file" "$src_dir/" "backup_user@$dest_host::$dest_module"<br>done
注意:脚本中inotifywait -m参数必须保留,-m表示持续监听而非单次执行;若漏掉会导致脚本运行一次后退出,失去实时性。
第四步:赋予脚本执行权限并测试运行。sudo chmod +x /usr/local/bin/inotify-rsync.sh,然后手动执行sudo /usr/local/bin/inotify-rsync.sh。在$src_dir中新建一个文本文件,观察服务端/home/backup目录是否立即出现同名文件。
第五步:设为开机自启。创建systemd服务单元/etc/systemd/system/inotify-rsync.service,填入:
[Unit]<br>Description=Inotify + Rsync Real-time Sync<br>After=network.target<br><br>[Service]<br>Type=simple<br>User=root<br>ExecStart=/usr/local/bin/inotify-rsync.sh<br>Restart=always<br>RestartSec=5<br><br>[Install]<br>WantedBy=multi-user.target
执行sudo systemctl daemon-reload && sudo systemctl enable --now inotify-rsync.service。此时服务已后台常驻,无需人工干预。
通过Syncthing图形化设置同步频率
适合桌面版用户,尤其当需要跨Windows/macOS/Linux多平台双向同步时。Syncthing本身不设“频率”概念,而是基于文件变更自动触发,但可通过忽略规则和带宽限制间接调控同步行为强度。
方法一:APT安装后直接启用
执行sudo apt update && sudo apt install syncthing,安装完成后运行sudo systemctl enable syncthing@$(whoami).service并启动服务。打开浏览器访问http://127.0.0.1:8384进入Web管理界面。
方法二:手动安装最新版(推荐用于ARM平台)
前往https://syncthing.net/downloads/下载对应架构的tar.gz包,解压后执行sudo cp syncthing /usr/local/bin/。关键步骤是创建用户级service文件至~/.config/systemd/user/syncthing.service,其中Type=simple和Restart=on-failure两项不可省略,否则GUI关闭后进程会终止。
在Web界面添加文件夹时,点击“高级”选项卡,将“忽略模式”设为*.tmp\n*.log可避免临时文件和滚动日志频繁触发同步;勾选“仅在电池供电时暂停同步”适用于笔记本场景。
【重要前提】首次添加远程设备时,必须在双方界面手动交换十六位设备ID并确认,否则连接始终处于pending状态,所有同步操作均无效。
使用Samba挂载实现伪实时同步
当云端存储提供Samba协议接口(如私有云网关、NAS设备),挂载后所有文件操作直接作用于远程存储,无需任何同步逻辑,本质是网络文件系统映射。
打开麒麟文件管理器 → 右键“计算机” → “连接到服务器” → 服务类型选Samba → 地址栏输入192.168.10.100(替换为实际IP)→ 端口保持445 → 认证时输入云服务分配的账号密码。
成功挂载后,共享目录出现在“网络”位置下,双击即可打开。此时对该目录的任意拖拽、编辑、删除操作,均实时写入远程存储,无延迟、无缓存、无中间同步进程。
若需开机自动挂载,编辑/etc/fstab追加一行://192.168.10.100/cloud /mnt/cloud cifs username=clouduser,password=xxx,uid=1000,gid=1000,iocharset=utf8 0 0。注意password=xxx应替换为真实密码,且该行末尾0 0不可改为1 2,否则系统启动时会因网络未就绪而阻塞。


















