2

我有一个脚本,它应该将管理员用户上传到我们网站的照片复制到另外两个后端服务器。为此,它执行以下操作:

while true; do                                                                                                                                                                                                                                     
    inotifywait -e create "$TRANSFER_FILES" && \                                                                                                                                                                                               
            sleep 20 && \                                                                                                                                                                                               
            copy_files "$SSH_SERVER_1" "$REMOTE_DIR_1"  && \                                                                                                                                                                                               
            copy_files "$SSH_SERVER_2" "$REMOTE_DIR_2"
    sleep 2
done

sleep 20 是给 apache 时间来调整上传图像的大小。

问题:

如果我在 $TRANSFER_FILES 目录(位于本地文件系统上)中创建一个文件,无论是作为 root 用户还是 apache 用户,使用 touch 或 cat 或其他方式,inotifywait 都会收到 CREATE eventc 并调用 copy_files 函数(包装 rsync)。但是,当 apache 进程创建文件时,什么也没有发生。

4

1 回答 1

1

不能直接回答您的问题,但您应该考虑使用lsyncd。它完全符合您的要求:它通过 inotify 等待,然后运行同步(默认情况下由 rsync)。它是独立的守护进程,经过良好测试。

于 2012-12-29T09:40:24.853 回答