虚拟机环境下inotify服务器搭建+inotify环境注

优采云 发布时间: 2021-07-14 19:40

  虚拟机环境下inotify服务器搭建+inotify环境注

  注意:本文延续上一章环境下的流程配置

  背景:随着时代的发展,手动同步文件的功能已不再适合高效的现代企业。

  rsync 的限制:

  1、大文件(百万、千万)同步需要时间。

  2、无法实时检测。 rsync 基于 Linux 守护进程触发同步。这个过程有很大的时间差。出现问题时可能无法完全恢复数据。

  3、Synchronization 比较笨重,所有同步一次,不会自动只同步更新点。

  所以rsync+inotify的实现可以更加高效,可以自动实现文件的实时同步,可以大大提高工作效率,有效减少人工错误。

  inotify 介绍

  Inotify 是 Linux 的一项功能,可监控文件系统操作,例如读取、写入和创建。 Inotify 响应迅速,使用起来非常简单,并且比 cron 任务的繁忙轮询效率更高。了解如何将 inotify 集成到您的应用程序中,并发现一组可用于进一步自动化系统治理的命令行工具。

  是一款非常不错的辅助工具软件。稍后本博客将有更多与inotify集成的功能!

  一、需求环境

  Ceotos 6.5 kernel2.6.32-431.el6.x86_64

  虚拟机环境下

  inotify server:192.168.0.244/24(即主机B)

  备用服务器:192.168.0.144/24(即主机A)

  rsync-3.1.2.tar.gz

  inotify-tools-3.14.tar.gz

  二、搭建rsync+inotify环境

  注意:在原来的rsync服务器上,inotify服务器:192.168.0.244/24 开始构建

  1、先安装inotify包

  wget

  tar zxf inotify-tools-3.14.tar.gz

  cd inotify-tools-3.14

  ./configure --prefix=/usr/local/inotify-3.14

  make && make install

  2、创建监控脚本inotify.sh

  #!/bin/bash

#para

host01=192.168.0.144 #rsync服务器地址

src=/backup #本地监控的目录

dst=backup #rsync服务器的模块名称

user=nowview #rsync服务器的虚拟用户

rsync_passfile=/etc/rsyncd.password #本地调用rsync服务的密码文件

inotify_home=/usr/local/inotify-3.14 #inotify的安装目录

#judge

if [ ! -e "$src" ] \

|| [ ! -e "${rsync_passfile}" ] \

|| [ ! -e "${inotify_home}/bin/inotifywait" ] \

|| [ ! -e "/usr/bin/rsync" ];

then

echo "Check File and Folder"

exit 9

fi

${inotify_home}/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e close_write,delete,create,attrib $src \

| while read file

do

# rsync -avzP --delete --timeout=100 --password-file=${rsync_passfile} $src $user@$host01::$dst >/dev/null 2>&1

cd $src && rsync -aruz -R --delete ./ --timeout=100 $user@$host01::$dst --password-file=${rsync_passfile} >/dev/null 2>&1

done

exit 0

  脚本已创建并在后台运行。 (启动就可以放到rc.local文件中)

  sh inotify.sh &

  查看年度进度

  [root@主机B-244 /]# ps -ef |grep inotify

root 1793 1 0 17:53 ? 00:00:00 sh inotify.sh

root 1806 1793 0 17:53 ? 00:00:00 /usr/local/inotify-3.14/bin/inotifywait -mrq --timefmt %d/%m/%y %H:%M --format %T %w%f -e close_write,delete,create,attrib /backup

root 1807 1793 0 17:53 ? 00:00:00 sh inotify.sh

root 2032 1843 0 17:58 pts/0 00:00:00 grep --color inotify

  inotify的配置基本如上。更多函数参数请参考上面的inotify文档网址。

  三、测试

  现在,你可以在inotify服务器上看到它

  [root@主机B-244 backup]# pwd

/backup

[root@主机B-244 backup]# ls

1 108 117 126 135 144 153 162 171 180 19 199 27 36 45 54 63 72 81 90 asound.conf krb5.conf pm-utils-hd-apm-restore.conf

10 109 118 127 136 145 154 163 172 181 190 2 28 37 46 55 64 73 82 91 cgconfig.conf ld.so.conf request-key.conf

100 11 119 128 137 146 155 164 173 182 191 20 29 38 47 56 65 74 83 92 cgrules.conf libaudit.conf resolv.conf

