{"id":162,"date":"2026-01-23T01:38:19","date_gmt":"2026-01-23T01:38:19","guid":{"rendered":"https:\/\/blog.gpst.net.cn:4008\/?p=162"},"modified":"2026-01-28T06:24:15","modified_gmt":"2026-01-28T06:24:15","slug":"%e5%9f%ba%e4%ba%8e-rsyncd-inotify-tools-sersync-%e7%9a%84%e6%96%87%e4%bb%b6%e5%ae%9e%e6%97%b6%e5%90%8c%e6%ad%a5","status":"publish","type":"post","link":"https:\/\/opshub.com.cn\/?p=162","title":{"rendered":"\u57fa\u4e8e rsyncd + inotify-tools + sersync \u7684\u6587\u4ef6\u5b9e\u65f6\u540c\u6b65"},"content":{"rendered":"\n<p><strong>\u65b9\u6848<\/strong>\uff1a\u63a5\u6536\u7aef\u914d\u7f6e rsync \u5b88\u62a4\u8fdb\u7a0b\uff0c\u53d1\u9001\u7aef\u901a\u8fc7 inotify \u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff0c\u501f\u52a9 sersync \u8c03\u7528 rsync \u5b9e\u65f6\u540c\u6b65\u5230\u63a5\u6536\u7aef\uff0810.40.0.2\uff09<\/p>\n\n\n\n<p>\u6574\u4e2a\u65b9\u6848\u7684\u6838\u5fc3\u662f\u5229\u7528 inotify \u5b9e\u65f6\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff0csersync \u66ff\u4ee3\u4f20\u7edf\u7684 inotify+rsync \u811a\u672c\uff0c\u66f4\u7a33\u5b9a\u4e14\u652f\u6301\u5931\u8d25\u91cd\u4f20\uff0c\u9002\u5408\u751f\u4ea7\u73af\u5883\u7684\u6587\u4ef6\u5b9e\u65f6\u540c\u6b65\u9700\u6c42\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u4e00\u3001\u6574\u4f53\u67b6\u6784\u8bf4\u660e<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u63a5\u6536\u7aef<\/strong>\uff1a\u8fd0\u884c rsyncd \u5b88\u62a4\u8fdb\u7a0b\uff0c\u5f00\u653e\u6307\u5b9a\u6a21\u5757\uff08data_oafile\/data_erp_uploadfile\uff09\uff0c\u4ec5\u5141\u8bb8 10.40.0.0\/24 \u7f51\u6bb5\u8bbf\u95ee\uff0c\u9700\u5bc6\u7801\u8ba4\u8bc1\uff1b<\/li>\n\n\n\n<li><strong>\u53d1\u9001\u7aef<\/strong>\uff1a\u5b89\u88c5 inotify-tools\uff08\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff09+ sersync\uff08\u89e3\u6790\u76d1\u63a7\u4e8b\u4ef6\u5e76\u8c03\u7528 rsync \u540c\u6b65\uff09\uff0c\u76d1\u63a7 \/data\/erp_uploadfile \u76ee\u5f55\uff0c\u5b9e\u65f6\u540c\u6b65\u5230\u63a5\u6536\u7aef\u7684 data_erp_uploadfile \u6a21\u5757\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u4e8c\u3001\u63a5\u6536\u7aef\uff0810.40.0.2\uff09\u5b8c\u6574\u914d\u7f6e\u6b65\u9aa4<\/p>\n\n\n\n<p>1\u3001\u914d\u7f6e rsyncd.conf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;\/etc\/rsyncd.conf &lt;&lt;EOF\nuid = root\ngid = root\nuse chroot = no\nlog file = \/var\/log\/rsyncd.log  # \u65e5\u5fd7\u6587\u4ef6\uff08\u81ea\u52a8\u521b\u5efa\uff09\npid file = \/var\/run\/rsyncd.pid  # PID\u6587\u4ef6\nlock file = \/var\/run\/rsync.lock # \u8865\u5145\u9501\u6587\u4ef6\uff08\u9632\u6b62\u8fdb\u7a0b\u51b2\u7a81\uff09\nmax connections = 36000        # \u6700\u5927\u8fde\u63a5\u6570\uff08\u6839\u636e\u670d\u52a1\u5668\u6027\u80fd\u8c03\u6574\uff09\nignore errors = yes             # \u5ffd\u7565\u540c\u6b65\u4e2d\u7684\u5c0f\u9519\u8bef\nread only = no                  # \u5141\u8bb8\u5199\u5165\uff08\u63a5\u6536\u7aef\u9700\u8981\u53ef\u5199\uff09\ndont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  # \u5df2\u538b\u7f29\u6587\u4ef6\u4e0d\u91cd\u590d\u538b\u7f29\ntimeout = 1440                  # \u8d85\u65f6\u65f6\u95f4\uff08\u5206\u949f\uff09\nexclude = lost+found\/           # \u6392\u9664\u76ee\u5f55\nhosts allow = 10.40.0.0\/24      # \u4ec5\u5141\u8bb8\u8be5\u7f51\u6bb5\u8bbf\u95ee\uff08\u5b89\u5168\uff09\nhosts deny = *                  # \u62d2\u7edd\u5176\u4ed6\u6240\u6709\u7f51\u6bb5\nauth users = rsync              # \u8ba4\u8bc1\u7528\u6237\uff08\u975e\u7cfb\u7edf\u7528\u6237\uff09\nsecrets file = \/etc\/rsyncd.secrets  # \u5bc6\u7801\u6587\u4ef6\u8def\u5f84\n\n# \u540c\u6b65\u6a21\u57571\uff1adata_oafile\n&#091;data_oafile]\ncomment = oafile sync module\npath = \/data\/oafile            # \u540c\u6b65\u76ee\u5f55\uff08\u9700\u63d0\u524d\u521b\u5efa\uff09\nlist = no                      # \u4e0d\u5141\u8bb8\u5217\u51fa\u6a21\u5757\u5185\u5bb9\uff08\u5b89\u5168\uff09\nauth users = rsync             # \u8be5\u6a21\u5757\u4f7f\u7528\u7684\u8ba4\u8bc1\u7528\u6237\n\n# \u540c\u6b65\u6a21\u57572\uff1adata_erp_uploadfile\n&#091;data_erp_uploadfile]\ncomment = erp upload file sync module\npath = \/data\/erp_uploadfile    # \u540c\u6b65\u76ee\u5f55\uff08\u9700\u63d0\u524d\u521b\u5efa\uff09\nlist = no\nauth users = rsync\nEOF<\/code><\/pre>\n\n\n\n<p>2\u3001\u521b\u5efa\u5bc6\u7801\u6587\u4ef6\u5e76\u8bbe\u7f6e\u6743\u9650<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u521b\u5efa\u5bc6\u7801\u6587\u4ef6\uff08rsync\u4e3a\u8ba4\u8bc1\u7528\u6237\uff0c\u5bc6\u7801\u81ea\u5b9a\u4e49\uff0c\u5982123456\uff09\necho \"rsync:123456\" &gt;\/etc\/rsyncd.secrets\n\n# \u8bbe\u7f6e\u6743\u9650\uff08\u5173\u952e\uff01\u5fc5\u987b600\uff0c\u5426\u5219rsyncd\u4f1a\u62a5\u9519\uff09\nchmod 600 \/etc\/rsyncd.secrets<\/code><\/pre>\n\n\n\n<p>3\u3001\u521b\u5efa\u540c\u6b65\u76ee\u5f55\u5e76\u8bbe\u7f6e\u6743\u9650<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u521b\u5efa\u6a21\u5757\u5bf9\u5e94\u7684\u76ee\u5f55\nmkdir -p \/data\/oafile \/data\/erp_uploadfile\n\n# \u8bbe\u7f6e\u6743\u9650\uff08root\/root\uff0c\u4e0ersyncd.conf\u7684uid\/gid\u4e00\u81f4\uff09\nchown -R root:root \/data\/oafile \/data\/erp_uploadfile\nchmod -R 755 \/data\/oafile \/data\/erp_uploadfile<\/code><\/pre>\n\n\n\n<p>4\u3001\u542f\u52a8rsyncd\u5e76\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u542f\u52a8rsyncd\uff08CentOS 7\uff09\nsystemctl start rsyncd\n# \u8bbe\u7f6e\u5f00\u673a\u81ea\u542f\nsystemctl enable rsyncd\n# \u9a8c\u8bc1\u662f\u5426\u542f\u52a8\u6210\u529f\uff08\u76d1\u542c873\u7aef\u53e3\uff09\nnetstat -tnlp | grep rsync<\/code><\/pre>\n\n\n\n<p>5\u3001\u5173\u95ed\u9632\u706b\u5899\u3001SELinux\uff08\u6216\u5f00\u653e873\u7aef\u53e3\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4e34\u65f6\u5173\u95ed\u9632\u706b\u5899\uff08\u6d4b\u8bd5\u7528\uff09\nsystemctl stop firewalld\nsystemctl disable firewalld\n\n# \u4e34\u65f6\u5173\u95edSELinux\uff08\u6d4b\u8bd5\u7528\uff09\nsetenforce 0\nsed -i 's\/^SELINUX=enforcing\/SELINUX=disabled\/' \/etc\/selinux\/config\n\n# \u751f\u4ea7\u73af\u5883\u63a8\u8350\u5f00\u653e873\u7aef\u53e3\uff08\u4e0d\u5173\u95ed\u9632\u706b\u5899\uff09\nfirewall-cmd --add-port=873\/tcp --permanent\nfirewall-cmd --reload<\/code><\/pre>\n\n\n\n<p>\u4e09\u3001\u53d1\u9001\u7aef\u5b8c\u6574\u914d\u7f6e\u6b65\u9aa4<\/p>\n\n\n\n<p>1\u3001\u5b89\u88c5\u4f9d\u8d56\uff08\u7f16\u8bd1 inotify-tools \u9700\u8981\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>yum install -y gcc gcc-c++ make libtool<\/code><\/pre>\n\n\n\n<p>2\u3001\u5b89\u88c5 inotify-tools\uff08\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u521b\u5efa\u5b89\u88c5\u76ee\u5f55\nmkdir -p \/app\/local\ncd \/app\/local\n\n# \u4e0b\u8f7d inotify-tools\uff08\u66ff\u6362\u4e3a\u56fd\u5185\u955c\u50cf\uff09\nwget https:\/\/nchc.dl.sourceforge.net\/project\/inotify-tools\/inotify-tools\/3.14\/inotify-tools-3.14.tar.gz\n\n# \u89e3\u538b\u7f16\u8bd1\u5b89\u88c5\ntar zxf inotify-tools-3.14.tar.gz\ncd inotify-tools-3.14\n.\/configure --prefix=\/app\/local\/inotify\nmake &amp;&amp; make install\n\n# \u6dfb\u52a0\u73af\u5883\u53d8\u91cf\uff08\u8ba9\u7cfb\u7edf\u8bc6\u522binotify\u547d\u4ee4\uff09\necho \"export PATH=\/app\/local\/inotify\/bin:\\$PATH\" &gt;&gt; \/etc\/profile\nsource \/etc\/profile\n\n# \u9a8c\u8bc1\u5b89\u88c5\ninotifywait -V  # \u8f93\u51fa\u7248\u672c\u53f7\u5219\u6210\u529f<\/code><\/pre>\n\n\n\n<p>3\u3001\u5b89\u88c5 sersync\uff08\u89e3\u6790\u76d1\u63a7\u4e8b\u4ef6\u5e76\u540c\u6b65\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/app\/local\n\n# \u4e0b\u8f7d sersync\uff0864\u4f4d\uff09\nwget https:\/\/github.com\/wsgzao\/sersync\/raw\/master\/sersync2.5.4_64bit_binary_stable_final.tar.gz\n\n# \u89e3\u538b\u5e76\u79fb\u52a8\u76ee\u5f55\ntar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz\nmv GNU-Linux-x86\/ \/app\/local\/sersync\n\n# \u9a8c\u8bc1\u5b89\u88c5\n\/app\/local\/sersync\/sersync2 -h  # \u8f93\u51fa\u5e2e\u52a9\u4fe1\u606f\u5219\u6210\u529f<\/code><\/pre>\n\n\n\n<p>4\u3001\u914d\u7f6e sersync\uff08confxml.xml\uff09<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;\/app\/local\/sersync\/confxml.xml &lt;&lt;EOF\n&lt;?xml version=\"1.0\" encoding=\"ISO-8859-1\"?&gt;\n&lt;head version=\"2.5\"&gt;\n    &lt;host hostip=\"localhost\" port=\"8008\"&gt;&lt;\/host&gt;\n    &lt;debug start=\"false\"\/&gt;  &lt;!-- \u8c03\u8bd5\u6a21\u5f0f\uff1afalse\u5173\u95ed\uff0ctrue\u5f00\u542f\uff08\u6d4b\u8bd5\u7528\uff09 --&gt;\n    &lt;fileSystem xfs=\"false\"\/&gt;\n    &lt;filter start=\"false\"&gt;  &lt;!-- \u8fc7\u6ee4\u89c4\u5219\uff1afalse\u5173\u95ed\uff0ctrue\u5f00\u542f --&gt;\n        &lt;exclude expression=\"(.*)\\.svn\"&gt;&lt;\/exclude&gt;\n        &lt;exclude expression=\"(.*)\\.gz\"&gt;&lt;\/exclude&gt;\n        &lt;exclude expression=\"^info\/*\"&gt;&lt;\/exclude&gt;\n        &lt;exclude expression=\"^static\/*\"&gt;&lt;\/exclude&gt;\n    &lt;\/filter&gt;\n    &lt;inotify&gt;  &lt;!-- \u76d1\u63a7\u7684\u6587\u4ef6\u4e8b\u4ef6\uff08\u5168\u90e8\u5f00\u542f\uff09 --&gt;\n        &lt;delete start=\"false\"\/&gt;  &lt;!-- \u6ce8\u610f\uff1a\u5173\u95ed\u5220\u9664\u540c\u6b65\uff08\u9632\u6b62\u8bef\u5220\u63a5\u6536\u7aef\u6587\u4ef6\uff09\uff0c\u6839\u636e\u9700\u6c42\u8c03\u6574 --&gt;\n        &lt;createFolder start=\"true\"\/&gt;  &lt;!-- \u76d1\u63a7\u521b\u5efa\u76ee\u5f55 --&gt;\n        &lt;createFile start=\"true\"\/&gt;    &lt;!-- \u76d1\u63a7\u521b\u5efa\u6587\u4ef6 --&gt;\n        &lt;closeWrite start=\"true\"\/&gt;    &lt;!-- \u76d1\u63a7\u6587\u4ef6\u5199\u5165\u5b8c\u6210 --&gt;\n        &lt;moveFrom start=\"true\"\/&gt;      &lt;!-- \u76d1\u63a7\u6587\u4ef6\u79fb\u52a8\u51fa\u76ee\u5f55 --&gt;\n        &lt;moveTo start=\"true\"\/&gt;        &lt;!-- \u76d1\u63a7\u6587\u4ef6\u79fb\u52a8\u8fdb\u76ee\u5f55 --&gt;\n        &lt;attrib start=\"true\"\/&gt;        &lt;!-- \u76d1\u63a7\u6587\u4ef6\u5c5e\u6027\u53d8\u5316\uff08\u6743\u9650\/\u65f6\u95f4\u7b49\uff09 --&gt;\n        &lt;modify start=\"true\"\/&gt;        &lt;!-- \u76d1\u63a7\u6587\u4ef6\u5185\u5bb9\u4fee\u6539 --&gt;\n    &lt;\/inotify&gt;\n\n    &lt;sersync&gt;\n        &lt;!-- \u76d1\u63a7\u7684\u672c\u5730\u76ee\u5f55\uff1a\u4e0e\u63a5\u6536\u7aef\u6a21\u5757\u5bf9\u5e94 --&gt;\n        &lt;localpath watch=\"\/data\/erp_uploadfile\"&gt;\n            &lt;!-- \u63a5\u6536\u7aef\u914d\u7f6e\uff1aip=\u63a5\u6536\u7aefIP\uff0cname=\u63a5\u6536\u7aefrsync\u6a21\u5757\u540d --&gt;\n            &lt;remote ip=\"10.40.0.2\" name=\"data_erp_uploadfile\"\/&gt;\n        &lt;\/localpath&gt;\n        &lt;rsync&gt;\n            &lt;!-- rsync\u540c\u6b65\u53c2\u6570\uff1a-artuz \u5305\u542b\u5f52\u6863\/\u9012\u5f52\/\u4fdd\u6301\u6743\u9650\/\u538b\u7f29\/\u4f20\u8f93\u8fdb\u5ea6 --&gt;\n            &lt;commonParams params=\"-artuz\"\/&gt;\n            &lt;!-- \u8ba4\u8bc1\u914d\u7f6e\uff1astart=true\u5f00\u542f\u8ba4\u8bc1\uff0cusers=\u63a5\u6536\u7aef\u7684auth users\uff0cpasswordfile=\u53d1\u9001\u7aef\u5bc6\u7801\u6587\u4ef6 --&gt;\n            &lt;auth start=\"true\" users=\"rsync\" passwordfile=\"\/etc\/rsync.secrets\"\/&gt;\n            &lt;!-- \u81ea\u5b9a\u4e49\u7aef\u53e3\uff1afalse\u4f7f\u7528\u9ed8\u8ba4873\uff0ctrue\u5219\u6307\u5b9a\u7aef\u53e3\uff08\u9700\u63a5\u6536\u7aef\u4e5f\u6539\uff09 --&gt;\n            &lt;userDefinedPort start=\"false\" port=\"874\"\/&gt;\n            &lt;!-- \u8d85\u65f6\u65f6\u95f4\uff1afalse\u5173\u95ed\uff0ctrue\u6307\u5b9a\u65f6\u95f4 --&gt;\n            &lt;timeout start=\"false\" time=\"100\"\/&gt;\n            &lt;!-- SSH\u540c\u6b65\uff1afalse\u4f7f\u7528rsyncd\uff0ctrue\u4f7f\u7528ssh\uff08\u9700\u514d\u5bc6\uff09 --&gt;\n            &lt;ssh start=\"false\"\/&gt;\n        &lt;\/rsync&gt;\n        &lt;!-- \u5931\u8d25\u91cd\u4f20\uff1a\u5c1d\u8bd53\u6b21\uff0c\u95f4\u969410\u79d2 --&gt;\n        &lt;failLog path=\"\/app\/local\/sersync\/rsync_fail.log\" timeToExecute=\"10\" start=\"true\"\/&gt;\n        &lt;!-- \u5b9a\u65f6\u5168\u91cf\u540c\u6b65\uff1afalse\u5173\u95ed\uff0ctrue\u5219\u6bcf600\u79d2\u540c\u6b65\u4e00\u6b21\uff08\u9632\u6b62\u589e\u91cf\u540c\u6b65\u9057\u6f0f\uff09 --&gt;\n        &lt;crontab start=\"false\" schedule=\"600\"&gt;\n            &lt;crontabfilter start=\"false\"&gt;\n                &lt;exclude expression=\"*.php\"&gt;&lt;\/exclude&gt;\n            &lt;\/crontabfilter&gt;\n        &lt;\/crontab&gt;\n        &lt;!-- \u8fdc\u7a0bshell\u540c\u6b65\uff1a\u5173\u95ed --&gt;\n        &lt;plugin start=\"false\" name=\"command\"\/&gt;\n    &lt;\/sersync&gt;\n\n    &lt;plugin name=\"command\"&gt;\n        &lt;param prefix=\"\/bin\/sh\" suffix=\"\" ignoreError=\"true\"\/&gt;\n        &lt;filter start=\"false\"&gt;\n            &lt;include expression=\"(.*)\\.php\"\/&gt;\n            &lt;include expression=\"(.*)\\.sh\"\/&gt;\n        &lt;\/filter&gt;\n    &lt;\/plugin&gt;\n\n    &lt;plugin name=\"socket\"&gt;\n        &lt;localpath watch=\"\/opt\/tongbu\"&gt;\n            &lt;deshost ip=\"192.168.138.20\" port=\"8009\"\/&gt;\n        &lt;\/localpath&gt;\n    &lt;\/plugin&gt;\n\n    &lt;plugin name=\"refreshCDN\"&gt;\n        &lt;localpath watch=\"\/data0\/htdocs\/cms.xoyo.com\/site\/\"&gt;\n            &lt;cdninfo domainname=\"ccms.xoyo.com\" port=\"80\" username=\"xxxx\" passwd=\"xxxx\"\/&gt;\n            &lt;sendurl base=\"http:\/\/pic.xoyo.com\/cms\"\/&gt;\n            &lt;regexurl regex=\"false\" match=\"cms.xoyo.com\/site(&#091;\/a-zA-Z0-9]*).xoyo.com\/images\"\/&gt;\n        &lt;\/localpath&gt;\n    &lt;\/plugin&gt;\n&lt;\/head&gt;\nEOF<\/code><\/pre>\n\n\n\n<p>5\u3001\u521b\u5efa\u53d1\u9001\u7aef\u5bc6\u7801\u6587\u4ef6<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5bc6\u7801\u4e0e\u63a5\u6536\u7aefrsyncd.secrets\u4e2d\u7684\u5bc6\u7801\u4e00\u81f4\uff08\u5982123456\uff09\necho \"123456\" &gt;\/etc\/rsync.secrets\n\n# \u8bbe\u7f6e\u6743\u9650\nchmod 600 \/etc\/rsync.secrets<\/code><\/pre>\n\n\n\n<p>6\u3001\u521b\u5efa\u672c\u5730\u76d1\u63a7\u76ee\u5f55<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir -p \/data\/erp_uploadfile\nchown -R root:root \/data\/erp_uploadfile\nchmod -R 755 \/data\/erp_uploadfile<\/code><\/pre>\n\n\n\n<p>7\u3001\u542f\u52a8sersync\u5e76\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \u542f\u52a8sersync\uff08\u540e\u53f0\u8fd0\u884c\uff0c\u8bb0\u5f55\u65e5\u5fd7\uff09\nnohup \/app\/local\/sersync\/sersync2 -r -d -o \/app\/local\/sersync\/confxml.xml &gt;\/app\/local\/sersync\/rsync.log 2&gt;&amp;1 &amp;\n\n# \u53c2\u6570\u8bf4\u660e\uff1a\n# -r\uff1a\u542f\u52a8\u65f6\u5148\u5168\u91cf\u540c\u6b65\u4e00\u6b21\uff08\u786e\u4fdd\u521d\u59cb\u76ee\u5f55\u4e00\u81f4\uff09\n# -d\uff1a\u5b88\u62a4\u8fdb\u7a0b\u6a21\u5f0f\n# -o\uff1a\u6307\u5b9a\u914d\u7f6e\u6587\u4ef6\n# -n\uff1a\u6307\u5b9a\u7ebf\u7a0b\u6570\uff08\u9ed8\u8ba410\uff0c\u5982-n 20\uff09\n\n# \u9a8c\u8bc1\u662f\u5426\u542f\u52a8\u6210\u529f\nps aux | grep sersync2 | grep -v grep<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u65b9\u6848\uff1a\u63a5\u6536\u7aef\u914d\u7f6e rsync \u5b88\u62a4\u8fdb\u7a0b\uff0c\u53d1\u9001\u7aef\u901a\u8fc7 inotify \u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff0c\u501f\u52a9 sersync \u8c03\u7528 rsync \u5b9e\u65f6\u540c\u6b65\u5230\u63a5\u6536\u7aef\uff0810.40.0.2\uff09 \u6574\u4e2a\u65b9\u6848\u7684\u6838\u5fc3\u662f\u5229\u7528 inotify \u5b9e\u65f6\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff0csersync \u66ff\u4ee3\u4f20\u7edf\u7684 inotify+rsync \u811a\u672c\uff0c\u66f4\u7a33\u5b9a\u4e14\u652f\u6301\u5931\u8d25\u91cd\u4f20\uff0c\u9002\u5408\u751f\u4ea7\u73af\u5883\u7684\u6587\u4ef6\u5b9e\u65f6\u540c\u6b65\u9700\u6c42\u3002 \u4e00\u3001\u6574\u4f53\u67b6\u6784\u8bf4\u660e \u4e8c\u3001\u63a5\u6536\u7aef\uff0810.40.0.2\uff09\u5b8c\u6574\u914d\u7f6e\u6b65\u9aa4 1\u3001\u914d\u7f6e rsyncd.conf 2\u3001\u521b\u5efa\u5bc6\u7801\u6587\u4ef6\u5e76\u8bbe\u7f6e\u6743\u9650 3\u3001\u521b\u5efa\u540c\u6b65\u76ee\u5f55\u5e76\u8bbe\u7f6e\u6743\u9650 4\u3001\u542f\u52a8rsyncd\u5e76\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f 5\u3001\u5173\u95ed\u9632\u706b\u5899\u3001SELinux\uff08\u6216\u5f00\u653e873\u7aef\u53e3\uff09 \u4e09\u3001\u53d1\u9001\u7aef\u5b8c\u6574\u914d\u7f6e\u6b65\u9aa4 1\u3001\u5b89\u88c5\u4f9d\u8d56\uff08\u7f16\u8bd1 inotify-tools \u9700\u8981\uff09 2\u3001\u5b89\u88c5 inotify-tools\uff08\u76d1\u63a7\u6587\u4ef6\u53d8\u5316\uff09 3\u3001\u5b89\u88c5 sersync\uff08\u89e3\u6790\u76d1\u63a7\u4e8b\u4ef6\u5e76\u540c\u6b65\uff09 4\u3001\u914d\u7f6e sersync\uff08confxml.xml\uff09 5\u3001\u521b\u5efa\u53d1\u9001\u7aef\u5bc6\u7801\u6587\u4ef6 6\u3001\u521b\u5efa\u672c\u5730\u76d1\u63a7\u76ee\u5f55 7\u3001\u542f\u52a8sersync\u5e76\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-162","post","type-post","status-publish","format-standard","hentry","category-9"],"_links":{"self":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/162","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=162"}],"version-history":[{"count":3,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/162\/revisions"}],"predecessor-version":[{"id":664,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/162\/revisions\/664"}],"wp:attachment":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=162"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=162"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=162"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}