You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现/srv/web.config与/var/www/web.config自动同步?

嘿,这个需求其实挺常见的,我给你整理了几个实用的实现方案,你可以根据自己的实际场景来选:

方法1:用inotify-tools实现实时监控同步

这是最适合实时自动同步的方案,通过监控源文件的变化事件,触发同步操作。

  1. 先安装inotify-tools工具:

    • Debian/Ubuntu系统:sudo apt install inotify-tools
    • CentOS/RHEL系统:sudo yum install inotify-tools
  2. 编写一个同步脚本(比如命名为sync_webconfig.sh):

#!/bin/bash
SOURCE="/srv/web.config"
DEST="/var/www/web.config"

# 持续监控源文件的修改、创建、移动、删除事件
inotifywait -m -e modify,create,move,delete "$SOURCE" | while read -r dir events file; do
    # 用rsync同步,比cp更高效,还能保留权限
    rsync -avz "$SOURCE" "$DEST"
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 已完成同步:$SOURCE → $DEST"
done
  1. 给脚本添加执行权限:chmod +x sync_webconfig.sh

  2. 让脚本后台运行并开机自启:
    推荐做成systemd服务更可靠,创建/etc/systemd/system/webconfig-sync.service文件:

[Unit]
Description=Auto sync web.config from /srv to /var/www
After=network.target

[Service]
Type=simple
ExecStart=/path/to/sync_webconfig.sh  # 替换成你的脚本实际路径
Restart=always
User=root

[Install]
WantedBy=multi-user.target

然后启用服务:
sudo systemctl daemon-reload && sudo systemctl enable --now webconfig-sync.service

方法2:用硬链接实现“实时同步”(轻量但有局限)

如果两个文件在同一个文件系统下,硬链接是个极轻量的选择——因为硬链接指向同一个inode,修改其中一个文件,另一个会立刻同步变化。

执行命令创建硬链接:
sudo ln /srv/web.config /var/www/web.config

注意:这个方案有个局限——如果源文件被整体替换(比如用cp命令覆盖生成新文件),硬链接会失效,因为新文件是一个全新的inode。所以它只适合“仅修改文件内容、不会整体替换文件”的场景。

方法3:rsync加定时任务(适合非实时需求)

如果对同步延迟不敏感(比如允许几分钟的延迟),用定时任务就足够简单:

  1. 编辑crontab定时任务:crontab -e
  2. 添加一行配置(每分钟同步一次):
    * * * * * rsync -avz /srv/web.config /var/www/web.config > /dev/null 2>&1

你也可以调整时间规则,比如每5分钟同步一次:*/5 * * * * ...

内容的提问来源于stack exchange,提问作者aayush gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:49:27