验证过:rsync+inotify实现实时同步+ service+inotifywait --exclude

    xiaoxiao2023-03-24  2

    rsync+inotify实现实时同步 通过上面的步骤可以实现rsync+inotify 实时同步,那么我想要将写好的脚本制作成service,并且开机自启动。

    编写属于自己的Linux Service命令

    Linux平台下的service程序编写指南:start \stop 1.cd /etc/init.d/

    2.新建一个sh文件:vi inotify

    #!/bin/sh #chkconfig: 2345 80 90 #description:auto_run #后面想要加载成服务是必须要写上面的两个 ouy=/home/wwwroot/inotify_ou.sh #-e 代表文件存在 if [ ! -e "${ouy}" ] ; #判断文件是否存在 then echo "Check File and Folder" exit 9 fi if [ $(ps -ef |grep -c /inotify ) -gt 0 ]; #删除之前存在的sh。 then echo "have process" kill -9 $(ps -ef|grep /inotify_ |gawk '{print $2}' |tr -s '\n' ' ') kill -9 $(ps -ef|grep /inotifywait |gawk '{print $2}' |tr -s '\n' ' ') echo "cleaned process." fi sh $ouyeel & #执行,&代表在后台执行

    Linux Shell 编程——基本语法 eg: {} 代码规范要带花括号。 -e 代表是否存在 if 语句中的空格不能漏掉,否则出错 在shell编程中,直接写命令即可。

    服务不支持 chkconfig ———没添加代码开头前两行

    根据进程名杀死进程 -kill进程名 我想要先检查是否已经进行了监听,如果监听删除原来的监听事件。 通过判断进程中是否有inotify关键字的进程的行数判断。

    linux ps命令的用法 ps是查看进程的命令。 -e 代表所有进程 -f 代表程序之间的关系

    linux grep命令 grep 使用正则表达式搜素文件 -c 行数 最后跟查找的文件名的正则表达式即: grep -c expression

    gawk 命令 gawk 用来处理文本文件中数据。 它通过自动将变量分配给每行中的每个数据元素实现这一功能。 ◆ 0 1表示文本行中的第一个数据字段 ◆ 2 n表示文本行中的第n个数据字段

    linux tr命令详解 主要是做字符串的处理,去重,替换等 -s 删除所有重复出现字符序列,只保留第一个

    格式:

    tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file

    Linux & 后台运行 & :放到后台运行。

    3.chkconfig是用于把服务加到开机自动启动列表里,只要启动它,就能自动启动,重启后永久生效

    4.chkconfig –add inotify

    5.chkconfig inotify on/off 重启后永久生效

    到此,服务就添加成功。

    另外:配置一下inotifywait监听的SH文件:

    rsync+inotify实现实时同步修改的地方是:

    ${inotify_home}/bin/inotifywait -mrq --exclude '^/home/wwwroot/default/ouyeel/tmp' --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \ 因为在同步时,tmp是缓存文件夹,所以不需要同步,故使用inotify自带的

    的exclude参数。

    inotify-tools的inotifywait工具用exclude 和 fromfile 排除指定后缀文件

    转载请注明原文地址: https://ju.6miu.com/read-1201160.html
    最新回复(0)