101 110 12 129 138 147 156 165 174 183 192 200 3 39 48 57 66 75 84 93 cgsnapshot_blacklist.conf libuser.conf rsyslog.conf

102 111 120 13 139 148 157 166 175 184 193 21 30 4 49 58 67 76 85 94 dracut.conf logrotate.conf sestatus.conf

103 112 121 130 14 149 158 167 176 185 194 22 31 40 5 59 68 77 86 95 gai.conf mke2fs.conf sudo.conf

104 113 122 131 140 15 159 168 177 186 195 23 32 41 50 6 69 78 87 96 grub.conf mtools.conf sudo-ldap.conf

105 114 123 132 141 150 16 169 178 187 196 24 33 42 51 60 7 79 88 97 gssapi_mech.conf nfsmount.conf sysctl.conf

106 115 124 133 142 151 160 17 179 188 197 25 34 43 52 61 70 8 89 98 host.conf nsswitch.conf xinetd.conf

107 116 125 134 143 152 161 170 18 189 198 26 35 44 53 62 71 80 9 99 idmapd.conf ntp.conf yum.conf

  我在根目录下创建了备份目录,立即创建了上面的内容

  因为inotify脚本已经在后台运行,实时监控这个目录的变化

  接下来到备份服务器(即原rsync服务器)查看原rsync模块bauckup的/home/backup路径下的情况

  [root@主机A-144 backup]# pwd

/home/backup

[root@主机A-144 backup]# ll

total 0

[root@主机A-144 backup]#

  目前还有同步,需要时间

  等待...

  再看

  [root@主机A-144 backup]# ls

1 108 117 126 135 144 153 162 171 180 19 199 27 36 45 54 63 72 81 90 asound.conf krb5.conf pm-utils-hd-apm-restore.conf

10 109 118 127 136 145 154 163 172 181 190 2 28 37 46 55 64 73 82 91 cgconfig.conf ld.so.conf request-key.conf

100 11 119 128 137 146 155 164 173 182 191 20 29 38 47 56 65 74 83 92 cgrules.conf libaudit.conf resolv.conf

101 110 12 129 138 147 156 165 174 183 192 200 3 39 48 57 66 75 84 93 cgsnapshot_blacklist.conf libuser.conf rsyslog.conf

102 111 120 13 139 148 157 166 175 184 193 21 30 4 49 58 67 76 85 94 dracut.conf logrotate.conf sestatus.conf

103 112 121 130 14 149 158 167 176 185 194 22 31 40 5 59 68 77 86 95 gai.conf mke2fs.conf sudo.conf

104 113 122 131 140 15 159 168 177 186 195 23 32 41 50 6 69 78 87 96 grub.conf mtools.conf sudo-ldap.conf

105 114 123 132 141 150 16 169 178 187 196 24 33 42 51 60 7 79 88 97 gssapi_mech.conf nfsmount.conf sysctl.conf

106 115 124 133 142 151 160 17 179 188 197 25 34 43 52 61 70 8 89 98 host.conf nsswitch.conf xinetd.conf

107 116 125 134 143 152 161 170 18 189 198 26 35 44 53 62 71 80 9 99 idmapd.conf ntp.conf yum.conf

[root@主机A-144 backup]# pwd

/home/backup

  这些内容已同步。

  四、Summary

  关于这个对inotify.sh的监控,触发了问题。

  目前,我的测试得出的结论是这样的。它的实时同步是在被监控目录/后台有文件或生成任何东西时建立的,脚本会立即触发同步更新。当然,它的同步时间会根据文件大小、网络等因素而有所不同。

  一般来说,如果inotify服务器的目录发生变化,那么rsync服务器的目录也随之变化(同步)​​,反过来是不可能的。然而,即使这样也满足了现代企业的日常需求。

  CentOS 6.5 rsync+inotify 实现数据实时同步备份

  rsync+inotify 实现数据实时同步

  详解rsync+inotify实现服务器间文件实时同步

  Rsync结合Inotify实时同步配置

  RSync 实现数据备份

  inotify+rsync 实现数据实时同步

  rsync+inotify 实现数据实时备份

  rsync+inotify 实现数据自动同步

  使用rsync实现实时数据同步备份

  Rsync的详细介绍:请点击这里

  Rsync 下载链接:请点击这里

  本文将永久更新链接地址:

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线