共计 5145 个字符,预计需要花费 13 分钟才能阅读完成。
注:本文接着上一章 <Linux 下配置 Rsync 实现文件同步 > 的环境下进程配置的 http://www.linuxidc.com/Linux/2017-12/149183.htm
背景 : 随着时代的发展,手工的同步文件的功能已经不适合为高效的现代化企业的服务了。
rsync 的局限性:
1、对于大的文件(百万级、千万级的)同步耗时。
2、不能实时的检测,rsync 是根据 Linux 守护进程的方式进行触发同步的,这过程有很大的时间差。导致出现问题的时候可能无法完全的恢复数据。
3、同步笨重,同步一次就是全部同步的了,不会自动只同步更新的那点。
所以 rsync+inotify 的实现可以更加高效,自动化的实现文件的实时同步,能够大大的提高工作的效率,有效的减少手工操作的失误。
inotify 的简介
Inotify 是一个 Linux 特性,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。学习如何将 inotify 集成到您的应用程序中,并发现一组可用来进一步自动化系统治理的命令行工具。
是一个非常好的辅助性工具软件,后期本博客还会有更加多与 inotify 嵌合的功能发布!
一、需求环境
Ceotos 6.5 内核 2.6.32-431.el6.x86_64
虚拟机环境下
inotify 服务器: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 http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure –prefix=/usr/local/inotify-3.14
make && make install
2、创建监控脚本 i notify.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
我已经在根目录下创建了一个 backup 目录,立刻创建了如上内容
由于 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
这些内容已经同步过来了。
四、总结
关于这个 inotify.sh 它的这个监控,触发问题。
目前根据我的测试得出的结论是这样的,它的实时同步是建立在当这个被监控的目录 /back 一旦生成有文件或者生成任何的东西的情况下,这个脚本就会立刻触发同步更新。当然会根据文件大小、网络以及其他的因素,它的同步会有所时间的差别。
总的来说是 inotify 服务器目录变化,那么 rsync 服务器的目录就跟着变化(同步),反过来就不可以了。不过,即便这样已经是满足了现代企业日常的需求了。
CentOS 6.5 rsync+inotify 实现数据实时同步备份 http://www.linuxidc.com/Linux/2016-11/137655.htm
rsync+inotify 实现数据的实时同步 http://www.linuxidc.com/Linux/2017-01/139778.htm
rsync+inotify 实现服务器之间文件实时同步详解 http://www.linuxidc.com/Linux/2016-11/137659.htm
Rsync 结合 Inotify 实时同步配置 http://www.linuxidc.com/Linux/2017-02/140877.htm
RSync 实现数据备份 http://www.linuxidc.com/Linux/2017-06/144913.htm
inotify+rsync 实现数据实时同步 http://www.linuxidc.com/Linux/2017-10/147901.htm
rsync+inotify 实现数据的实时备份 http://www.linuxidc.com/Linux/2016-11/137630.htm
rsync+inotify 实现数据自动同步 http://www.linuxidc.com/Linux/2017-03/141717.htm
使用 rsync 实现数据实时同步备份 http://www.linuxidc.com/Linux/2017-05/143462.htm
Rsync 的详细介绍:请点这里
Rsync 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149355.htm