{"id":473,"date":"2024-04-16T21:42:13","date_gmt":"2024-04-16T13:42:13","guid":{"rendered":"http:\/\/8.141.4.74\/?p=473"},"modified":"2024-04-16T21:42:13","modified_gmt":"2024-04-16T13:42:13","slug":"inotifyrsyncshell-%e8%84%9a%e6%9c%ac%e5%ae%9e%e7%8e%b0%e5%ae%9e%e6%97%b6%e6%95%b0%e6%8d%ae%e5%90%8c%e6%ad%a5","status":"publish","type":"post","link":"http:\/\/8.141.4.74\/?p=473","title":{"rendered":"inotify+rsync+shell \u811a\u672c\u5b9e\u73b0\u5b9e\u65f6\u6570\u636e\u540c\u6b65"},"content":{"rendered":"<blockquote>\n<p>\u5e94\u7528\u573a\u666f\uff1a\u5728\u751f\u4ea7\u73af\u5883\uff0c\u6709\u65f6\u4f1a\u9700\u8981\u4e24\u53f0\u4e3b\u673a\u7684\u7279\u5b9a\u76ee\u5f55\u5b9e\u73b0\u5b9e\u65f6\u540c\u6b65\u3002\u6bd4\u5982\uff0c\u5c06NFS\u5171\u4eab\u76ee\u5f55\u7684\u6570\u636e\u6587\u4ef6\uff0c\u81ea\u52a8\u5b9e\u65f6\u540c\u6b65\u5230\u5907\u4efd\u670d\u52a1\u5668\u7279\u5b9a\u76ee\u5f55\u4e2d.<\/p>\n<\/blockquote>\n<h2>1. inotify<\/h2>\n<p>Linux \u7684 <code>inotify<\/code> \u662f\u4e00\u4e2a\u76d1\u89c6\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684\u5185\u6838\u5b50\u7cfb\u7edf\u3002\u5b83\u5141\u8bb8\u5e94\u7528\u7a0b\u5e8f\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u53d8\u5316\uff0c\u6bd4\u5982\u6587\u4ef6\u7684\u521b\u5efa\u3001\u5220\u9664\u3001\u4fee\u6539\u3001\u5c5e\u6027\u66f4\u6539\u7b49\u3002<code>inotify<\/code> \u5728\u591a\u79cd\u5e94\u7528\u4e2d\u975e\u5e38\u6709\u7528\uff0c\u6bd4\u5982\u81ea\u52a8\u5907\u4efd\u3001\u540c\u6b65\u3001\u6587\u4ef6\u7d22\u5f15\u548c\u5b89\u5168\u76d1\u63a7\u7cfb\u7edf\u7b49\u3002<\/p>\n<h3>1.1 \u57fa\u672c\u5de5\u4f5c\u539f\u7406<\/h3>\n<p>\u5f53\u5e94\u7528\u7a0b\u5e8f\u76d1\u63a7\u4e00\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55\u65f6\uff0c<code>inotify<\/code> \u5c06\u5176\u6dfb\u52a0\u5230\u76d1\u89c6\u5217\u8868\u4e2d\u3002\u6bcf\u5f53\u76d1\u89c6\u7684\u5bf9\u8c61\u53d1\u751f\u66f4\u6539\u65f6\uff0c<code>inotify<\/code> \u4f1a\u901a\u77e5\u5e94\u7528\u7a0b\u5e8f\u3002\u8fd9\u79cd\u673a\u5236\u6bd4\u8f6e\u8be2\u6587\u4ef6\u7cfb\u7edf\u4ee5\u67e5\u627e\u66f4\u6539\u66f4\u9ad8\u6548\uff0c\u56e0\u4e3a\u4e8b\u4ef6\u662f\u7531\u5185\u6838\u4e3b\u52a8\u63a8\u9001\u7684\u3002<\/p>\n<h3>1.2 \u6838\u5fc3\u7279\u6027<\/h3>\n<ul>\n<li><strong>\u4e8b\u4ef6\u9a71\u52a8<\/strong>\uff1a\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u63a5\u6536\u5173\u4e8e\u6587\u4ef6\u7cfb\u7edf\u66f4\u6539\u7684\u4e8b\u4ef6\u901a\u77e5\u3002<\/li>\n<li><strong>\u76d1\u89c6\u9879\uff08Watches\uff09<\/strong>\uff1a\u53ef\u4ee5\u5bf9\u6587\u4ef6\u6216\u76ee\u5f55\u8bbe\u7f6e\u76d1\u89c6\u9879\uff0c\u4ee5\u4fbf\u5728\u53d1\u751f\u66f4\u6539\u65f6\u63a5\u6536\u901a\u77e5\u3002<\/li>\n<li><strong>\u7075\u6d3b\u6027<\/strong>\uff1a\u53ef\u4ee5\u9009\u62e9\u76d1\u89c6\u5404\u79cd\u7c7b\u578b\u7684\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\uff0c\u5982\u8bfb\u53d6\u3001\u5199\u5165\u3001\u521b\u5efa\u3001\u5220\u9664\u7b49\u3002<\/li>\n<\/ul>\n<h3>1.3 \u4f7f\u7528\u65b9\u6cd5<\/h3>\n<p>\u8981\u5728\u7a0b\u5e8f\u4e2d\u4f7f\u7528 <code>inotify<\/code>\uff0c\u9700\u8981\u901a\u8fc7 <code>inotify_init()<\/code> \u7cfb\u7edf\u8c03\u7528\u521b\u5efa\u4e00\u4e2a <code>inotify<\/code> \u5b9e\u4f8b\u3002\u7136\u540e\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>inotify_add_watch()<\/code> \u5411\u5b9e\u4f8b\u6dfb\u52a0\u76d1\u89c6\u9879\uff0c\u6307\u5b9a\u8981\u76d1\u63a7\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u4ee5\u53ca\u611f\u5174\u8da3\u7684\u4e8b\u4ef6\u3002\u5f53\u8fd9\u4e9b\u4e8b\u4ef6\u53d1\u751f\u65f6\uff0c\u5e94\u7528\u7a0b\u5e8f\u53ef\u4ee5\u901a\u8fc7\u4ece <code>inotify<\/code> \u6587\u4ef6\u63cf\u8ff0\u7b26\u8bfb\u53d6\u4fe1\u606f\u6765\u63a5\u6536\u4e8b\u4ef6\u901a\u77e5\u3002<\/p>\n<p>\u4e0b\u9762\u662f\u4e00\u4e9b\u5e38\u7528\u7684 <code>inotify<\/code> \u4e8b\u4ef6\u7c7b\u578b\uff1a<\/p>\n<ul>\n<li><strong>IN_ACCESS<\/strong>\uff1a\u8bfb\u53d6\u6587\u4ef6\u65f6\u4ea7\u751f\u3002<\/li>\n<li><strong>IN_MODIFY<\/strong>\uff1a\u6587\u4ef6\u88ab\u4fee\u6539\u65f6\u4ea7\u751f\u3002<\/li>\n<li><strong>IN_CREATE<\/strong>\uff1a\u5728\u88ab\u76d1\u89c6\u7684\u76ee\u5f55\u4e2d\u521b\u5efa\u4e86\u65b0\u6587\u4ef6\u65f6\u4ea7\u751f\u3002<\/li>\n<li><strong>IN_DELETE<\/strong>\uff1a\u6587\u4ef6\u88ab\u5220\u9664\u65f6\u4ea7\u751f\u3002<\/li>\n<li><strong>IN_OPEN<\/strong>\uff1a\u6587\u4ef6\u88ab\u6253\u5f00\u65f6\u4ea7\u751f\u3002<\/li>\n<li><strong>IN_CLOSE<\/strong>\uff1a\u6587\u4ef6\u88ab\u5173\u95ed\u65f6\uff0c\u5982\u679c\u662f\u53ef\u5199\u7684\u5219\u4f1a\u6536\u5230 <code>IN_CLOSE_WRITE<\/code>\uff0c\u5426\u5219\u662f <code>IN_CLOSE_NOWRITE<\/code>\u3002<\/li>\n<li><strong>IN_MOVE<\/strong>\uff1a\u6587\u4ef6\u88ab\u79fb\u52a8\u65f6\u4ea7\u751f\uff0c\u79fb\u5165\u4e8b\u4ef6\u662f <code>IN_MOVED_TO<\/code>\uff0c\u79fb\u51fa\u4e8b\u4ef6\u662f <code>IN_MOVED_FROM<\/code>\u3002<\/li>\n<\/ul>\n<h3>1.4 \u9650\u5236\u548c\u6ce8\u610f\u4e8b\u9879<\/h3>\n<ul>\n<li><strong>\u8d44\u6e90\u9650\u5236<\/strong>\uff1a<code>inotify<\/code> \u4f7f\u7528\u8d44\u6e90\u9650\u5236\u6765\u9632\u6b62\u5355\u4e2a\u7528\u6237\u5360\u7528\u592a\u591a\u5185\u6838\u5185\u5b58\u3002\u8fd9\u4e9b\u8d44\u6e90\u9650\u5236\u53ef\u4ee5\u901a\u8fc7 <code>\/proc\/sys\/fs\/inotify\/<\/code> \u4e0b\u7684\u6587\u4ef6\u6765\u914d\u7f6e\uff0c\u5982 <code>max_queued_events<\/code>\u3001<code>max_user_instances<\/code>\u3001<code>max_user_watches<\/code>\u3002<\/li>\n<li><strong>\u7f3a\u5c11\u9012\u5f52\u76d1\u89c6<\/strong>\uff1a<code>inotify<\/code> \u672c\u8eab\u4e0d\u652f\u6301\u9012\u5f52\u76d1\u89c6\u76ee\u5f55\u6811\u3002\u5982\u679c\u9700\u8981\u9012\u5f52\u76d1\u89c6\uff0c\u9700\u8981\u5728\u5e94\u7528\u7a0b\u5e8f\u4e2d\u5b9e\u73b0\u3002<\/li>\n<li><strong>\u4e0d\u76d1\u89c6\u5b50\u76ee\u5f55<\/strong>\uff1a\u5982\u679c\u76d1\u89c6\u4e00\u4e2a\u76ee\u5f55\uff0c\u5bf9\u8be5\u76ee\u5f55\u7684\u5b50\u76ee\u5f55\u8fdb\u884c\u7684\u66f4\u6539\u4e0d\u4f1a\u88ab\u901a\u77e5\uff0c\u9664\u975e\u4e5f\u4e3a\u8fd9\u4e9b\u5b50\u76ee\u5f55\u5355\u72ec\u6dfb\u52a0\u76d1\u89c6\u3002<\/li>\n<\/ul>\n<h3>1.5 \u4f7f\u7528 <code>inotify<\/code> \u7684\u5de5\u5177<\/h3>\n<p>\u6709\u8bb8\u591a\u5de5\u5177\u548c\u5e93\u4f7f\u7528\u4e86 <code>inotify<\/code>\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a<\/p>\n<ul>\n<li><strong>inotify-tools<\/strong>\uff1a\u8fd9\u662f\u4e00\u7ec4\u547d\u4ee4\u884c\u7a0b\u5e8f\uff0c\u7528\u4e8e\u7b80\u5355\u5730\u4f7f\u7528 <code>inotify<\/code> \u529f\u80fd\u3002<\/li>\n<li><strong>InotifyWatcher<\/strong>\uff1a\u5728\u8bb8\u591a\u9ad8\u7ea7\u7f16\u7a0b\u8bed\u8a00\u4e2d\uff0c\u5982 Python\uff0c\u90fd\u6709\u5c01\u88c5\u4e86 <code>inotify<\/code> \u529f\u80fd\u7684\u5e93\u3002<\/li>\n<\/ul>\n<p>\u901a\u8fc7 <code>inotify<\/code>\uff0c\u5f00\u53d1\u8005\u53ef\u4ee5\u66f4\u8f7b\u677e\u5730\u6784\u5efa\u54cd\u5e94\u6587\u4ef6\u7cfb\u7edf\u66f4\u6539\u7684\u667a\u80fd\u5e94\u7528\u7a0b\u5e8f\uff0c\u4f7f\u5f97\u6587\u4ef6\u7ba1\u7406\u548c\u5904\u7406\u5728 Linux \u7cfb\u7edf\u4e0a\u66f4\u52a0\u5f3a\u5927\u548c\u7075\u6d3b\u3002<\/p>\n<h3>1.6 \u5185\u6838\u53c2\u6570<\/h3>\n<p><code>inotify<\/code> \u662f Linux \u5185\u6838\u7684\u4e00\u4e2a\u7279\u6027\uff0c\u5b83\u63d0\u4f9b\u4e86\u4e00\u79cd\u673a\u5236\uff0c\u5141\u8bb8\u5e94\u7528\u7a0b\u5e8f\u76d1\u89c6\u6587\u4ef6\u7cfb\u7edf\u4e0a\u7684\u53d8\u5316\u3002\u8bb8\u591a\u73b0\u4ee3 Linux \u53d1\u884c\u7248\u90fd\u4f7f\u7528 <code>inotify<\/code> \u6765\u5e2e\u52a9\u6587\u4ef6\u7ba1\u7406\u5668\u3001\u7f16\u8f91\u5668\u3001IDE\u548c\u5176\u4ed6\u7a0b\u5e8f\u8ddf\u8e2a\u6587\u4ef6\u7cfb\u7edf\u53d8\u5316\u3002\u8fd9\u4e9b <code>\/proc\/sys\/fs\/inotify\/<\/code> \u4e0b\u7684\u53c2\u6570\u7528\u6765\u63a7\u5236 <code>inotify<\/code> \u7684\u8d44\u6e90\u9650\u5236\u3002<\/p>\n<h4>1.6.1 <code>max_queued_events<\/code><\/h4>\n<p>\u8fd9\u4e2a\u53c2\u6570\u63a7\u5236\u7684\u662f <code>inotify<\/code> \u76d1\u89c6\u70b9\u5bf9\u4e8e\u4e8b\u4ef6\u961f\u5217\u7684\u5927\u5c0f\u3002\u5b83\u5b9a\u4e49\u4e86\u53ef\u4ee5\u6392\u961f\u7684\u4e8b\u4ef6\u7684\u6700\u5927\u6570\u76ee\u3002\u5982\u679c\u8d85\u8fc7\u4e86\u8fd9\u4e2a\u6570\u76ee\uff0c\u4f1a\u5411\u8fdb\u7a0b\u53d1\u9001 <code>IN_Q_OVERFLOW<\/code> \u4e8b\u4ef6\uff0c\u8fdb\u7a0b\u53ef\u80fd\u4f1a\u9519\u8fc7\u4e00\u4e9b\u4e8b\u4ef6\u3002\u9ed8\u8ba4\u503c\u901a\u5e38\u662f 16384\u3002\u5982\u679c\u5e94\u7528\u7a0b\u5e8f\u6b63\u5728\u76d1\u89c6\u5927\u91cf\u6587\u4ef6\u5e76\u4e14\u9891\u7e41\u66f4\u6539\uff0c\u53ef\u80fd\u9700\u8981\u589e\u52a0\u8fd9\u4e2a\u503c\u3002<\/p>\n<h4>1.6.2 <code>max_user_instances<\/code><\/h4>\n<p>\u8fd9\u4e2a\u53c2\u6570\u6307\u7684\u662f\u6bcf\u4e2a\u771f\u5b9e\u7528\u6237 ID\uff08real user ID\uff09\u53ef\u4ee5\u521b\u5efa\u7684 <code>inotify<\/code> \u5b9e\u4f8b\u7684\u6570\u91cf\u3002\u6bcf\u4e2a\u5b9e\u4f8b\u53ef\u4ee5\u7528\u6765\u76d1\u89c6\u4e00\u4e2a\u6216\u591a\u4e2a\u6587\u4ef6\u3002\u9ed8\u8ba4\u503c\u901a\u5e38\u662f 128\u3002\u8fd9\u610f\u5473\u7740\u4efb\u4f55\u7528\u6237\u4e0d\u80fd\u521b\u5efa\u8d85\u8fc7\u8fd9\u4e2a\u6570\u76ee\u7684\u76d1\u89c6\u5b9e\u4f8b\u3002\u8fd9\u662f\u4e3a\u4e86\u9632\u6b62\u5355\u4e2a\u7528\u6237\u6d88\u8017\u8fc7\u591a\u7684\u5185\u6838\u8d44\u6e90\u3002\u5982\u679c\u4f60\u7684\u7cfb\u7edf\u4e0a\u6709\u591a\u4e2a\u5e94\u7528\u7a0b\u5e8f\u9700\u8981\u4f7f\u7528 <code>inotify<\/code>\uff0c\u53ef\u80fd\u9700\u8981\u589e\u52a0\u8fd9\u4e2a\u503c\u3002<\/p>\n<h4>1.6.3 <code>max_user_watches<\/code><\/h4>\n<p>\u8fd9\u4e2a\u53c2\u6570\u5b9a\u4e49\u4e86\u5355\u4e2a\u7528\u6237\u80fd\u591f\u521b\u5efa\u7684 <code>inotify<\/code> \u76d1\u89c6\u9879\uff08watches\uff09\u7684\u6700\u5927\u6570\u91cf\u3002\u6bcf\u4e2a\u76d1\u89c6\u9879\u5bf9\u5e94\u4e8e\u4e00\u4e2a\u88ab\u76d1\u89c6\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e2a\u503c\u53ef\u80fd\u76f8\u5bf9\u8f83\u4f4e\uff0c\u5bf9\u4e8e\u90a3\u4e9b\u9700\u8981\u76d1\u89c6\u5927\u91cf\u6587\u4ef6\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u53ef\u80fd\u9700\u8981\u589e\u52a0\u8fd9\u4e2a\u503c\u3002<\/p>\n<blockquote>\n<p>\u5728\u5f00\u53d1\u6216\u90e8\u7f72\u4e00\u4e2a\u9700\u8981\u5bc6\u5207\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u53d8\u5316\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u8fd9\u4e9b\u53c2\u6570\u662f\u53ef\u80fd\u9700\u8981\u8c03\u6574\u7684\u3002\u8c03\u6574\u5b83\u4eec\u53ef\u4ee5\u5e2e\u52a9\u907f\u514d <code>inotify<\/code> \u76f8\u5173\u7684\u9519\u8bef\uff0c\u4f8b\u5982\u5728\u6587\u4ef6\u7cfb\u7edf\u6d3b\u52a8\u975e\u5e38\u9ad8\u7684\u7cfb\u7edf\u4e0a\u3002\u8c03\u6574\u8fd9\u4e9b\u503c\u53ef\u4ee5\u4f7f\u7528 <code>echo<\/code> \u547d\u4ee4\u5c06\u65b0\u7684\u503c\u5199\u5165\u5bf9\u5e94\u7684\u6587\u4ef6\u4e2d\uff0c\u4e0b\u9762\u6709\u4e24\u79cd\u4fee\u6539\u65b9\u5f0f\uff1a\u4e34\u65f6\u4fee\u6539\u548c\u6c38\u4e45\u4fee\u6539\u3002<\/p>\n<\/blockquote>\n<h4>1.6.4 \u4e34\u65f6\u4fee\u6539<\/h4>\n<p>\u8981\u4e34\u65f6\u4fee\u6539\u8fd9\u4e9b\u503c\uff0c\u53ef\u4ee5\u76f4\u63a5\u5411\u76f8\u5e94\u7684\u6587\u4ef6\u5199\u5165\u65b0\u503c\u3002\u4e34\u65f6\u4fee\u6539\u5728\u7cfb\u7edf\u91cd\u542f\u540e\u4e0d\u4f1a\u4fdd\u7559\u3002\u4f7f\u7528 <code>echo<\/code> \u547d\u4ee4\u914d\u5408\u91cd\u5b9a\u5411\u7b26\u53f7\u6765\u4fee\u6539\u8fd9\u4e9b\u503c\u3002\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-bash\">echo 65536 &gt; \/proc\/sys\/fs\/inotify\/max_queued_events\necho 256 &gt; \/proc\/sys\/fs\/inotify\/max_user_instances\necho 65536 &gt; \/proc\/sys\/fs\/inotify\/max_user_watches<\/code><\/pre>\n<p>\u8fd9\u4e9b\u547d\u4ee4\u4f1a\u7acb\u5373\u751f\u6548\uff0c\u4f46\u91cd\u542f\u540e\u4f1a\u6062\u590d\u5230\u9ed8\u8ba4\u503c\u3002<\/p>\n<h4>1.6.5 \u6c38\u4e45\u4fee\u6539<\/h4>\n<p>\u8981\u6c38\u4e45\u4fee\u6539\u8fd9\u4e9b\u503c\uff0c\u9700\u8981\u7f16\u8f91 <code>\/etc\/sysctl.conf<\/code> \u6587\u4ef6\uff08\u6216\u5728 <code>\/etc\/sysctl.d\/<\/code> \u76ee\u5f55\u4e0b\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u914d\u7f6e\u6587\u4ef6\uff09\u3002\u6c38\u4e45\u4fee\u6539\u4f1a\u5728\u7cfb\u7edf\u91cd\u542f\u540e\u4fdd\u7559\u3002<\/p>\n<pre><code class=\"language-bash\">echo &quot;fs.inotify.max_user_watches=524288&quot; | sudo tee -a \/etc\/sysctl.conf\n#\u6216\u8005\nfs.inotify.max_queued_events = 65536\nfs.inotify.max_user_instances = 256\nfs.inotify.max_user_watches = 65536<\/code><\/pre>\n<p>\u751f\u6548\uff1a<\/p>\n<pre><code class=\"language-bash\">sysctl -p<\/code><\/pre>\n<p>\u8bf7\u8bb0\u4f4f\uff0c\u4fee\u6539\u8fd9\u4e9b\u53c2\u6570\u53ef\u80fd\u4f1a\u5bf9\u7cfb\u7edf\u8d44\u6e90\u6709\u4e00\u5b9a\u5f71\u54cd\uff0c\u56e0\u6b64\u5728\u589e\u52a0\u5b83\u4eec\u4e4b\u524d\u8bf7\u786e\u4fdd\u4e86\u89e3\u8fd9\u4e9b\u66f4\u6539\u7684\u5f71\u54cd\u3002\u7279\u522b\u662f\u589e\u52a0 <code>max_user_watches<\/code> \u53ef\u80fd\u4f1a\u663e\u8457\u589e\u52a0\u5185\u6838\u6d88\u8017\u7684\u5185\u5b58\uff0c\u56e0\u4e3a\u6bcf\u4e2a watch \u90fd\u4f1a\u5360\u7528\u4e00\u5b9a\u7684\u5185\u5b58\u7a7a\u95f4\u3002<\/p>\n<h3>1.7 inotify\u7684\u4f7f\u7528\u914d\u7f6e<\/h3>\n<blockquote>\n<p><code>inotify<\/code> \u672c\u8eab\u662f Linux \u5185\u6838\u7684\u4e00\u90e8\u5206\uff0c\u56e0\u6b64\u4e0d\u9700\u8981\u5355\u72ec\u5b89\u88c5\u3002\u7136\u800c\uff0c\u8981\u4f7f\u7528 <code>inotify<\/code> \u529f\u80fd\uff0c\u53ef\u80fd\u4f1a\u7528\u5230 <code>inotify-tools<\/code>\uff0c\u8fd9\u662f\u4e00\u7ec4\u547d\u4ee4\u884c\u7a0b\u5e8f\u7528\u4e8e\u7b80\u5316 <code>inotify<\/code> \u7684\u4f7f\u7528\u3002\u4ee5\u4e0b\u662f\u5982\u4f55\u5b89\u88c5\u3001\u4f7f\u7528\u548c\u914d\u7f6e <code>inotify-tools<\/code> \u7684\u6307\u5357\u3002<\/p>\n<\/blockquote>\n<pre><code class=\"language-bash\">[09:50:13 root@Rocky8 ~]#grep -i inotify \/boot\/config-4.18.0-372.9.1.el8.x86_64\nCONFIG_INOTIFY_USER=y\n[09:50:22 root@Rocky8 ~]#<\/code><\/pre>\n<h4>1.7.1 \u5b89\u88c5 <code>inotify-tools<\/code><\/h4>\n<p>\u5728\u5927\u591a\u6570\u57fa\u4e8e Debian \u7684\u7cfb\u7edf\uff08\u5982 Ubuntu\uff09\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>apt<\/code> \u5305\u7ba1\u7406\u5668\u6765\u5b89\u88c5\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install inotify-tools<\/code><\/pre>\n<p>\u5bf9\u4e8e\u57fa\u4e8e RHEL \u7684\u7cfb\u7edf\uff08\u5982 CentOS \u6216 Fedora\uff09\uff0c\u4f7f\u7528 <code>dnf<\/code> \u6216 <code>yum<\/code>\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo dnf install inotify-tools<\/code><\/pre>\n<h4>1.7.2 \u4f7f\u7528 <code>inotify-tools<\/code><\/h4>\n<p><code>inotify-tools<\/code> \u5305\u62ec\u4e24\u4e2a\u4e3b\u8981\u7684\u5de5\u5177\uff1a<code>inotifywait<\/code> \u548c <code>inotifywatch<\/code>\u3002\u8be6\u7ec6\u547d\u4ee4[\u53c2\u8003\u8fd9\u91cc](# \u76f8\u5173\u547d\u4ee4)<\/p>\n<h2>2. rsync<\/h2>\n<p><code>rsync<\/code> \u662f\u4e00\u4e2a\u975e\u5e38\u6d41\u884c\u7684 Linux\/Unix \u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5b83\u7528\u4e8e\u5feb\u901f\u6709\u6548\u5730\u540c\u6b65\u6587\u4ef6\u548c\u76ee\u5f55\u4e4b\u95f4\u7684\u6570\u636e\u3002<code>rsync<\/code> \u53ef\u4ee5\u901a\u8fc7\u672c\u5730\u94fe\u63a5\u3001SSH \u6216\u8005 rsync \u5b88\u62a4\u8fdb\u7a0b\u6765\u540c\u6b65\u6570\u636e\uff0c\u5e76\u4e14\u5b83\u88ab\u5e7f\u6cdb\u7528\u4e8e\u5907\u4efd\u548c\u955c\u50cf\u3002<code>rsync<\/code> \u662f\u4e00\u4e2a\u975e\u5e38\u7075\u6d3b\u7684\u5de5\u5177\uff0c\u5b83\u53ef\u4ee5\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5de5\u5177\u4f7f\u7528\uff0c\u4e5f\u53ef\u4ee5\u914d\u7f6e\u4e3a\u670d\u52a1\u7aef\u7a0b\u5e8f\u3002<code>rsync<\/code> \u7684\u8fd9\u79cd\u53cc\u91cd\u529f\u80fd\u4f7f\u5176\u975e\u5e38\u9002\u7528\u4e8e\u6587\u4ef6\u540c\u6b65\u548c\u5907\u4efd\u573a\u666f\u3002\u4ee5\u4e0b\u662f\u5bf9\u5176\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u529f\u80fd\u7684\u7b80\u8981\u8bf4\u660e\uff1a<\/p>\n<h3>2.1 \u5ba2\u6237\u7aef\u5de5\u5177<\/h3>\n<p>\u4f5c\u4e3a\u5ba2\u6237\u7aef\u5de5\u5177\uff0c<code>rsync<\/code> \u7528\u4e8e\u5c06\u672c\u5730\u6587\u4ef6\u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u6216\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u540c\u6b65\u5230\u672c\u5730\u3002\u5ba2\u6237\u7aef\u901a\u5e38\u8c03\u7528 <code>rsync<\/code> \u547d\u4ee4\uff0c\u6307\u5b9a\u6e90\u6587\u4ef6\/\u76ee\u5f55\u548c\u76ee\u7684\u5730\uff0c\u76ee\u7684\u5730\u53ef\u4ee5\u662f\u672c\u5730\u8def\u5f84\u6216\u8fdc\u7a0b\u670d\u52a1\u5668\u7684\u8def\u5f84\u3002\u901a\u8fc7 SSH \u6216 rsync \u5b88\u62a4\u8fdb\u7a0b\u8fdb\u884c\u901a\u4fe1\u3002\u4f8b\u5982\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u5c06\u672c\u5730\u76ee\u5f55\u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\nrsync -avz \/local\/directory\/ user@remote-server:\/remote\/directory\/\n\n# \u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u540c\u6b65\u76ee\u5f55\u5230\u672c\u5730\nrsync -avz user@remote-server:\/remote\/directory\/ \/local\/directory\/\n<\/code><\/pre>\n<p>\u8fd9\u91cc\uff0c<code>-a<\/code> \u4ee3\u8868\u5f52\u6863\u6a21\u5f0f\uff0c\u4fdd\u6301\u6587\u4ef6\u5c5e\u6027\uff1b<code>-v<\/code> \u8868\u793a\u8be6\u7ec6\u6a21\u5f0f\uff1b<code>-z<\/code> \u8868\u793a\u538b\u7f29\u6570\u636e\u4ee5\u8282\u7701\u5e26\u5bbd\u3002<\/p>\n<h4>2.1.1 \u7279\u6027<\/h4>\n<ul>\n<li><strong>\u6548\u7387<\/strong>\uff1a<code>rsync<\/code> \u4ec5\u540c\u6b65\u6539\u53d8\u4e86\u7684\u6587\u4ef6\u90e8\u5206\uff0c\u4f7f\u7528\u4e86\u6240\u8c13\u7684\u589e\u91cf\u5907\u4efd\u6280\u672f\u3002<\/li>\n<li><strong>\u7075\u6d3b\u6027<\/strong>\uff1a\u53ef\u4ee5\u590d\u5236\u94fe\u63a5\u3001\u8bbe\u5907\u3001\u6240\u6709\u8005\u3001\u7fa4\u7ec4\u4fe1\u606f\u548c\u6743\u9650\u7b49\uff0c\u5e76\u4fdd\u6301\u6587\u4ef6\u7684\u539f\u59cb\u5c5e\u6027\u4e0d\u53d8\u3002<\/li>\n<li><strong>\u5b89\u5168\u6027<\/strong>\uff1a\u53ef\u4ee5\u901a\u8fc7 SSH \u8fdb\u884c\u5b89\u5168\u4f20\u8f93\u3002<\/li>\n<li><strong>\u652f\u6301\u5220\u9664<\/strong>\uff1a\u53ef\u4ee5\u5220\u9664\u76ee\u7684\u5730\u4e2d\u4e0d\u518d\u5b58\u5728\u4e8e\u6e90\u4f4d\u7f6e\u7684\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<h4>2.1.2 \u5b89\u88c5 <code>rsync<\/code><\/h4>\n<p><code>rsync<\/code> \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5e94\u8be5\u5df2\u7ecf\u5b89\u88c5\u5728\u5927\u591a\u6570 Linux \u53d1\u884c\u7248\u4e0a\u4e86\u3002\u5982\u679c\u6ca1\u6709\uff0c\u53ef\u4ee5\u4f7f\u7528\u5305\u7ba1\u7406\u5668\u8fdb\u884c\u5b89\u88c5\u3002<\/p>\n<p>\u5728 Debian\/Ubuntu \u7cfb\u7edf\u4e2d\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install rsync<\/code><\/pre>\n<p>\u5728 RHEL\/CentOS \u7cfb\u7edf\u4e2d\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo yum install rsync<\/code><\/pre>\n<p>\u6216\u4f7f\u7528 <code>dnf<\/code>\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo dnf install rsync<\/code><\/pre>\n<h4>2.1.3 \u4f7f\u7528 <code>rsync<\/code><\/h4>\n<p><code>rsync<\/code> \u901a\u5e38\u4f5c\u4e3a\u4e00\u4e2a\u547d\u4ee4\u884c\u5de5\u5177\u800c\u975e\u5b88\u62a4\u8fdb\u7a0b\u670d\u52a1\u6765\u4f7f\u7528\u3002\u4f46\u662f\uff0c\u5b83\u4e5f\u53ef\u4ee5\u914d\u7f6e\u4e3a\u5b88\u62a4\u8fdb\u7a0b\u670d\u52a1\u8fd0\u884c\u3002\u8be6\u7ec6\u547d\u4ee4[\u53c2\u8003\u8fd9\u91cc](# \u76f8\u5173\u547d\u4ee4)<\/p>\n<p>\u57fa\u672c\u7684 <code>rsync<\/code> \u4f7f\u7528\u547d\u4ee4\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync options source destination<\/code><\/pre>\n<p>\u4f8b\u5982\uff0c\u5c06 <code>\/src\/dir<\/code> \u540c\u6b65\u5230 <code>\/dest\/dir<\/code>\uff0c\u5e76\u4fdd\u7559\u6587\u4ef6\u6743\u9650\u548c\u6240\u6709\u6743\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync -avz \/src\/dir \/dest\/dir<\/code><\/pre>\n<p><code>-a<\/code> \u53c2\u6570\u4ee3\u8868\u201c\u5f52\u6863\u6a21\u5f0f\u201d\uff0c\u8fd9\u4f1a\u4fdd\u7559\u7b26\u53f7\u94fe\u63a5\u3001\u6587\u4ef6\u6743\u9650\u7b49\u3002<br \/>\n<code>-v<\/code> \u53c2\u6570\u8868\u793a\u201cverbose\u201d\uff0c\u8f93\u51fa\u8be6\u7ec6\u8fc7\u7a0b\u4fe1\u606f\u3002<br \/>\n<code>-z<\/code> \u53c2\u6570\u8868\u793a\u5728\u4f20\u8f93\u65f6\u538b\u7f29\u6570\u636e\u3002<\/p>\n<p>\u5982\u679c\u8981\u901a\u8fc7 SSH \u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync -avz -e ssh \/src\/dir user@remote_host:\/dest\/dir<\/code><\/pre>\n<p>\u8fd9\u91cc\uff0c<code>-e ssh<\/code> \u6307\u660e\u4f7f\u7528 SSH \u4f5c\u4e3a\u6570\u636e\u4f20\u8f93\u7684\u901a\u9053\u3002<\/p>\n<h3>2.2 \u670d\u52a1\u7aef\u7a0b\u5e8f<\/h3>\n<p><code>rsync<\/code> \u540c\u65f6\u4e5f\u53ef\u4ee5\u4f5c\u4e3a\u670d\u52a1\u7aef\u7a0b\u5e8f\u8fd0\u884c\uff0c\u8fd9\u901a\u5e38\u901a\u8fc7\u8bbe\u7f6e <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u6765\u5b8c\u6210\u3002\u670d\u52a1\u7aef\u914d\u7f6e\u6587\u4ef6 (<code>\/etc\/rsyncd.conf<\/code>) \u5b9a\u4e49\u4e86\u53ef\u4f9b\u5ba2\u6237\u7aef\u8bbf\u95ee\u7684\u6a21\u5757\uff08\u5373\u76ee\u5f55\uff09\uff0c\u4ee5\u53ca\u8bbf\u95ee\u63a7\u5236\u548c\u6743\u9650\u7b49\u3002\u4f8b\u5982\uff1a<\/p>\n<h4>2.2.1 rsyncd.conf\u6587\u4ef6<\/h4>\n<p><code>\/etc\/rsyncd.conf<\/code> \u662f <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5b83\u5b9a\u4e49\u4e86\u670d\u52a1\u5668\u7aef <code>rsync<\/code> \u7684\u884c\u4e3a\u548c\u5404\u4e2a\u6a21\u5757\u7684\u8bbe\u7f6e\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5e38\u89c1\u7684\u914d\u7f6e\u9009\u9879\u53ca\u5176\u542b\u4e49\uff1a<\/p>\n<p><strong>\u5168\u5c40\u9009\u9879<\/strong><\/p>\n<p>\u8fd9\u4e9b\u9009\u9879\u9002\u7528\u4e8e <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u7684\u6574\u4f53\u8fd0\u884c\uff1a<\/p>\n<ul>\n<li><strong>uid<\/strong>: \u8fd0\u884c <code>rsync<\/code> \u8fdb\u7a0b\u7684\u7528\u6237ID\u3002\u901a\u5e38\u4e3a\u4e86\u5b89\u5168\uff0c\u4e0d\u4f7f\u7528 root \u7528\u6237\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662fnobody\u8eab\u4efd\u3002<\/li>\n<li><strong>gid<\/strong>: \u8fd0\u884c <code>rsync<\/code> \u8fdb\u7a0b\u7684\u7ec4ID\u3002<\/li>\n<li><strong>use chroot<\/strong>: \u662f\u5426\u4f7f\u7528 <code>chroot<\/code> \u73af\u5883\u8fd0\u884c <code>rsync<\/code>\u3002\u8bbe\u7f6e\u4e3a <code>yes<\/code> \u53ef\u589e\u52a0\u5b89\u5168\u6027\uff0c\u56e0\u4e3a\u5b83\u9650\u5236\u4e86 <code>rsync<\/code> \u8fdb\u7a0b\u5bf9\u6587\u4ef6\u7cfb\u7edf\u7684\u8bbf\u95ee\u3002<\/li>\n<li><strong>max connections<\/strong>: \u5141\u8bb8\u7684\u6700\u5927\u5e76\u53d1\u8fde\u63a5\u6570\u3002\u8d85\u8fc7\u6b64\u6570\u76ee\u7684\u8fde\u63a5\u8bf7\u6c42\u4f1a\u88ab\u62d2\u7edd\u3002<\/li>\n<li><strong>pid file<\/strong>: \u5b58\u50a8 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b PID \u7684\u6587\u4ef6\u8def\u5f84\uff0c\u7528\u4e8e\u786e\u4fdd\u4e0d\u4f1a\u542f\u52a8\u591a\u4e2a\u5b88\u62a4\u8fdb\u7a0b\u5b9e\u4f8b\u3002<\/li>\n<li><strong>log file<\/strong>: \u65e5\u5fd7\u6587\u4ef6\u7684\u8def\u5f84\uff0c\u7528\u4e8e\u8bb0\u5f55 <code>rsync<\/code> \u7684\u64cd\u4f5c\u65e5\u5fd7\u3002<\/li>\n<li><strong>timeout<\/strong>: \u5ba2\u6237\u7aef\u95f2\u7f6e\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u8d85\u8fc7\u8fd9\u4e2a\u65f6\u95f4\u540e\u670d\u52a1\u5668\u4f1a\u65ad\u5f00\u8fde\u63a5\u3002<\/li>\n<li><strong>motd file<\/strong>: &quot;Message of the day&quot; \u6587\u4ef6\u7684\u8def\u5f84\uff0c\u6b64\u6d88\u606f\u5728\u5ba2\u6237\u7aef\u8fde\u63a5\u65f6\u663e\u793a\u3002<\/li>\n<\/ul>\n<p><strong>\u6a21\u5757\u9009\u9879<\/strong><\/p>\n<p>\u5728 <code>\/etc\/rsyncd.conf<\/code> \u4e2d\uff0c\u4f60\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u6216\u591a\u4e2a\u6a21\u5757\uff0c\u6bcf\u4e2a\u6a21\u5757\u5bf9\u5e94\u4e00\u4e2a\u76ee\u5f55\u53ca\u5176\u7279\u5b9a\u7684\u8bbf\u95ee\u89c4\u5219\uff1a<\/p>\n<ul>\n<li><strong>[module name]<\/strong>: \u65b9\u62ec\u53f7\u5185\u5b9a\u4e49\u4e00\u4e2a\u6a21\u5757\u7684\u540d\u79f0\uff0c\u540e\u7eed\u884c\u4e3a\u8be5\u6a21\u5757\u7684\u8bbe\u7f6e\u3002<\/li>\n<li><strong>path<\/strong>: \u8be5\u6a21\u5757\u5bf9\u5e94\u7684\u76ee\u5f55\u8def\u5f84\u3002<\/li>\n<li><strong>comment<\/strong>: \u6a21\u5757\u7684\u63cf\u8ff0\u4fe1\u606f\uff0c\u901a\u5e38\u5728\u5ba2\u6237\u7aef\u5217\u51fa\u53ef\u7528\u6a21\u5757\u65f6\u663e\u793a\u3002<\/li>\n<li><strong>read only<\/strong>: \u6307\u5b9a\u6a21\u5757\u662f\u5426\u4e3a\u53ea\u8bfb\u3002\u9ed8\u8ba4\u901a\u5e38\u4e3a <code>true<\/code>\uff0c\u5373\u5ba2\u6237\u7aef\u53ea\u80fd\u4ece\u6b64\u6a21\u5757\u4e0b\u8f7d\u6587\u4ef6\uff0c\u4e0d\u80fd\u4e0a\u4f20\u3002<\/li>\n<li><strong>list<\/strong>: \u662f\u5426\u5141\u8bb8\u5ba2\u6237\u7aef\u5217\u51fa\u6b64\u6a21\u5757\u3002\u8bbe\u7f6e\u4e3a <code>no<\/code> \u53ef\u4ee5\u9690\u85cf\u6a21\u5757\uff0c\u589e\u52a0\u5b89\u5168\u6027\u3002<\/li>\n<li><strong>auth users<\/strong>: \u6307\u5b9a\u53ef\u4ee5\u8bbf\u95ee\u6b64\u6a21\u5757\u7684\u7528\u6237\u540d\u5217\u8868\uff0c\u7528\u6237\u540d\u4e4b\u95f4\u7528\u7a7a\u683c\u5206\u9694\u3002<\/li>\n<li><strong>secrets file<\/strong>: \u5b58\u50a8\u7528\u6237\u540d\u548c\u5bc6\u7801\u7684\u6587\u4ef6\u8def\u5f84\uff0c\u7528\u4e8e\u6a21\u5757\u7684\u8eab\u4efd\u9a8c\u8bc1\u3002<\/li>\n<li><strong>hosts allow<\/strong>: \u5141\u8bb8\u8bbf\u95ee\u6b64\u6a21\u5757\u7684 IP \u5730\u5740\u6216\u5730\u5740\u8303\u56f4\u3002<\/li>\n<li><strong>hosts deny<\/strong>: \u7981\u6b62\u8bbf\u95ee\u6b64\u6a21\u5757\u7684 IP \u5730\u5740\u6216\u5730\u5740\u8303\u56f4\u3002<\/li>\n<li><strong>max connections<\/strong>: \u6b64\u6a21\u5757\u5141\u8bb8\u7684\u6700\u5927\u5e76\u53d1\u8fde\u63a5\u6570\u3002<\/li>\n<\/ul>\n<p>\u793a\u4f8b\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash\"># \u5728\u4e00\u4e9b\u53d1\u884c\u7248\u6ca1\u6709\u8fd9\u4e2a\u6587\u4ef6\uff0c\u9700\u8981\u624b\u52a8\u521b\u5efa;\u4f46\u662f\u5728\u9ad8\u7248\u672c\u4e0a\u9762\uff0c\u662f\u6709\u8fd9\u4e2a\u6587\u4ef6\uff0c\u65e0\u9700\u624b\u52a8\u521b\u5efa\u3002\u4f8b\u5982\uff1aRocky Linux 9.0\u4ee5\u4e0a\u7248\u672c\uff0c\u5b89\u88c5rsync\u5305\u4ee5\u540e\u4f1a\u81ea\u52a8\u751f\u6210rsyncd.conf\u6587\u4ef6\uff0c\u4f46\u662f\u5305\u62ecrocky linux 8\u3001\u4ee5\u53cacentos 8\u4ee5\u4e0b\u662f\u6ca1\u6709\u7684\uff0c\u9700\u8981\u624b\u52a8\u521b\u5efa\u3002\u6709\u8fd9\u4e2a\u914d\u7f6e\u6587\u4ef6\u4ee5\u540e\u624d\u53ef\u4ee5\u542f\u52a8\u670d\u52a1\u4e5f\u5c31\u662frsync --daemon,\u5426\u5219\u65e0\u6cd5\u542f\u52a8\u670d\u52a1\u3002\n# \/etc\/rsyncd.conf \u793a\u4f8b\npid file = \/var\/run\/rsyncd.pid\nlog file = \/var\/log\/rsyncd.log\nlock file = \/var\/run\/rsyncd.lock\nuid = root\ngid = root\nport = 873\nuse chroot = no\nmax connections = 0\nignore errors\nexclude = lost+found\/\nreverse lookup = no\n[backup]\n    path = \/path\/backup\n    comment = Backup folder\n    read only = yes\n    list = yes\n    auth users = rsyncuser\n    secrets file = \/etc\/rsyncd.secrets\n\n# \u7136\u540e\u5728 `\/etc\/rsyncd.secrets` \u6587\u4ef6\u4e2d\u8bbe\u7f6e\u7528\u6237\u548c\u5bc6\u7801\uff1a\nuser:password\n\n# \u8bbe\u7f6e\u6743\u9650\uff0c\u5426\u5219\u65e0\u6cd5\u901a\u8fc7\u5ba2\u6237\u7aef\u8fde\u63a5\nchmod 600 \/etc\/rsyncd.secrets\n\n# \u6700\u540e\uff0c\u542f\u52a8 `rsync` \u5b88\u62a4\u8fdb\u7a0b\nrsync --daemon<\/code><\/pre>\n<p>\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u521b\u5efa\u4e86\u4e00\u4e2a\u540d\u4e3a <code>backup<\/code> \u7684\u6a21\u5757\uff0c\u6307\u5b9a\u4e86\u8def\u5f84\u3001\u8bfb\u6743\u9650\u548c\u8ba4\u8bc1\u4fe1\u606f\u3002<\/p>\n<p>\u5ba2\u6237\u7aef\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7 rsync \u534f\u8bae\u8fde\u63a5\u5230\u670d\u52a1\u7aef\u7684\u7279\u5b9a\u6a21\u5757\u6765\u540c\u6b65\u6570\u636e\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync -avz username@server::backup \/local\/backup\/directory\/<\/code><\/pre>\n<p>\u8fd9\u91cc\uff0c<code>username@server::backup<\/code> \u8868\u793a\u8fde\u63a5\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u540d\u4e3a <code>backup<\/code> \u7684 rsync \u6a21\u5757\u3002<\/p>\n<h4>2.2.2 \u521b\u5efaservice \u6587\u4ef6<\/h4>\n<p>\u5728\u67d0\u4e9b\u53d1\u884c\u7248\u4e2d\uff0c\u5b89\u88c5 <code>rsync<\/code> \u5305\u65f6\u4e0d\u4f1a\u81ea\u52a8\u5305\u542b <code>rsync-daemon<\/code> \u7684 systemd \u670d\u52a1\u6587\u4ef6\u3002\u4f46\u662f\uff0c\u67d0\u4e9b\u53d1\u884c\u7248\u63d0\u4f9b\u4e86\u4e00\u4e2a\u5206\u79bb\u7684\u5305 <code>rsync-daemon<\/code>\uff0c\u8fd9\u4e2a\u5305\u4f1a\u5305\u542b\u5fc5\u8981\u7684\u670d\u52a1\u6587\u4ef6\uff0c\u7528\u4e8e\u901a\u8fc7 <code>systemd<\/code> \u6765\u7ba1\u7406 <code>rsync<\/code> \u4f5c\u4e3a\u5b88\u62a4\u8fdb\u7a0b\u7684\u8fd0\u884c\u3002<\/p>\n<p>\u5982\u679c <code>rsync-daemon<\/code> \u5305\u53ef\u7528\uff0c\u4f60\u53ef\u4ee5\u901a\u8fc7\u5b89\u88c5\u8fd9\u4e2a\u5305\u6765\u81ea\u52a8\u83b7\u53d6\u5e76\u914d\u7f6e <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u7684\u670d\u52a1\u6587\u4ef6\u3002\u5728\u57fa\u4e8e Red Hat \u7684\u7cfb\u7edf\u4e2d\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u6765\u5b89\u88c5\uff1a<\/p>\n<pre><code class=\"language-bash\">sudo dnf install -y rsync-daemon\n\n[root@Rocky9 ~]# rpm -ql rsync-daemon\n\/etc\/sysconfig\/rsyncd\n\/usr\/lib\/systemd\/system\/rsyncd.service\n\/usr\/lib\/systemd\/system\/rsyncd.socket\n\/usr\/lib\/systemd\/system\/rsyncd@.service\n[root@Rocky9 ~]#\n\n[root@Rocky9 ~]# cat \/usr\/lib\/systemd\/system\/rsyncd.service\n[Unit]\nDescription=fast remote file copy program daemon\nConditionPathExists=\/etc\/rsyncd.conf\nWants=network-online.target\nAfter=network-online.target\n\n[Service]\nEnvironmentFile=\/etc\/sysconfig\/rsyncd\nExecStart=\/usr\/bin\/rsync --daemon --no-detach &quot;$OPTIONS&quot;\n\n[Install]\nWantedBy=multi-user.target\n[root@Rocky9 ~]#\n<\/code><\/pre>\n<p>\u53d1\u73b0\u751f\u4ea7\u4e86\u5bf9\u5e94\u7684service\u6587\u4ef6\uff0c\u8bbe\u7f6e\u5f00\u673a\u81ea\u542f<\/p>\n<pre><code class=\"language-bash\">[root@Rocky9 ~]# systemctl enable --now rsyncd\nCreated symlink \/etc\/systemd\/system\/multi-user.target.wants\/rsyncd.service \u2192 \/usr\/lib\/systemd\/system\/rsyncd.service.\n[root@Rocky9 ~]#\n\n# \u5982\u679c\u4e4b\u524d\u4f7f\u7528\u7684rsync --daemon\u542f\u52a8\u7684\uff0c\u9996\u5148\u8981killall rsync,\u7136\u540e\u6267\u884csystemctl restart rsyncd<\/code><\/pre>\n<p>\u8bf7\u8bb0\u4f4f\uff0c\u5f53\u8fd0\u884c <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u65f6\uff0c\u4f60\u9700\u8981\u786e\u4fdd\u76f8\u5e94\u7684\u7aef\u53e3\uff08\u9ed8\u8ba4\u662f 873\uff09\u5728\u9632\u706b\u5899\u4e2d\u662f\u5f00\u653e\u7684\uff0c\u5e76\u4e14 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u914d\u7f6e\u5f97\u5f53\uff0c\u4ee5\u786e\u4fdd\u7cfb\u7edf\u5b89\u5168\u3002<\/p>\n<h2>3. inotify+rsync+shell \u811a\u672c\u5b9e\u73b0\u5b9e\u65f6\u6570\u636e\u540c\u6b65<\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/typora-images-1307361841.cos.ap-beijing.myqcloud.com\/img\/image-20240416134647344.png\" alt=\"image-20240416134647344\" \/> <\/p>\n<pre><code class=\"language-bash\">[root@backup-server ~]# cat \/etc\/rsyncd.conf\n# \/etc\/rsyncd: configuration file for rsync daemon mode\n\n# See rsyncd.conf man page for more options.\n\n# configuration example:\n\n# uid = nobody\n# gid = nobody\n# use chroot = yes\n# max connections = 4\n# pid file = \/var\/run\/rsyncd.pid\n# exclude = lost+found\/\n# transfer logging = yes\n# timeout = 900\n# ignore nonreadable = yes\n# dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2\n\n# [ftp]\n#        path = \/home\/ftp\n#        comment = ftp export area\n[backup]\npath = \/data\/backup\nread only = no\n[root@backup-server ~]#\n\n# \u5ba2\u6237\u7aef\u8fde\u63a5\n[13:52:49 root@data-server ~]#rsync rsync:\/\/10.0.0.107\nbackup\n[14:24:32 root@data-server ~]# rsync 10.0.0.107::\nbackup\n\n# \u5728\u670d\u52a1\u5668\u7aef\u4fee\u6539\u914d\u7f6e\u5141\u8bb8\u4e0a\u4f20\u3001\u5e76\u4e14\u6587\u4ef6\u7cfb\u7edf\u6743\u9650\u4e5f\u5f97\u4fee\u6539\n[root@backup-server ~]# setfacl -m u:nobody:rwx \/data\/backup\/\n\n# \u5ba2\u6237\u7aef\u4e0a\u4f20\n[14:27:23 root@data-server ~]#rsync \/etc\/networks root@10.0.0.107::backup\n[14:39:29 root@data-server ~]#rsync \/etc\/hosts xing@10.0.0.107::backup\n[14:39:53 root@data-server ~]#rsync \/etc\/fstab  10.0.0.107::backup\n\n# \u5982\u679c\u670d\u52a1\u5668\u7aef\u6743\u9650\u4e0d\u591f\u63d0\u793a\u4e0b\u9762\u9519\u8bef\n[14:25:11 root@data-server ~]#rsync \/etc\/networks root@10.0.0.107::backup\nrsync: [receiver] mkstemp &quot;\/.networks.MblLMy&quot; (in backup) failed: Permission denied (13)\nrsync error: some files\/attrs were not transferred (see previous errors) (code 23) at main.c(1189) [sender=3.1.3]\n[14:27:23 root@data-server ~]#\n\n# \u670d\u52a1\u5668\u7aef\u67e5\u770b\n[root@backup-server ~]# ll \/data\/backup\/\ntotal 12\n-rw-r--r-- 1 nobody nobody 709 Apr 16 14:40 fstab\n-rw-r--r-- 1 nobody nobody 158 Apr 16 14:39 hosts\n-rw-r--r-- 1 nobody nobody  58 Apr 16 14:28 networks\n[root@backup-server ~]#\n#\u4e5f\u53ef\u4ee5\u5c06\u8fdc\u7a0b\u7684\u6587\u4ef6\u4f20\u56de\u5230\u672c\u673a\n\n# \u5b9e\u73b0\u9a8c\u8bc1\u529f\u80fd\n[root@backup-server ~]# vi \/etc\/rsyncd.conf\npid file = \/var\/run\/rsyncd.pid\nlog file = \/var\/log\/rsyncd.log\nlock file = \/var\/run\/rsyncd.lock\nuid = root\ngid = root\nport = 873\nuse chroot = yes\nmax connections = 0\nignore errors\nexclude = lost+found\/\nreverse lookup = no\n[backup]\n    path = \/data\/backup\n    comment = Backup folder\n    read only = no\n    list = yes\n    auth users = rsyncuser\n    secrets file = \/etc\/rsyncd.secrets\n\n# \u5ba2\u6237\u7aef\u6d4b\u8bd5\n[14:54:42 root@data-server ~]#rsync \/etc\/group rsync:\/\/rsyncuser@10.0.0.107\/backup\nPassword:\n[14:57:36 root@data-server ~]#\n\n# \u67e5\u770b\u670d\u52a1\u5668\u7aef\u662f\u5426\u4e0a\u4f20\u6210\u529f\n[root@backup-server ~]# ll \/data\/backup\/\ntotal 16\n-rw-r--r-- 1 nobody nobody 709 Apr 16 14:40 fstab\n-rw-r--r-- 1 root   root   600 Apr 16 14:57 group\n-rw-r--r-- 1 nobody nobody 158 Apr 16 14:39 hosts\n-rw-r--r-- 1 nobody nobody  58 Apr 16 14:28 networks\n[root@backup-server ~]#\n\n# \u4ea4\u4e92\u5f0f\u8f93\u5165\u5bc6\u7801\u4e0d\u65b9\u4fbf\u5199\u811a\u672c,\u770b\u6e05\u695a\u8fd9\u91cc\u662f\u5ba2\u6237\u7aef\uff0c\u5c06\u5bc6\u7801\u5b58\u653e\u5728\u5ba2\u6237\u7aef\u7684\u914d\u7f6e\u6587\u4ef6\u5f53\u4e2d\uff0c\u4e3a\u4e86\u65b9\u4fbf\u811a\u672c\u81ea\u52a8\u5316\u6267\u884c\uff0c\u4f46\u662f\u771f\u6b63\u8d77\u5230\u9a8c\u8bc1\u73af\u8282\u7684\u8fd8\u662f\u670d\u52a1\u5668\/etc\/rsyncd.secrets\u6587\u4ef6\u5199\u7684rsyncuser:123456\uff0c\u5982\u679c\u628a\u8fd9\u4e2a\u6587\u4ef6\u5220\u9664\u4e86\u5c31\u6ca1\u6cd5\u9a8c\u8bc1\u4e86\uff0c\u62a5\u9519\u3002\n[root@data-server ~]# echo &quot;123456&quot; &gt; \/etc\/rsyncd.secrets\n# \u4fee\u6539\u6743\u9650\n[root@data-server ~]# chmod 600 \/etc\/rsyncd.secrets\n[15:26:52 root@data-server ~]#rsync --password-file=\/etc\/rsyncd.secrets \/etc\/sysctl.conf rsyncuser@10.0.0.107::backup\n[15:30:01 root@data-server ~]#<\/code><\/pre>\n<h3>\u76d1\u63a7\u811a\u672c<\/h3>\n<pre><code class=\"language-bash\">vim inotify_rsyncd.sh\n#!\/bin\/bash\n\n# \u5b9a\u4e49\u6e90\u76ee\u5f55\u548c\u76ee\u6807\u670d\u52a1\u5668\u4fe1\u606f\nSRC=&#039;\/data\/www\/&#039; # \u786e\u4fdd\u8def\u5f84\u4ee5\u659c\u6760\u7ed3\u5c3e\uff0c\u5982\u679c\u6ca1\u6709\/\u5c31\u62f7\u8d1d\u7684\u6574\u4e2awww\u6587\u4ef6\u5939\uff0c\u6709\u4e86\uff0c\u90a3\u4e48\u5c31\u662fwww\u4e0b\u9762\u7684\u6587\u4ef6\nDEST=&#039;rsyncuser@rsync\u670d\u52a1\u5668IP::backup&#039;\nLOG_FILE=&quot;\/var\/log\/changelist.log&quot;\n\n# \u68c0\u67e5\u5e76\u5b89\u88c5rsync\nrpm -q rsync &amp;&gt;\/dev\/null || yum -y install rsync\n\n# \u4f7f\u7528inotifywait\u76d1\u63a7\u76ee\u5f55\ninotifywait -mrq --exclude &#039;.*\\.swp&#039; --timefmt &#039;%Y-%m-%d %H:%M:%S&#039; --format &#039;%T %w %f %e&#039; -e create,delete,moved_to,close_write,attrib ${SRC} |\nwhile IFS=&#039; &#039; read -r DATE TIME DIR FILE EVENT; do\n    FILEPATH=&quot;${DIR}${FILE}&quot;\n    # \u540c\u6b65\u6587\u4ef6\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\n    rsync -az --delete --password-file=\/etc\/rsyncd.secrets &quot;${SRC}&quot; &quot;${DEST}&quot; &amp;&amp; \\\n    echo &quot;At ${TIME} on ${DATE}, the file ${FILEPATH} was backed up via rsync due to ${EVENT}&quot; &gt;&gt; &quot;${LOG_FILE}&quot;\ndone\n<\/code><\/pre>\n<p>\u8fd9\u91cc\u89e3\u91ca\u4e00\u4e0bIFS\u8fd9\u4e2a\u7cfb\u7edf\u81ea\u5e26\u53d8\u91cf\u3002\u5728 Bash \u811a\u672c\u4e2d\uff0c<code>IFS<\/code>\uff08Internal Field Separator\uff09\u662f\u4e00\u4e2a\u7279\u6b8a\u7684\u73af\u5883\u53d8\u91cf\uff0c\u7528\u4e8e\u5b9a\u4e49\u5982\u4f55\u5728\u5404\u79cd\u547d\u4ee4\u4e2d\u5206\u9694\u5b57\u6bb5\u3001\u53c2\u6570\u548c\u6587\u672c\u3002<code>IFS<\/code> \u901a\u5e38\u7528\u4e8e <code>read<\/code> \u547d\u4ee4\u548c\u811a\u672c\u4e2d\u7684\u5faa\u73af\uff0c\u4ee5\u786e\u5b9a\u5982\u4f55\u5206\u5272\u5b57\u7b26\u4e32\u6210\u591a\u4e2a\u5b57\u6bb5\u3002\u4f60\u4e0d\u80fd\u968f\u610f\u4f7f\u7528\u5176\u4ed6\u53d8\u91cf\u540d\u66ff\u4ee3 <code>IFS<\/code>\uff0c\u56e0\u4e3a\u5b83\u662f Bash shell \u7684\u5185\u7f6e\u53d8\u91cf\uff0c\u5177\u6709\u7279\u5b9a\u7684\u529f\u80fd\u548c\u610f\u4e49\u3002<\/p>\n<ul>\n<li><strong>IFS=' '<\/strong>\uff1a<code>IFS<\/code> \u73af\u5883\u53d8\u91cf\u5b9a\u4e49\u4e86 Bash \u7528\u6765\u786e\u5b9a\u5b57\u6bb5\u8fb9\u754c\u7684\u4e00\u7ec4\u5b57\u7b26\u3002\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff0c\u5c06 <code>IFS<\/code> \u8bbe\u7f6e\u4e3a\u4e00\u4e2a\u7a7a\u683c\uff0c\u610f\u5473\u7740 <code>read<\/code> \u547d\u4ee4\u5c06\u4f7f\u7528\u7a7a\u683c\u6765\u5206\u5272\u8f93\u5165\u884c\u4e2d\u7684\u6570\u636e\u3002\u53ef\u4ee5\u7406\u89e3\u4e3acut -d \u9009\u9879\uff0c\u6307\u5b9a\u5206\u9694\u7b26\u3002<\/li>\n<li><strong>read -r DATE TIME DIR FILE EVENT<\/strong>\uff1a<code>read -r<\/code> \u8bfb\u53d6\u4e00\u884c\u6570\u636e\uff0c<code>-r<\/code> \u53c2\u6570\u9632\u6b62\u53cd\u659c\u6760\u8f6c\u4e49\u5b57\u7b26\u88ab\u89e3\u91ca\u3002<code>DATE<\/code>, <code>TIME<\/code>, <code>DIR<\/code>, <code>FILE<\/code>, <code>EVENT<\/code> \u662f\u53d8\u91cf\u540d\uff0c\u5b83\u4eec\u5c06\u6309\u987a\u5e8f\u63a5\u6536\u7531\u7a7a\u683c\u5206\u9694\u7684\u8f93\u5165\u6570\u636e\u3002<\/li>\n<\/ul>\n<p>\u5de5\u4f5c\u539f\u7406\uff1a<\/p>\n<p>\u5f53 <code>inotifywait<\/code> \u8f93\u51fa\u4e00\u884c\u4fe1\u606f\u65f6\uff0c\u5b83\u4f1a\u6309\u7167 <code>--format<\/code> \u6307\u5b9a\u7684\u683c\u5f0f\u8f93\u51fa\u3002\u4f8b\u5982\uff0c\u5982\u679c <code>--format<\/code> \u88ab\u8bbe\u7f6e\u4e3a <code>&#039;%T %w %f %e&#039;<\/code>\uff0c\u90a3\u4e48\u8f93\u51fa\u53ef\u80fd\u770b\u8d77\u6765\u50cf\u8fd9\u6837\uff1a<\/p>\n<pre><code class=\"language-bash\">2021-04-01 12:00:00 \/path\/to\/directory\/ changedfile.txt MODIFY<\/code><\/pre>\n<ul>\n<li><code>2021-04-01<\/code> \u88ab\u8d4b\u503c\u7ed9 <code>DATE<\/code><\/li>\n<li><code>12:00:00<\/code> \u88ab\u8d4b\u503c\u7ed9 <code>TIME<\/code><\/li>\n<li><code>\/path\/to\/directory\/<\/code> \u88ab\u8d4b\u503c\u7ed9 <code>DIR<\/code><\/li>\n<li><code>changedfile.txt<\/code> \u88ab\u8d4b\u503c\u7ed9 <code>FILE<\/code><\/li>\n<li><code>MODIFY<\/code> \u88ab\u8d4b\u503c\u7ed9 <code>EVENT<\/code><\/li>\n<\/ul>\n<p>\u8fd9\u91cc\u6709\u51e0\u4e2a\u5173\u952e\u7ec4\u4ef6\uff1a<\/p>\n<ul>\n<li><strong>inotifywait \u547d\u4ee4<\/strong>: \u8fd9\u4e2a\u547d\u4ee4\u8c03\u7528 <code>inotifywait<\/code> \u4ee5\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u3002\n<ul>\n<li><code>-mrq<\/code>: \u8fd9\u4e9b\u662f <code>inotifywait<\/code> \u7684\u9009\u9879\uff0c\u5176\u4e2d <code>-m<\/code> \u8868\u793a\u6301\u7eed\u76d1\u63a7\uff0c<code>-r<\/code> \u8868\u793a\u9012\u5f52\u76d1\u63a7\u6240\u6709\u5b50\u76ee\u5f55\uff0c<code>-q<\/code> \u8868\u793a\u9759\u9ed8\u6a21\u5f0f\uff0c\u4e0d\u8f93\u51fa\u989d\u5916\u7684\u4fe1\u606f\u3002<\/li>\n<li><code>--exclude &#039;.*\\.swp&#039;<\/code>: \u8fd9\u4e2a\u9009\u9879\u544a\u8bc9 <code>inotifywait<\/code> \u6392\u9664\u6240\u6709\u4ee5 <code>.swp<\/code> \u7ed3\u5c3e\u7684\u6587\u4ef6\u3002<code>.swp<\/code> \u6587\u4ef6\u901a\u5e38\u662f\u7531 Vim \u6216\u5176\u4ed6\u6587\u672c\u7f16\u8f91\u5668\u521b\u5efa\u7684\u4e34\u65f6\u5907\u4efd\u6587\u4ef6\uff0c\u4f60\u53ef\u80fd\u4e0d\u60f3\u76d1\u63a7\u8fd9\u4e9b\u6587\u4ef6\u7684\u53d8\u52a8\u3002<\/li>\n<li><code>--timefmt &#039;%Y-%m-%d %H:%M:%S&#039;<\/code> \u548c <code>--format &#039;%T %w %f %e&#039;<\/code>: \u8fd9\u4e9b\u9009\u9879\u5b9a\u4e49\u4e86\u8f93\u51fa\u683c\u5f0f\u3002<code>timefmt<\/code> \u8bbe\u7f6e\u65f6\u95f4\u7684\u663e\u793a\u683c\u5f0f\uff0c<code>format<\/code> \u6307\u5b9a\u4e86\u6bcf\u4e2a\u4e8b\u4ef6\u8f93\u51fa\u7684\u4fe1\u606f\uff0c\u5305\u62ec\u65f6\u95f4 (<code>%T<\/code>)\u3001\u8def\u5f84 (<code>%w<\/code>)\u3001\u6587\u4ef6\u540d (<code>%f<\/code>) \u548c\u4e8b\u4ef6\u7c7b\u578b (<code>%e<\/code>)\u3002<\/li>\n<li><code>-e create,delete,moved_to,close_write,attrib<\/code>: \u76d1\u63a7\u7684\u4e8b\u4ef6\u7c7b\u578b\u3002<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u7ba1\u9053\u5230 while \u5faa\u73af<\/strong>: \u8f93\u51fa\u901a\u8fc7\u7ba1\u9053 (<code>|<\/code>) \u4f20\u9012\u7ed9 <code>while<\/code> \u5faa\u73af\uff0c\u8be5\u5faa\u73af\u4f7f\u7528 <code>read<\/code> \u547d\u4ee4\u8bfb\u53d6\u6bcf\u884c\u6570\u636e\u3002\n<ul>\n<li><code>IFS=&#039; &#039;<\/code>: \u8bbe\u7f6e\u5b57\u6bb5\u5206\u9694\u7b26\u4e3a\u7a7a\u683c\uff0c\u4ee5\u6b63\u786e\u5730\u5c06 <code>inotifywait<\/code> \u7684\u8f93\u51fa\u5206\u89e3\u6210\u5355\u72ec\u7684\u53d8\u91cf\u3002<\/li>\n<li><code>read -r DATE TIME DIR FILE EVENT<\/code>: \u8bfb\u53d6\u8f93\u5165\u6d41\u4e2d\u7684\u6570\u636e\uff0c\u5e76\u5c06\u5b83\u4eec\u5206\u914d\u5230\u76f8\u5e94\u7684\u53d8\u91cf\u4e2d\uff0c\u7528\u4e8e\u8fdb\u4e00\u6b65\u5904\u7406\u3002<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>\u5ba2\u6237\u7aef\u8fde\u63a5\u65b9\u5f0f<\/h3>\n<p>\u5f53\u4f60\u4f7f\u7528 <code>rsync<\/code> \u547d\u4ee4\u8fde\u63a5\u5230\u4e00\u4e2a <code>rsync:\/\/<\/code> URL\u65f6\uff0c\u8fd9\u8868\u660e\u4f60\u6b63\u5728\u5c1d\u8bd5\u901a\u8fc7\u7f51\u7edc\u76f4\u63a5\u8fde\u63a5\u5230\u8fd0\u884c\u5728\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u7684 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\uff08daemon\uff09\u3002\u8fd9\u79cd\u8fde\u63a5\u65b9\u5f0f\u4e0d\u4f9d\u8d56\u4e8e SSH \u6216\u5176\u4ed6\u8fdc\u7a0bshell\uff0c\u800c\u662f\u76f4\u63a5\u4e0e <code>rsync<\/code> \u670d\u52a1\u901a\u4fe1\uff0c\u901a\u5e38\u7528\u4e8e\u9ad8\u6548\u7684\u6570\u636e\u4f20\u8f93\u3002<\/p>\n<p><strong>\u547d\u4ee4\u683c\u5f0f\u548c\u89e3\u91ca<\/strong><\/p>\n<pre><code class=\"language-bash\">rsync rsync:\/\/10.0.0.107<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u7684\u5199\u6cd5\u5c1d\u8bd5\u8fde\u63a5\u5230 IP \u5730\u5740\u4e3a <code>10.0.0.107<\/code> \u7684\u670d\u52a1\u5668\u4e0a\u7684 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u3002\u8fd9\u79cd\u683c\u5f0f\u901a\u5e38\u7528\u4e8e\u67e5\u8be2\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u914d\u7f6e\u7684\u53ef\u7528 <code>rsync<\/code> \u6a21\u5757\u3002<\/p>\n<p><strong>\u8be6\u7ec6\u89e3\u91ca<\/strong><\/p>\n<ul>\n<li><code>rsync:\/\/<\/code>\uff1a\u8fd9\u662f\u534f\u8bae\u90e8\u5206\uff0c\u6307\u793a <code>rsync<\/code> \u4f7f\u7528\u5176\u5185\u7f6e\u7684\u7f51\u7edc\u534f\u8bae\u6765\u901a\u4fe1\u3002<\/li>\n<li><code>10.0.0.107<\/code>\uff1a\u8fd9\u662f\u8fdc\u7a0b\u670d\u52a1\u5668\u7684 IP \u5730\u5740\u3002<\/li>\n<\/ul>\n<p><strong>\u7f3a\u5c11\u90e8\u5206\u4fe1\u606f<\/strong><\/p>\n<p>\u5728\u5b9e\u9645\u4f7f\u7528\u4e2d\uff0c\u4ec5\u4ec5\u4f7f\u7528 <code>rsync rsync:\/\/10.0.0.107<\/code> \u547d\u4ee4\u53ef\u80fd\u4e0d\u8db3\u4ee5\u5f00\u59cb\u540c\u6b65\uff0c\u56e0\u4e3a\u5b83\u6ca1\u6709\u6307\u5b9a\u7279\u5b9a\u7684\u6a21\u5757\u540d\u6216\u6587\u4ef6\u8def\u5f84\u3002\u901a\u5e38\uff0c<code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u4f1a\u914d\u7f6e\u591a\u4e2a\u6a21\u5757\uff0c\u6bcf\u4e2a\u6a21\u5757\u5bf9\u5e94\u670d\u52a1\u5668\u4e0a\u7684\u4e0d\u540c\u76ee\u5f55\uff0c\u5ba2\u6237\u7aef\u9700\u8981\u6307\u5b9a\u5176\u4e2d\u4e00\u4e2a\u6a21\u5757\u6765\u8fdb\u884c\u6570\u636e\u4f20\u8f93\u3002<\/p>\n<p><strong>\u5b8c\u6574\u7684\u4f7f\u7528\u793a\u4f8b<\/strong><\/p>\n<p>\u5047\u8bbe\u5728\u670d\u52a1\u5668 <code>10.0.0.107<\/code> \u4e0a\u6709\u4e00\u4e2a\u6a21\u5757\u540d\u4e3a <code>data<\/code>\uff0c\u4f60\u60f3\u4ece\u8fd9\u4e2a\u6a21\u5757\u540c\u6b65\u6587\u4ef6\u5230\u672c\u5730\u76ee\u5f55 <code>\/local\/dir<\/code>\uff0c\u4f60\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync -av rsync:\/\/10.0.0.107\/data \/local\/dir<\/code><\/pre>\n<p>\u8fd9\u91cc\u7684 <code>-a<\/code> \u9009\u9879\u662f\u5f52\u6863\u6a21\u5f0f\uff0c\u5b83\u5305\u542b\u4e86\u591a\u4e2a\u9009\u9879\uff0c\u5982\u9012\u5f52\u590d\u5236\u3001\u4fdd\u6301\u7b26\u53f7\u94fe\u63a5\u3001\u4fdd\u6301\u6743\u9650\u7b49\u3002<code>-v<\/code> \u9009\u9879\u8868\u793a\u8be6\u7ec6\u6a21\u5f0f\uff0c\u4f1a\u663e\u793a\u66f4\u591a\u7684\u540c\u6b65\u4fe1\u606f\u3002<\/p>\n<p><strong>\u67e5\u8be2\u53ef\u7528\u6a21\u5757<\/strong><\/p>\n<p>\u5982\u679c\u4f60\u53ea\u8f93\u5165 <code>rsync rsync:\/\/10.0.0.107<\/code>\uff0c\u901a\u5e38\u7684\u884c\u4e3a\uff08\u53d6\u51b3\u4e8e <code>rsync<\/code> \u670d\u52a1\u5668\u7684\u914d\u7f6e\uff09\u662f\u8fd4\u56de\u4e00\u4e2a\u53ef\u7528\u6a21\u5757\u7684\u5217\u8868\uff0c\u8fd9\u6709\u52a9\u4e8e\u4e86\u89e3\u4f60\u53ef\u4ee5\u8bbf\u95ee\u54ea\u4e9b\u8d44\u6e90\u3002<\/p>\n<pre><code class=\"language-bash\">rsync rsync:\/\/10.0.0.107\/<\/code><\/pre>\n<p>\u8fd9\u5c06\u5217\u51fa\u8fdc\u7a0b <code>rsync<\/code> \u670d\u52a1\u5668\u4e0a\u6240\u6709\u516c\u5f00\u53ef\u7528\u7684\u6a21\u5757\uff0c\u4ee5\u53ca\u53ef\u80fd\u7684\u4e00\u4e9b\u5173\u4e8e\u8fd9\u4e9b\u6a21\u5757\u7684\u63cf\u8ff0\u4fe1\u606f\u3002\u8fd9\u5bf9\u4e8e\u786e\u5b9a\u4f60\u5e94\u8be5\u8fde\u63a5\u5230\u54ea\u4e2a\u6a21\u5757\u975e\u5e38\u6709\u5e2e\u52a9\u3002\u5982\u679c\u670d\u52a1\u5668\u6b63\u786e\u914d\u7f6e\u4e86\u516c\u5f00\u4fe1\u606f\uff0c\u8fd9\u4e2a\u547d\u4ee4\u53ef\u4ee5\u544a\u8bc9\u4f60\u66f4\u591a\u5173\u4e8e\u5982\u4f55\u4e0e\u8be5\u670d\u52a1\u5668\u8fdb\u884c\u6709\u6548\u540c\u6b65\u7684\u7ec6\u8282\u3002<\/p>\n<h2>4.\u76f8\u5173\u547d\u4ee4<\/h2>\n<h3>4.1 rsync<\/h3>\n<p><code>rsync<\/code> \u662f\u4e00\u79cd\u5e38\u7528\u4e8e\u5907\u4efd\u548c\u540c\u6b65\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5b83\u5177\u6709\u9ad8\u6548\u3001\u7075\u6d3b\u7684\u7279\u70b9\u3002<code>rsync<\/code> \u53ef\u4ee5\u5728\u672c\u5730\u6216\u8005\u901a\u8fc7\u7f51\u7edc\u5728\u4e0d\u540c\u7684\u7cfb\u7edf\u4e4b\u95f4\u540c\u6b65\u6587\u4ef6\u548c\u76ee\u5f55\u3002\u5176\u6838\u5fc3\u4f18\u52bf\u5728\u4e8e\uff0c\u5b83\u53ea\u4f20\u8f93\u6587\u4ef6\u7684\u53d8\u5316\u90e8\u5206\uff0c\u800c\u4e0d\u662f\u6bcf\u6b21\u90fd\u4f20\u8f93\u6574\u4e2a\u6587\u4ef6\uff0c\u4ece\u800c\u663e\u8457\u63d0\u9ad8\u6548\u7387\u3002\u4e0b\u9762\u5c06\u8be6\u7ec6\u4ecb\u7ecd <code>rsync<\/code> \u7684\u57fa\u672c\u7528\u6cd5\u548c\u4e00\u4e9b\u5e38\u89c1\u7684\u4f7f\u7528\u6848\u4f8b\u3002<\/p>\n<pre><code class=\"language-bash\"># \u9009\u9879\uff1a\n\u6587\u4ef6\u4f20\u8f93\u9009\u9879\n--verbose, -v: \u589e\u52a0\u8f93\u51fa\u7684\u8be6\u7ec6\u7a0b\u5ea6\uff0c\u5e2e\u52a9\u7528\u6237\u4e86\u89e3\u6b63\u5728\u53d1\u751f\u7684\u4e8b\u60c5\u3002\n--info=FLAGS: \u5141\u8bb8\u4f60\u66f4\u7ec6\u81f4\u5730\u63a7\u5236\u54ea\u4e9b\u989d\u5916\u7684\u64cd\u4f5c\u4fe1\u606f\u88ab\u8f93\u51fa\u3002\n--debug=FLAGS: \u63d0\u4f9b\u8be6\u7ec6\u7684\u8c03\u8bd5\u4fe1\u606f\uff0c\u6709\u52a9\u4e8e\u95ee\u9898\u8bca\u65ad\u548c\u7406\u89e3 rsync \u7684\u884c\u4e3a\u3002\n--stderr=e|a|c: \u63a7\u5236\u6807\u51c6\u9519\u8bef\u8f93\u51fa\u7684\u6a21\u5f0f\uff1be=errors only, a=all, c=compress (\u5373\u53ea\u663e\u793a\u9519\u8bef\uff0c\u663e\u793a\u6240\u6709\uff0c\u6216\u538b\u7f29\u8f93\u51fa)\u3002\n--quiet, -q: \u6291\u5236\u975e\u9519\u8bef\u4fe1\u606f\uff0c\u4f7f\u8f93\u51fa\u66f4\u6e05\u6d01\u3002\n--no-motd: \u5728\u4f7f\u7528 rsync \u5b88\u62a4\u8fdb\u7a0b\u65f6\uff0c\u4e0d\u663e\u793a\u6d88\u606f\u65e5\u5fd7\u3002\n\u6587\u4ef6\u9009\u62e9\u4e0e\u5ffd\u7565\n--checksum, -c: \u57fa\u4e8e\u6587\u4ef6\u6821\u9a8c\u548c\u800c\u975e\u6587\u4ef6\u7684\u4fee\u6539\u65f6\u95f4\u548c\u5927\u5c0f\u6765\u51b3\u5b9a\u662f\u5426\u540c\u6b65\u3002\n--archive, -a: \u5f52\u6863\u6a21\u5f0f\uff0c\u5305\u62ec\u8bb8\u591a\u4fdd\u6301\u6587\u4ef6\u5c5e\u6027\u7684\u9009\u9879\uff0c\u76f8\u5f53\u4e8e-rlptgoD\uff08\u4f46\u4e0d\u5305\u62ec -H, -A, -X\uff09\u3002\n--no-OPTION: \u5173\u95ed\u4e00\u4e2a\u9ed8\u8ba4\u7684\u9009\u9879\uff08\u4f8b\u5982 --no-D\uff09\u3002\n--recursive, -r: \u9012\u5f52\u5230\u76ee\u5f55\u4e2d\u3002\n--relative, -R: \u4f7f\u7528\u76f8\u5bf9\u8def\u5f84\u540d\u3002\n--no-implied-dirs: \u5728\u4f7f\u7528\u76f8\u5bf9\u8def\u5f84\u540d\u65f6\u4e0d\u53d1\u9001\u9690\u542b\u7684\u76ee\u5f55\u8def\u5f84\u3002\n\u5907\u4efd\u548c\u7248\u672c\u63a7\u5236\n--backup, -b: \u521b\u5efa\u88ab\u8986\u76d6\u6216\u5220\u9664\u6587\u4ef6\u7684\u5907\u4efd\u3002\n--backup-dir=DIR: \u6307\u5b9a\u5907\u4efd\u6587\u4ef6\u7684\u5b58\u653e\u76ee\u5f55\u3002\n--suffix=SUFFIX: \u6307\u5b9a\u5907\u4efd\u6587\u4ef6\u7684\u540e\u7f00\uff0c\u9ed8\u8ba4\u4e3a ~\u3002\n\u66f4\u65b0\u63a7\u5236\n--update, -u: \u8df3\u8fc7\u90a3\u4e9b\u76ee\u6807\u4e2d\u5df2\u7ecf\u65b0\u4e8e\u6e90\u4e2d\u7684\u6587\u4ef6\u3002\n--inplace: \u76f4\u63a5\u5728\u76ee\u6807\u6587\u4ef6\u4e0a\u66f4\u65b0\uff0c\u4e0d\u4f7f\u7528\u4e34\u65f6\u6587\u4ef6\u3002\n--append: \u53ea\u8ffd\u52a0\u6570\u636e\u5230\u6587\u4ef6\u7684\u672b\u5c3e\u3002\n--append-verify: \u8ffd\u52a0\u6a21\u5f0f\u4e0b\uff0c\u4f7f\u7528\u73b0\u6709\u6587\u4ef6\u6570\u636e\u7684\u6821\u9a8c\u548c\u3002\n\u76ee\u5f55\u5904\u7406\n--dirs, -d: \u4f20\u8f93\u76ee\u5f55\u800c\u4e0d\u9012\u5f52\u3002\n--mkpath: \u4e3a\u76ee\u7684\u5730\u521b\u5efa\u4e0d\u5b58\u5728\u7684\u76ee\u5f55\u7ed3\u6784\u3002\n--links, -l: \u590d\u5236\u7b26\u53f7\u94fe\u63a5\u4f5c\u4e3a\u7b26\u53f7\u94fe\u63a5\u3002\n--copy-links, -L: \u5c06\u7b26\u53f7\u94fe\u63a5\u8f6c\u6362\u6210\u5f15\u7528\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u3002\n--copy-unsafe-links: \u4ec5\u8f6c\u6362\u6307\u5411\u6e90\u6811\u5916\u90e8\u7684\u4e0d\u5b89\u5168\u7684\u7b26\u53f7\u94fe\u63a5\u3002\n--safe-links: \u5ffd\u7565\u6307\u5411\u6e90\u6811\u5916\u90e8\u7684\u7b26\u53f7\u94fe\u63a5\u3002\n--munge-links: \u4fee\u6539\u7b26\u53f7\u94fe\u63a5\u4f7f\u5176\u5728\u63a5\u6536\u7aef\u5b89\u5168\u4f46\u4e0d\u53ef\u7528\u3002\n--copy-dirlinks, -k: \u5c06\u6307\u5411\u76ee\u5f55\u7684\u7b26\u53f7\u94fe\u63a5\u5f53\u4f5c\u5f15\u7528\u7684\u76ee\u5f55\u590d\u5236\u3002\n--keep-dirlinks, -K: \u5728\u63a5\u6536\u7aef\u5c06\u7b26\u53f7\u94fe\u63a5\u5f53\u4f5c\u76ee\u5f55\u5bf9\u5f85\u3002\n--hard-links, -H: \u4fdd\u6301\u786c\u94fe\u63a5\u3002\n\u6743\u9650\u548c\u5c5e\u6027\n--perms, -p: \u4fdd\u6301\u6587\u4ef6\u6743\u9650\u3002\n--executability, -E: \u4fdd\u6301\u53ef\u6267\u884c\u6587\u4ef6\u7684\u6743\u9650\u3002\n--chmod=CHMOD: \u4fee\u6539\u6587\u4ef6\u548c\u76ee\u5f55\u7684\u6743\u9650\u3002\n--acls, -A: \u4fdd\u6301 ACL\uff08\u8bbf\u95ee\u63a7\u5236\u5217\u8868\uff09\u3002\n--xattrs, -X: \u4fdd\u6301\u6269\u5c55\u5c5e\u6027\u3002\n--owner, -o: \u4fdd\u6301\u6240\u6709\u8005\uff08\u4ec5\u8d85\u7ea7\u7528\u6237\uff09\u3002\n--group, -g: \u4fdd\u6301\u6587\u4ef6\u7ec4\u3002\n\u7279\u6b8a\u6587\u4ef6\u5904\u7406\n--devices: \u4fdd\u6301\u8bbe\u5907\u6587\u4ef6\uff08\u4ec5\u8d85\u7ea7\u7528\u6237\uff09\u3002\n--copy-devices: \u5c06\u8bbe\u5907\u6587\u4ef6\u7684\u5185\u5bb9\u4f5c\u4e3a\u666e\u901a\u6587\u4ef6\u590d\u5236\u3002\n--specials: \u4fdd\u6301\u7279\u6b8a\u6587\u4ef6\u3002\n--D: \u540c\u65f6\u4fdd\u6301\u8bbe\u5907\u6587\u4ef6\u548c\u7279\u6b8a\u6587\u4ef6\u3002\n\u65f6\u95f4\u5c5e\u6027\n--times, -t: \u4fdd\u6301\u6587\u4ef6\u4fee\u6539\u65f6\u95f4\u3002\n--atimes, -U: \u4fdd\u6301\u6587\u4ef6\u8bbf\u95ee\u65f6\u95f4\u3002\n--open-noatime: \u6253\u5f00\u6587\u4ef6\u65f6\u4e0d\u66f4\u65b0\u8bbf\u95ee\u65f6\u95f4\u3002\n--crtimes, -N: \u4fdd\u6301\u6587\u4ef6\u521b\u5efa\u65f6\u95f4\u3002\n--omit-dir-times, -O: \u4e0d\u4fdd\u6301\u76ee\u5f55\u7684\u4fee\u6539\u65f6\u95f4\u3002\n--omit-link-times, -J: \u4e0d\u4fdd\u6301\u7b26\u53f7\u94fe\u63a5\u7684\u4fee\u6539\u65f6\u95f4\u3002\n\u9ad8\u7ea7\u63a7\u5236\u9009\u9879\n--super: \u5141\u8bb8\u63a5\u6536\u65b9\u8fdb\u884c\u8d85\u7ea7\u7528\u6237\u64cd\u4f5c\u3002\n--fake-super: \u4f7f\u7528\u6269\u5c55\u5c5e\u6027\u6765\u5b58\u50a8\/\u6062\u590d\u9700\u8981\u8d85\u7ea7\u7528\u6237\u6743\u9650\u7684\u6587\u4ef6\u5c5e\u6027\u3002\n--sparse, -S: \u4e3a\u4e86\u8282\u7ea6\u78c1\u76d8\u7a7a\u95f4\uff0c\u5c06\u4e00\u7cfb\u5217\u7684\u7a7a\u5b57\u8282\uff08nulls\uff09\u8f6c\u6362\u4e3a\u7a00\u758f\u5757\u3002\n--preallocate: \u5728\u5199\u5165\u6587\u4ef6\u4e4b\u524d\u9884\u5148\u4e3a\u5176\u5206\u914d\u7a7a\u95f4\u3002\n--write-devices: \u5c06\u8bbe\u5907\u6587\u4ef6\u7684\u5185\u5bb9\u4f5c\u4e3a\u666e\u901a\u6587\u4ef6\u76f4\u63a5\u5199\u5165\uff08\u8fd9\u901a\u5e38\u9700\u8981\u4f7f\u7528 --inplace \u9009\u9879\uff09\u3002\n\u6548\u7387\u548c\u6027\u80fd\u9009\u9879\n--dry-run, -n: \u6a21\u62df\u8fd0\u884c\uff0c\u4e0d\u8fdb\u884c\u5b9e\u9645\u7684\u6587\u4ef6\u4f20\u8f93\uff0c\u901a\u5e38\u7528\u4e8e\u6d4b\u8bd5\u3002\n--whole-file, -W: \u4e0d\u4f7f\u7528\u589e\u91cf\u66f4\u65b0\u7b97\u6cd5\uff0c\u800c\u662f\u4f20\u8f93\u6574\u4e2a\u6587\u4ef6\uff0c\u9002\u7528\u4e8e\u672c\u5730\u7f51\u7edc\u3002\n--checksum-choice=STR: \u9009\u62e9\u4f7f\u7528\u7279\u5b9a\u7684\u6821\u9a8c\u548c\u7b97\u6cd5\u3002\n--one-file-system, -x: \u4e0d\u8de8\u8d8a\u6587\u4ef6\u7cfb\u7edf\u8fb9\u754c\u3002\n--block-size=SIZE, -B: \u5f3a\u5236\u4f7f\u7528\u56fa\u5b9a\u7684\u6821\u9a8c\u548c\u5757\u5927\u5c0f\u3002\n\u8fdc\u7a0b\u64cd\u4f5c\u548c\u7f51\u7edc\u63a7\u5236\n--rsh=COMMAND, -e: \u6307\u5b9a\u7528\u4e8e\u8fde\u63a5\u8fdc\u7a0b\u7cfb\u7edf\u7684 shell \u547d\u4ee4\uff0c\u4f8b\u5982 ssh\u3002\n--rsync-path=PROGRAM: \u6307\u5b9a\u8fdc\u7a0b\u4e3b\u673a\u4e0a rsync \u7a0b\u5e8f\u7684\u8def\u5f84\u3002\n\u5220\u9664\u63a7\u5236\n--delete: \u5728\u540c\u6b65\u8fc7\u7a0b\u4e2d\u5220\u9664\u90a3\u4e9b\u5728\u6e90\u76ee\u5f55\u4e2d\u4e0d\u5b58\u5728\u7684\u6587\u4ef6\u3002\n--delete-before: \u5148\u5220\u9664\u90a3\u4e9b\u5df2\u7ecf\u4e0d\u5b58\u5728\u4e8e\u6e90\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\uff0c\u7136\u540e\u5f00\u59cb\u4f20\u8f93\u5176\u4ed6\u6587\u4ef6\u3002\n--delete-during: \u5728\u4f20\u8f93\u8fc7\u7a0b\u4e2d\u5220\u9664\u4e0d\u5b58\u5728\u4e8e\u6e90\u76ee\u5f55\u7684\u6587\u4ef6\u3002\n--delete-delay: \u5ef6\u8fdf\u5220\u9664\u76f4\u5230\u6240\u6709\u6587\u4ef6\u90fd\u88ab\u4f20\u8f93\u5b8c\u6210\u3002\n--delete-after: \u540c\u6b65\u5b8c\u6210\u540e\u5220\u9664\u90a3\u4e9b\u4e0d\u5b58\u5728\u4e8e\u6e90\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\u3002\n--delete-excluded: \u5220\u9664\u76ee\u6807\u76ee\u5f55\u4e2d\u88ab\u6392\u9664\u7684\u6587\u4ef6\u3002\n\u9519\u8bef\u548c\u5f02\u5e38\u5904\u7406\n--ignore-missing-args: \u5ffd\u7565\u7f3a\u5931\u7684\u6e90\u53c2\u6570\u800c\u4e0d\u62a5\u9519\u3002\n--delete-missing-args: \u5220\u9664\u76ee\u7684\u5730\u4e2d\u7f3a\u5931\u7684\u6e90\u53c2\u6570\u3002\n--ignore-errors: \u5373\u4f7f\u5b58\u5728I\/O\u9519\u8bef\u4e5f\u8fdb\u884c\u5220\u9664\u64cd\u4f5c\u3002\n--force: \u5f3a\u5236\u5220\u9664\u975e\u7a7a\u76ee\u5f55\u3002\n--max-delete=NUM: \u9650\u5236\u5220\u9664\u7684\u6587\u4ef6\u6570\u91cf\uff0c\u9632\u6b62\u610f\u5916\u5220\u9664\u8fc7\u591a\u6587\u4ef6\u3002\n\u6587\u4ef6\u5927\u5c0f\u9650\u5236\n--max-size=SIZE: \u4e0d\u4f20\u8f93\u8d85\u8fc7\u6307\u5b9a\u5927\u5c0f\u7684\u6587\u4ef6\u3002\n--min-size=SIZE: \u4e0d\u4f20\u8f93\u5c0f\u4e8e\u6307\u5b9a\u5927\u5c0f\u7684\u6587\u4ef6\u3002\n\u6027\u80fd\u4f18\u5316\n--partial: \u4fdd\u7559\u90a3\u4e9b\u53ea\u4f20\u8f93\u4e86\u4e00\u90e8\u5206\u7684\u6587\u4ef6\uff0c\u4ee5\u4fbf\u518d\u6b21\u5c1d\u8bd5\u65f6\u53ef\u4ee5\u7ee7\u7eed\u4f7f\u7528\u8fd9\u4e9b\u90e8\u5206\u5b8c\u6210\u4f20\u8f93\u3002\n--partial-dir=DIR: \u5c06\u672a\u5b8c\u6210\u4f20\u8f93\u7684\u6587\u4ef6\u653e\u5165\u6307\u5b9a\u76ee\u5f55\u3002\n--delay-updates: \u76f4\u5230\u6240\u6709\u6587\u4ef6\u90fd\u6210\u529f\u4f20\u8f93\u5b8c\u6210\u540e\uff0c\u518d\u5c06\u5b83\u4eec\u4e00\u8d77\u79fb\u52a8\u5230\u76ee\u6807\u76ee\u5f55\u3002\n--prune-empty-dirs, -m: \u5220\u9664\u7a7a\u7684\u76ee\u5f55\u94fe\u3002\n--numeric-ids: \u4e0d\u5c06\u7528\u6237\u548c\u7ec4 ID \u8f6c\u6362\u4e3a\u540d\u79f0\u3002\n\u7528\u6237\u548c\u7ec4\u6620\u5c04\n--usermap=STRING: \u6620\u5c04\u7528\u6237\u540d\uff0c\u6309\u7ed9\u5b9a\u7684\u89c4\u5219\u4fee\u6539\u6587\u4ef6\u6240\u6709\u8005\u3002\n--groupmap=STRING: \u6620\u5c04\u7528\u6237\u7ec4\u540d\uff0c\u6309\u7ed9\u5b9a\u7684\u89c4\u5219\u4fee\u6539\u6587\u4ef6\u6240\u5c5e\u7ec4\u3002\n--chown=USER:GROUP: \u7b80\u5355\u5730\u66f4\u6539\u6587\u4ef6\u7684\u6240\u6709\u8005\u548c\u6240\u5c5e\u7ec4\u3002\n\u8d85\u65f6\u548c\u8fde\u63a5\n--timeout=SECONDS: \u8bbe\u7f6eI\/O\u64cd\u4f5c\u7684\u8d85\u65f6\u65f6\u95f4\u3002\n--contimeout=SECONDS: \u8bbe\u7f6e\u4e0e\u5b88\u62a4\u8fdb\u7a0b\u7684\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4\u3002\n\u8fde\u7eed\u7684\u547d\u4ee4\u9009\u9879\n--password-file=FILE: \u4ece\u6307\u5b9a\u6587\u4ef6\u4e2d\u8bfb\u53d6\u7528\u4e8e\u8bbf\u95ee rsync \u5b88\u62a4\u8fdb\u7a0b\u7684\u5bc6\u7801\u3002\u8fd9\u4f7f\u5f97\u7528\u6237\u4e0d\u5fc5\u5728\u547d\u4ee4\u884c\u4e2d\u624b\u52a8\u8f93\u5165\u5bc6\u7801\uff0c\u589e\u52a0\u4e86\u811a\u672c\u4f7f\u7528 rsync \u7684\u4fbf\u5229\u6027\u548c\u5b89\u5168\u6027\u3002\n--list-only: \u4ec5\u5217\u51fa\u6e90\u76ee\u5f55\u4e2d\u7684\u6587\u4ef6\u548c\u76ee\u5f55\uff0c\u4e0d\u8fdb\u884c\u4efb\u4f55\u6587\u4ef6\u4f20\u8f93\u3002\u8fd9\u5bf9\u4e8e\u67e5\u770b\u5c06\u8981\u540c\u6b65\u7684\u6587\u4ef6\u5217\u8868\u5f88\u6709\u7528\uff0c\u7279\u522b\u662f\u5728\u8fdb\u884c\u5b9e\u9645\u540c\u6b65\u524d\u7684\u9884\u68c0\u67e5\u9636\u6bb5\u3002\n--bwlimit=RATE: \u9650\u5236 rsync \u4f7f\u7528\u7684\u5e26\u5bbd\uff0c\u5355\u4f4d\u4e3a KB\/s\u3002\u8fd9\u6709\u52a9\u4e8e\u63a7\u5236 rsync \u5728\u7f51\u7edc\u4e0a\u7684\u6570\u636e\u4f20\u8f93\uff0c\u907f\u514d\u5360\u7528\u8fc7\u591a\u5e26\u5bbd\u8d44\u6e90\u3002\n--write-batch=FILE: \u5c06\u53d8\u66f4\u8bb0\u5f55\u5230\u4e00\u4e2a\u6279\u5904\u7406\u6587\u4ef6\u4e2d\uff0c\u4e4b\u540e\u53ef\u4ee5\u4f7f\u7528\u8fd9\u4e2a\u6587\u4ef6\u6765\u66f4\u65b0\u5176\u4ed6\u7cfb\u7edf\u3002\u8fd9\u662f\u4e00\u79cd\u9ad8\u6548\u7684\u65b9\u5f0f\u6765\u5c06\u66f4\u65b0\u5e94\u7528\u5230\u591a\u4e2a\u76ee\u6807\u4e0a\u3002\n--only-write-batch=FILE: \u521b\u5efa\u4e00\u4e2a\u6279\u5904\u7406\u6587\u4ef6\uff0c\u4f46\u4e0d\u6267\u884c\u5b9e\u9645\u7684\u66f4\u65b0\u64cd\u4f5c\u3002\u8fd9\u53ef\u4ee5\u7528\u4e8e\u751f\u6210\u6279\u5904\u7406\u6587\u4ef6\uff0c\u7a0d\u540e\u518d\u624b\u52a8\u5e94\u7528\u8fd9\u4e9b\u66f4\u6539\u3002\n--read-batch=FILE: \u4ece\u4e00\u4e2a\u6279\u5904\u7406\u6587\u4ef6\u4e2d\u8bfb\u53d6\u66f4\u6539\u5e76\u5e94\u7528\u5b83\u4eec\u3002\u8fd9\u901a\u5e38\u4e0e --write-batch \u751f\u6210\u7684\u6587\u4ef6\u4e00\u8d77\u4f7f\u7528\uff0c\u7528\u4e8e\u5c06\u76f8\u540c\u7684\u66f4\u6539\u5e94\u7528\u5230\u591a\u4e2a\u4f4d\u7f6e\u3002\n--protocol=NUM: \u6307\u5b9a\u4f7f\u7528\u7684 rsync \u534f\u8bae\u7248\u672c\u3002\u8fd9\u53ef\u4ee5\u7528\u4e8e\u786e\u4fdd\u4e0e\u65e7\u7248\u672c\u7684 rsync \u517c\u5bb9\u3002\n--iconv=CONVERT_SPEC: \u5728\u4f20\u8f93\u6587\u4ef6\u540d\u65f6\u8fdb\u884c\u5b57\u7b26\u96c6\u8f6c\u6362\u3002\u8fd9\u5bf9\u4e8e\u5728\u4f7f\u7528\u4e0d\u540c\u7f16\u7801\u7684\u7cfb\u7edf\u4e4b\u95f4\u540c\u6b65\u6587\u4ef6\u65f6\u975e\u5e38\u6709\u7528\u3002\n--checksum-seed=NUM: \u8bbe\u7f6e\u7528\u4e8e\u6587\u4ef6\u6821\u9a8c\u548c\u7684\u79cd\u5b50\u3002\u8fd9\u662f\u4e00\u4e2a\u9ad8\u7ea7\u7279\u6027\uff0c\u53ef\u7528\u4e8e\u8c03\u6574 rsync \u7684\u6821\u9a8c\u548c\u884c\u4e3a\u3002\n\u5b8c\u6574\u6027\u548c\u6027\u80fd\u9009\u9879\n--ipv4, -4 \u548c --ipv6, -6: \u5206\u522b\u6307\u5b9a\u4f7f\u7528 IPv4 \u6216 IPv6 \u8fdb\u884c\u8fde\u63a5\u3002\u8fd9\u5bf9\u4e8e\u5728\u7279\u5b9a\u7c7b\u578b\u7684\u7f51\u7edc\u73af\u5883\u4e2d\u8fd0\u884c rsync \u65f6\u786e\u4fdd\u7f51\u7edc\u517c\u5bb9\u6027\u975e\u5e38\u6709\u7528\u3002\n--version, -V: \u8f93\u51fa rsync \u7684\u7248\u672c\u4fe1\u606f\u548c\u5176\u4ed6\u4e00\u4e9b\u7cfb\u7edf\u4fe1\u606f\uff0c\u7136\u540e\u9000\u51fa\u3002\u8fd9\u7528\u4e8e\u786e\u8ba4\u6b63\u5728\u4f7f\u7528\u7684 rsync \u7248\u672c\u3002\n--help, -h: \u663e\u793a rsync \u547d\u4ee4\u7684\u5e2e\u52a9\u4fe1\u606f\uff0c\u7136\u540e\u9000\u51fa\u3002\u8fd9\u662f\u83b7\u53d6\u5173\u4e8e rsync \u9009\u9879\u548c\u7528\u6cd5\u7684\u5feb\u901f\u5e2e\u52a9\u7684\u4e00\u79cd\u65b9\u5f0f\u3002<\/code><\/pre>\n<p><code>rsync<\/code> \u662f\u4e00\u79cd\u5e38\u7528\u4e8e\u5907\u4efd\u548c\u540c\u6b65\u6587\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff0c\u5b83\u5177\u6709\u9ad8\u6548\u3001\u7075\u6d3b\u7684\u7279\u70b9\u3002<code>rsync<\/code> \u53ef\u4ee5\u5728\u672c\u5730\u6216\u8005\u901a\u8fc7\u7f51\u7edc\u5728\u4e0d\u540c\u7684\u7cfb\u7edf\u4e4b\u95f4\u540c\u6b65\u6587\u4ef6\u548c\u76ee\u5f55\u3002\u5176\u6838\u5fc3\u4f18\u52bf\u5728\u4e8e\uff0c\u5b83\u53ea\u4f20\u8f93\u6587\u4ef6\u7684\u53d8\u5316\u90e8\u5206\uff0c\u800c\u4e0d\u662f\u6bcf\u6b21\u90fd\u4f20\u8f93\u6574\u4e2a\u6587\u4ef6\uff0c\u4ece\u800c\u663e\u8457\u63d0\u9ad8\u6548\u7387\u3002\u4e0b\u9762\u5c06\u8be6\u7ec6\u4ecb\u7ecd <code>rsync<\/code> \u7684\u57fa\u672c\u7528\u6cd5\u548c\u4e00\u4e9b\u5e38\u89c1\u7684\u4f7f\u7528\u6848\u4f8b\u3002<\/p>\n<h4>\u57fa\u672c\u8bed\u6cd5<\/h4>\n<pre><code class=\"language-bash\">rsync [\u9009\u9879] \u6e90 \u76ee\u6807\nUser\nUsage: rsync [OPTION]... SRC [SRC]... DEST\n  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST\n  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST\n  or   rsync [OPTION]... SRC [SRC]... rsync:\/\/[USER@]HOST[:PORT]\/DEST\n  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]\n  or   rsync [OPTION]... [USER@]HOST::SRC [DEST]\n  or   rsync [OPTION]... rsync:\/\/[USER@]HOST[:PORT]\/SRC [DEST]\nThe &#039;:&#039; usages connect via remote shell, while &#039;::&#039; &amp; &#039;rsync:\/\/&#039; usages connect\nto an rsync daemon, and require SRC or DEST to start with a module name.<\/code><\/pre>\n<p><code>rsync<\/code> \u547d\u4ee4\u7684\u4f7f\u7528\u65b9\u6cd5\u8868\u8fbe\u4e86\u5982\u4f55\u901a\u8fc7\u4e0d\u540c\u7684\u65b9\u5f0f\u6765\u540c\u6b65\u6587\u4ef6\u548c\u76ee\u5f55\uff0c\u8fd9\u5305\u62ec\u672c\u5730\u590d\u5236\u3001\u901a\u8fc7\u8fdc\u7a0bshell\uff08\u5982SSH\uff09\u4f20\u8f93\u4ee5\u53ca\u76f4\u63a5\u4e0e <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\uff08daemon\uff09\u901a\u4fe1\u3002\u5404\u79cd\u4f7f\u7528\u65b9\u5f0f\u9002\u7528\u4e8e\u4e0d\u540c\u7684\u540c\u6b65\u573a\u666f\u3002\u4e0b\u9762\u662f\u5bf9\u5404\u79cd\u7528\u6cd5\u7684\u8be6\u7ec6\u89e3\u91ca\uff1a<\/p>\n<ul>\n<li><code>rsync [OPTION]... SRC [SRC]... DEST<\/code> \u8fd9\u79cd\u7528\u6cd5\u662f\u6700\u7b80\u5355\u7684\uff0c\u7528\u4e8e\u5728\u672c\u5730\u7cfb\u7edf\u4e0a\u4ece\u4e00\u4e2a\u6216\u591a\u4e2a\u6e90\u76ee\u5f55\uff08<code>SRC<\/code>\uff09\u540c\u6b65\u5230\u76ee\u6807\u76ee\u5f55\uff08<code>DEST<\/code>\uff09\u3002<\/li>\n<li><code>rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST<\/code> \u4f7f\u7528\u8fd9\u79cd\u65b9\u6cd5\uff0c<code>rsync<\/code> \u901a\u8fc7\u8fdc\u7a0bshell\uff08\u901a\u5e38\u662fSSH\uff09\u8fde\u63a5\u5230\u53e6\u4e00\u53f0\u673a\u5668\u3002\u8fd9\u91cc\uff0c<code>USER@HOST:DEST<\/code> \u6307\u5b9a\u4e86\u8fdc\u7a0b\u7528\u6237\u548c\u4e3b\u673a\uff0c\u4ee5\u53ca\u76ee\u6807\u8def\u5f84\u3002\u5982\u679c\u7701\u7565 <code>USER<\/code>\uff0c\u5219\u4f7f\u7528\u672c\u5730\u7528\u6237\u540d\u3002<\/li>\n<li><code>rsync [OPTION]... [USER@]HOST:SRC [DEST]<\/code> \u8fd9\u662f\u4e0a\u8ff0\u7528\u6cd5\u7684\u9006\u5411\u64cd\u4f5c\uff0c\u5373\u4ece\u8fdc\u7a0b\u7cfb\u7edf\u540c\u6b65\u6587\u4ef6\u5230\u672c\u5730\u7cfb\u7edf\u3002<\/li>\n<li><code>rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST<\/code><\/li>\n<li><code>rsync [OPTION]... [USER@]HOST::SRC [DEST]<\/code> \u8fd9\u4e24\u79cd\u7528\u6cd5\u901a\u8fc7 <code>::<\/code> \u8fde\u63a5\u5230\u8fd0\u884c\u5728\u6307\u5b9a\u4e3b\u673a\u4e0a\u7684 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u3002\u8fd9\u79cd\u65b9\u5f0f\u901a\u5e38\u7528\u4e8e\u5927\u89c4\u6a21\u7684\u6570\u636e\u5907\u4efd\u548c\u955c\u50cf\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u63d0\u4f9b\u66f4\u591a\u7684\u670d\u52a1\u5668\u7aef\u63a7\u5236\uff0c\u5e76\u4e14\u7ecf\u5e38\u4e0d\u9700\u8981\u7528\u6237\u9a8c\u8bc1\u3002<\/li>\n<li><code>rsync [OPTION]... SRC [SRC]... rsync:\/\/[USER@]HOST[:PORT]\/DEST<\/code><\/li>\n<li><code>rsync [OPTION]... rsync:\/\/[USER@]HOST[:PORT]\/SRC [DEST]<\/code> \u8fd9\u4e24\u79cd\u65b9\u5f0f\u4e5f\u662f\u8fde\u63a5\u5230 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\uff0c\u4f46\u4f7f\u7528\u7684\u662f URL \u683c\u5f0f\u7684\u5730\u5740\u3002\u5982\u679c\u6307\u5b9a\u4e86\u7aef\u53e3\uff08<code>PORT<\/code>\uff09\uff0c\u5219\u8fde\u63a5\u5230\u8be5\u7aef\u53e3\u4e0a\u7684 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\uff1b\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u7aef\u53e3\uff0c\u901a\u5e38\u9ed8\u8ba4\u4e3a 873\u3002<\/li>\n<\/ul>\n<p>\u5728\u4e0e <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u901a\u4fe1\u65f6\uff0c<code>SRC<\/code> \u6216 <code>DEST<\/code> \u5fc5\u987b\u4ee5\u6a21\u5757\u540d\u5f00\u5934\uff0c\u6a21\u5757\u540d\u662f\u5728 <code>rsync<\/code> \u5b88\u62a4\u8fdb\u7a0b\u914d\u7f6e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\uff0c\u7528\u4e8e\u6307\u5b9a\u53ef\u8bbf\u95ee\u7684\u76ee\u5f55\u3002<\/p>\n<h4>\u5e38\u7528\u9009\u9879<\/h4>\n<ul>\n<li><code>-v<\/code> (<code>--verbose<\/code>): \u8f93\u51fa\u8be6\u7ec6\u7684\u8fc7\u7a0b\u4fe1\u606f\u3002<\/li>\n<li><code>-a<\/code> (<code>--archive<\/code>): \u5f52\u6863\u6a21\u5f0f\uff0c\u7b49\u4e8e <code>-rlptgoD<\/code>\uff08\u9012\u5f52\u3001\u4fdd\u6301\u8f6f\u94fe\u63a5\u3001\u4fdd\u6301\u6743\u9650\u3001\u4fdd\u6301\u65f6\u95f4\u3001\u4fdd\u6301\u7ec4\u3001\u4fdd\u6301\u6240\u6709\u8005\u3001\u4fdd\u6301\u8bbe\u5907\u6587\u4ef6\uff09\u3002<\/li>\n<li><code>-z<\/code> (<code>--compress<\/code>): \u5728\u4f20\u8f93\u65f6\u538b\u7f29\u6570\u636e\u3002<\/li>\n<li><code>--delete<\/code>: \u5220\u9664\u90a3\u4e9b\u5b58\u5728\u4e8e\u6e90\u4f4d\u7f6e\u4f46\u4e0d\u5b58\u5728\u4e8e\u76ee\u7684\u4f4d\u7f6e\u7684\u6587\u4ef6\u3002<\/li>\n<li><code>-n<\/code> (<code>--dry-run<\/code>): \u6a21\u62df\u8fd0\u884c\uff0c\u5b9e\u9645\u4e0a\u4e0d\u4f20\u8f93\u6587\u4ef6\u3002<\/li>\n<li><code>-e<\/code> (<code>--rsh=COMMAND<\/code>): \u6307\u5b9a\u8981\u4f7f\u7528\u7684\u8fdc\u7a0bshell\u7a0b\u5e8f\uff0c\u5e38\u7528\u6765\u6307\u5b9a ssh\u3002<\/li>\n<\/ul>\n<h4>\u4f7f\u7528\u6848\u4f8b<\/h4>\n<h5>1. \u672c\u5730\u6587\u4ef6\u540c\u6b65<\/h5>\n<p>\u540c\u6b65\u672c\u5730\u4e24\u4e2a\u76ee\u5f55\uff0c\u786e\u4fdd\u5b83\u4eec\u5305\u542b\u76f8\u540c\u7684\u6587\u4ef6\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u5982\u679c\u6e90\u548c\u76ee\u6807\u76ee\u5f55\u540e\u9762\u52a0\u4e0a\u659c\u6760 <code>\/<\/code>\uff0c<code>rsync<\/code> \u4f1a\u540c\u6b65\u76ee\u5f55\u5185\u5bb9\u800c\u4e0d\u662f\u76ee\u5f55\u672c\u8eab\u3002<\/p>\n<h5>2. \u4f7f\u7528 SSH \u8fdb\u884c\u8fdc\u7a0b\u540c\u6b65<\/h5>\n<p>\u901a\u8fc7 SSH \u540c\u6b65\u672c\u5730\u6587\u4ef6\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -avz -e ssh \/path\/to\/local\/dir\/ user@remotehost:\/path\/to\/remote\/dir\/<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u5c06\u672c\u5730\u76ee\u5f55 <code>\/path\/to\/local\/dir\/<\/code> \u540c\u6b65\u5230\u8fdc\u7a0b\u4e3b\u673a\u4e0a\u7684 <code>\/path\/to\/remote\/dir\/<\/code> \u76ee\u5f55\uff0c\u540c\u65f6\u4f7f\u7528 <code>-z<\/code> \u9009\u9879\u8fdb\u884c\u6570\u636e\u538b\u7f29\uff0c\u4ee5\u52a0\u901f\u4f20\u8f93\u3002<\/p>\n<h5>3. \u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u540c\u6b65\u5230\u672c\u5730<\/h5>\n<pre><code class=\"language-bash\">rsync -avz -e ssh user@remotehost:\/path\/to\/remote\/dir\/ \/path\/to\/local\/dir\/<\/code><\/pre>\n<p>\u8fd9\u4e0e\u4e0a\u4e00\u4f8b\u76f8\u53cd\uff0c\u662f\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u540c\u6b65\u6587\u4ef6\u5230\u672c\u5730\u76ee\u5f55\u3002<\/p>\n<h5>4. \u5b9a\u671f\u5907\u4efd<\/h5>\n<p>\u7ed3\u5408 <code>cron<\/code> \u4f7f\u7528 <code>rsync<\/code> \u8fdb\u884c\u5b9a\u671f\u5907\u4efd\u3002<br \/>\n\u9996\u5148\uff0c\u6253\u5f00 <code>crontab<\/code> \u914d\u7f6e\uff1a<\/p>\n<pre><code class=\"language-bash\">crontab -e<\/code><\/pre>\n<p>\u6dfb\u52a0\u4ee5\u4e0b\u884c\u6765\u6bcf\u5929\u51cc\u6668\u6267\u884c\u5907\u4efd\uff1a<\/p>\n<pre><code class=\"language-cron\">0 0 * * * rsync -avz \/path\/to\/source\/ \/path\/to\/backup\/<\/code><\/pre>\n<p>\u8fd9\u4f1a\u5728\u6bcf\u5929\u5348\u591c\u65f6\u5c06\u6e90\u76ee\u5f55\u7684\u5185\u5bb9\u5907\u4efd\u5230\u5907\u4efd\u76ee\u5f55\u3002<\/p>\n<p><code>rsync<\/code> \u7684\u7528\u6cd5\u8fdc\u4e0d\u6b62\u8fd9\u4e9b\u3002\u8fd9\u4e2a\u5de5\u5177\u975e\u5e38\u7075\u6d3b\uff0c\u53ef\u4ee5\u5e94\u5bf9\u5404\u79cd\u590d\u6742\u7684\u6587\u4ef6\u4f20\u8f93\u548c\u5907\u4efd\u9700\u6c42\u3002\u4e0b\u9762\u8fd8\u6709\u4e00\u4e9b\u8fdb\u9636\u7684\u4f7f\u7528\u6280\u5de7\u548c\u9009\u9879\uff0c\u53ef\u4ee5\u5e2e\u52a9\u4f60\u66f4\u597d\u5730\u5229\u7528 <code>rsync<\/code> \u7684\u529f\u80fd\u3002<\/p>\n<h5>5. \u6392\u9664\u7279\u5b9a\u6587\u4ef6\u6216\u76ee\u5f55<\/h5>\n<p>\u4f7f\u7528 <code>--exclude<\/code> \u9009\u9879\u53ef\u4ee5\u6307\u5b9a\u4e0d\u5e0c\u671b\u540c\u6b65\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av --exclude &#039;pattern&#039; \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u4f8b\u5982\uff0c\u6392\u9664\u6240\u6709 <code>.txt<\/code> \u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash\">rsync -av --exclude &#039;*.txt&#039; \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<h5>6. \u5305\u542b\u7279\u5b9a\u6587\u4ef6\u6216\u76ee\u5f55<\/h5>\n<p>\u4e0e\u6392\u9664\u76f8\u5bf9\u7684\u662f <code>--include<\/code> \u9009\u9879\uff0c\u7528\u4e8e\u6307\u5b9a\u7279\u5b9a\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u9700\u8981\u88ab\u540c\u6b65\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av --include &#039;pattern&#039; --exclude &#039;*&#039; \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u8fd9\u91cc\u7684\u547d\u4ee4\u53ea\u540c\u6b65\u5339\u914d <code>pattern<\/code> \u7684\u6587\u4ef6\uff0c\u5176\u4ed6\u90fd\u6392\u9664\u3002<\/p>\n<h5>7. \u5904\u7406\u5220\u9664\u7684\u6587\u4ef6<\/h5>\n<p>\u5982\u679c\u4f60\u5e0c\u671b\u76ee\u6807\u76ee\u5f55\u5b8c\u5168\u955c\u50cf\u6e90\u76ee\u5f55\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>--delete<\/code> \u9009\u9879\u3002\u8fd9\u4f1a\u5220\u9664\u76ee\u6807\u76ee\u5f55\u4e2d\u6e90\u76ee\u5f55\u4e0d\u5b58\u5728\u7684\u6587\u4ef6\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av --delete \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<h5>8. \u4f7f\u7528\u5907\u4efd\u9009\u9879<\/h5>\n<p><code>--backup<\/code> \u9009\u9879\u4f1a\u5728\u5220\u9664\u6216\u8986\u76d6\u6587\u4ef6\u65f6\uff0c\u5c06\u65e7\u6587\u4ef6\u5907\u4efd\u5230\u6307\u5b9a\u7684\u76ee\u5f55\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av --backup --backup-dir=\/path\/to\/backup \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u8fd9\u4f1a\u5c06\u4efb\u4f55\u88ab\u5220\u9664\u6216\u8986\u76d6\u7684\u6587\u4ef6\u5907\u4efd\u5230\u6307\u5b9a\u7684\u5907\u4efd\u76ee\u5f55\u3002<\/p>\n<h5>9. \u786c\u94fe\u63a5\u652f\u6301<\/h5>\n<p>\u4f7f\u7528 <code>-H<\/code> \u9009\u9879\u53ef\u4ee5\u4fdd\u6301\u786c\u94fe\u63a5\u7684\u7ed3\u6784\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -avH \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u8fd9\u975e\u5e38\u6709\u7528\u4e8e\u5907\u4efd\u7cfb\u7edf\uff0c\u56e0\u4e3a\u5b83\u53ef\u4ee5\u4fdd\u5b58\u548c\u590d\u539f\u786c\u94fe\u63a5\u7684\u7ed3\u6784\u3002<\/p>\n<h5>10. \u8fdb\u5ea6\u548c\u901f\u5ea6\u9650\u5236<\/h5>\n<p>\u5982\u679c\u4f60\u60f3\u770b\u5230\u6bcf\u4e2a\u6587\u4ef6\u7684\u4f20\u8f93\u8fdb\u5ea6\uff0c\u53ef\u4ee5\u6dfb\u52a0 <code>--progress<\/code> \u9009\u9879\u3002\u6b64\u5916\uff0c<code>--bwlimit<\/code> \u9009\u9879\u53ef\u4ee5\u9650\u5236 rsync \u4f7f\u7528\u7684\u5e26\u5bbd\u3002<\/p>\n<pre><code class=\"language-bash\">rsync -av --progress --bwlimit=1000 \/path\/to\/source\/ \/path\/to\/destination\/<\/code><\/pre>\n<p>\u8fd9\u5c06\u663e\u793a\u8fdb\u5ea6\u5e76\u9650\u5236\u6570\u636e\u4f20\u8f93\u901f\u5ea6\u4e3a1000KBytes\/\u79d2\u3002<\/p>\n<h5>\u8fdb\u9636\u6280\u5de7<\/h5>\n<ul>\n<li><strong>\u4f7f\u7528 SSH \u5bc6\u94a5<\/strong>\uff1a\u4e3a\u4e86\u5b89\u5168\u548c\u4fbf\u5229\uff0c\u5efa\u8bae\u914d\u7f6e\u65e0\u5bc6\u7801 SSH \u767b\u5f55\uff0c\u4f7f\u7528\u5bc6\u94a5\u8fdb\u884c\u8eab\u4efd\u9a8c\u8bc1\u3002<\/li>\n<li><strong>\u5feb\u7167\u5907\u4efd<\/strong>\uff1a\u53ef\u4ee5\u7ed3\u5408 <code>--link-dest<\/code> \u9009\u9879\u8fdb\u884c\u9ad8\u6548\u7684\u589e\u91cf\u5907\u4efd\uff0c\u7c7b\u4f3c\u4e8e\u5feb\u7167\uff0c\u53ea\u5907\u4efd\u53d8\u66f4\u7684\u90e8\u5206\uff0c\u540c\u65f6\u94fe\u63a5\u5230\u65e7\u6587\u4ef6\u8fdb\u884c\u7a7a\u95f4\u8282\u7701\u3002<\/li>\n<li><strong>\u5927\u91cf\u6587\u4ef6\u5904\u7406<\/strong>\uff1a\u5bf9\u4e8e\u542b\u6709\u5927\u91cf\u5c0f\u6587\u4ef6\u7684\u76ee\u5f55\uff0c\u4f7f\u7528 <code>--inplace<\/code> \u548c <code>--whole-file<\/code> \u9009\u9879\u53ef\u4ee5\u51cf\u5c11\u6587\u4ef6\u68c0\u67e5\u548c\u6bd4\u8f83\u7684\u65f6\u95f4\u3002<\/li>\n<\/ul>\n<p>\u901a\u8fc7\u8fd9\u4e9b\u9ad8\u7ea7\u6280\u5de7\u548c\u9009\u9879\u7684\u8fd0\u7528\uff0c\u4f60\u53ef\u4ee5\u8ba9 <code>rsync<\/code> \u6210\u4e3a\u4e00\u4e2a\u975e\u5e38\u5f3a\u5927\u548c\u9ad8\u6548\u7684\u540c\u6b65\u548c\u5907\u4efd\u5de5\u5177\uff0c\u65e0\u8bba\u662f\u7528\u4e8e\u4e2a\u4eba\u6570\u636e\u7ba1\u7406\u8fd8\u662f\u670d\u52a1\u5668\u7ea7\u7684\u6570\u636e\u4fdd\u62a4\u3002<\/p>\n<h5>11. \u8fde\u63a5\u8fdc\u7a0b\u670d\u52a1\u5668\u7684\u6848\u4f8b<\/h5>\n<pre><code class=\"language-bash\">1.\u4f7f\u7528 SSH \u8fde\u63a5\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u662f\u6700\u5e38\u89c1\u7684 rsync \u4f7f\u7528\u65b9\u5f0f\uff0c\u56e0\u4e3a\u5b83\u63d0\u4f9b\u4e86\u52a0\u5bc6\u7684\u5b89\u5168\u4f20\u8f93\u3002\nrsync -avz -e ssh \/path\/to\/local\/dir user@192.168.1.100:\/path\/to\/remote\/dir\n-a \u8868\u793a\u5f52\u6863\u6a21\u5f0f\uff0c\u4fdd\u7559\u6587\u4ef6\u5c5e\u6027\u548c\u6743\u9650\u3002\n-v \u8868\u793a\u8be6\u7ec6\u6a21\u5f0f\uff0c\u663e\u793a\u66f4\u591a\u7684\u4fe1\u606f\u3002\n-z \u8868\u793a\u542f\u7528\u538b\u7f29\u3002\n-e ssh \u6307\u5b9a\u4f7f\u7528 SSH \u4f5c\u4e3a\u4f20\u8f93\u534f\u8bae\u3002\n\n2.\u8fde\u63a5\u5230 rsync \u5b88\u62a4\u8fdb\u7a0b\u4f7f\u7528 &quot;::&quot; \u7b26\u53f7\n\u5982\u679c\u8fdc\u7a0b\u670d\u52a1\u5668\u8fd0\u884c\u7684\u662f rsync \u5b88\u62a4\u8fdb\u7a0b\uff0c\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7 :: \u8fde\u63a5\u5230\u4e00\u4e2a\u5177\u4f53\u7684\u6a21\u5757\u3002\nrsync -av \/path\/to\/local\/dir user@192.168.1.100::module\n\u5728\u8fd9\u4e2a\u4f8b\u5b50\u4e2d\uff1a\nuser@192.168.1.100::module \u6307\u5b9a\u4e86\u7528\u6237\u540d\u3001\u670d\u52a1\u5668\u5730\u5740\u548c\u6a21\u5757\u540d\u3002\u8fd9\u79cd\u683c\u5f0f\u544a\u8bc9 rsync \u4f7f\u7528 rsync \u5b88\u62a4\u8fdb\u7a0b\uff08\u800c\u4e0d\u662f SSH\uff09\u6765\u4f20\u8f93\u6570\u636e\u3002\n\n3.\u5f53\u4f60\u60f3\u8fde\u63a5\u5230\u4e00\u4e2a\u901a\u8fc7\u7279\u5b9a\u7aef\u53e3\u8fd0\u884c\u7684 rsync \u5b88\u62a4\u8fdb\u7a0b\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528 rsync URL \u683c\u5f0f\u3002\nrsync -av rsync:\/\/user@192.168.1.100:873\/module \/path\/to\/local\/dir\nrsync:\/\/ \u8868\u793a\u4f7f\u7528 rsync \u534f\u8bae\u3002\n:873 \u660e\u786e\u6307\u5b9a\u4e86 rsync \u5b88\u62a4\u8fdb\u7a0b\u76d1\u542c\u7684\u7aef\u53e3\uff08\u9ed8\u8ba4\u7aef\u53e3\u662f 873\uff0c\u53ef\u4ee5\u7701\u7565\uff09\u3002\n\/module \u6307\u5b9a\u4e86\u76ee\u6807\u670d\u52a1\u5668\u4e0a\u7684 rsync \u6a21\u5757\u3002\n\n4.\u5982\u679c\u4f60\u53ea\u662f\u60f3\u67e5\u770b\u8fdc\u7a0b rsync \u670d\u52a1\u5668\u4e0a\u53ef\u7528\u7684\u6a21\u5757\uff0c\u53ef\u4ee5\u53d1\u9001\u4e00\u4e2a\u4e0d\u5e26\u5176\u4ed6\u8def\u5f84\u7684\u8bf7\u6c42\uff1a\nrsync rsync:\/\/192.168.1.100\/\n\n5.\u5982\u679c\u4f60\u60f3\u4ece rsync \u5b88\u62a4\u8fdb\u7a0b\u6258\u7ba1\u7684\u6a21\u5757\u4e0b\u8f7d\u6587\u4ef6\u6216\u76ee\u5f55\u5230\u672c\u5730\u7cfb\u7edf\uff1a\nrsync -av 192.168.1.100::module\/path\/to\/remote\/file \/path\/to\/local\/dir\n<\/code><\/pre>\n<h3>4.2 inotifywait<\/h3>\n<p><code>inotifywait<\/code> \u662f\u4e00\u4e2a\u5229\u7528 Linux \u7684 <code>inotify<\/code> \u7cfb\u7edf\u6765\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684\u547d\u4ee4\u884c\u5de5\u5177\u3002\u5b83\u80fd\u591f\u7b49\u5f85\u6307\u5b9a\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u53d1\u751f\u7279\u5b9a\u4e8b\u4ef6\uff0c\u5e76\u6267\u884c\u76f8\u5e94\u7684\u64cd\u4f5c\u3002\u4e0b\u9762\u662f\u8be5\u5de5\u5177\u7684\u5404\u4e2a\u9009\u9879\u7684\u8be6\u7ec6\u89e3\u91ca\uff1a<\/p>\n<pre><code class=\"language-bash\">\u5e38\u7528\u9009\u9879\u89e3\u91ca\n-h \u6216 --help: \u663e\u793a\u5e2e\u52a9\u6587\u672c\uff0c\u5217\u51fa\u6240\u6709\u53ef\u7528\u7684\u547d\u4ee4\u548c\u9009\u9879\u3002\n@&lt;file&gt;: \u6307\u5b9a\u4e0d\u76d1\u63a7\u7684\u6587\u4ef6\u3002\n--exclude &lt;pattern&gt;: \u6392\u9664\u6240\u6709\u5339\u914d\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f &lt;pattern&gt; \u7684\u6587\u4ef6\u7684\u4e8b\u4ef6\u3002\u5982\u679c\u6709\u591a\u4e2a --exclude\uff0c\u53ea\u6709\u6700\u540e\u4e00\u4e2a\u4f1a\u88ab\u8003\u8651\u3002\n--excludei &lt;pattern&gt;: \u7c7b\u4f3c\u4e8e --exclude\uff0c\u4f46\u662f\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u3002\n--include &lt;pattern&gt;: \u53ea\u5305\u62ec\u5339\u914d\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f &lt;pattern&gt; \u7684\u6587\u4ef6\u7684\u4e8b\u4ef6\uff0c\u5176\u4ed6\u90fd\u6392\u9664\u3002\n--includei &lt;pattern&gt;: \u7c7b\u4f3c\u4e8e --include\uff0c\u4f46\u662f\u4e0d\u533a\u5206\u5927\u5c0f\u5199\u3002\n-m \u6216 --monitor: \u6301\u7eed\u76d1\u542c\u4e8b\u4ef6\uff0c\u76f4\u5230\u624b\u52a8\u505c\u6b62\u6216 --timeout \u5230\u671f\u3002\n-d \u6216 --daemon: \u4e0e --monitor \u7c7b\u4f3c\uff0c\u4f46\u5728\u540e\u53f0\u8fd0\u884c\uff0c\u5e76\u5c06\u4e8b\u4ef6\u8bb0\u5f55\u5230\u7531 --outfile \u6307\u5b9a\u7684\u6587\u4ef6\u3002\u8fd9\u4f1a\u9690\u542b\u542f\u7528 --syslog\u3002\n-P \u6216 --no-dereference: \u76d1\u63a7\u7b26\u53f7\u94fe\u63a5\u672c\u8eab\u800c\u4e0d\u662f\u94fe\u63a5\u6307\u5411\u7684\u76ee\u6807\u3002\n-r \u6216 --recursive: \u9012\u5f52\u76d1\u63a7\u76ee\u5f55\u3002\n--fromfile &lt;file&gt;: \u4ece\u6307\u5b9a\u6587\u4ef6\u6216\u6807\u51c6\u8f93\u5165 (&#039;-&#039;) \u8bfb\u53d6\u8981\u76d1\u63a7\u7684\u6587\u4ef6\u5217\u8868\u3002\n-o \u6216 --outfile &lt;file&gt;: \u5c06\u4e8b\u4ef6\u8f93\u51fa\u5230\u6307\u5b9a\u7684\u6587\u4ef6\u800c\u4e0d\u662f\u6807\u51c6\u8f93\u51fa\u3002\n-s \u6216 --syslog: \u5c06\u9519\u8bef\u53d1\u9001\u5230\u7cfb\u7edf\u65e5\u5fd7\u800c\u4e0d\u662f\u6807\u51c6\u9519\u8bef\u3002\n-q \u6216 --quiet: \u51cf\u5c11\u8f93\u51fa\u4fe1\u606f\uff0c\u53ea\u8f93\u51fa\u4e8b\u4ef6\u3002\n-qq: \u4e0d\u8f93\u51fa\u4efb\u4f55\u4fe1\u606f\uff0c\u5305\u62ec\u4e8b\u4ef6\u3002\n--format &lt;fmt&gt;: \u4f7f\u7528\u6307\u5b9a\u7684\u7c7b\u4f3c printf \u7684\u683c\u5f0f\u5b57\u7b26\u4e32\u8f93\u51fa\u4fe1\u606f\u3002\n--no-newline: \u5728\u8f93\u51fa\u683c\u5f0f\u5b57\u7b26\u4e32\u540e\u4e0d\u6253\u5370\u6362\u884c\u7b26\u3002\n--timefmt &lt;fmt&gt;: \u6307\u5b9a\u7528\u4e8e --format \u5b57\u7b26\u4e32\u4e2d %T \u7684\u65f6\u95f4\u683c\u5f0f\u5b57\u7b26\u4e32\uff0c\u517c\u5bb9 strftime\u3002\n-c \u6216 --csv: \u4ee5 CSV \u683c\u5f0f\u8f93\u51fa\u4e8b\u4ef6\u3002\n-t \u6216 --timeout &lt;seconds&gt;: \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d\u662f\u79d2\u3002\u5982\u679c\u5728\u6307\u5b9a\u65f6\u95f4\u5185\u6ca1\u6709\u4e8b\u4ef6\u53d1\u751f\uff0c\u5219\u9000\u51fa\u3002\u5982\u679c\u65f6\u95f4\u4e3a\u96f6\uff0c\u5219\u6c38\u4e0d\u8d85\u65f6\u3002\n-e \u6216 --event &lt;event&gt;: \u6307\u5b9a\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\u3002\u5982\u679c\u7701\u7565\uff0c\u5219\u76d1\u542c\u6240\u6709\u4e8b\u4ef6\u3002\n\n\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b\naccess: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u8bfb\u53d6\u3002\nmodify: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u5199\u5165\u3002\nattrib: \u6587\u4ef6\u6216\u76ee\u5f55\u7684\u5c5e\u6027\u88ab\u4fee\u6539\u3002\nclose_write: \u6587\u4ef6\u6216\u76ee\u5f55\u5728\u53ef\u5199\u6a21\u5f0f\u4e0b\u88ab\u5173\u95ed\u3002\nclose_nowrite: \u6587\u4ef6\u6216\u76ee\u5f55\u5728\u53ea\u8bfb\u6a21\u5f0f\u4e0b\u88ab\u5173\u95ed\u3002\nclose: \u6587\u4ef6\u6216\u76ee\u5f55\u65e0\u8bba\u4f55\u79cd\u6a21\u5f0f\u5747\u88ab\u5173\u95ed\u3002\nopen: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u6253\u5f00\u3002\nmoved_to: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u79fb\u5165\u76d1\u63a7\u76ee\u5f55\u3002\nmoved_from: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u79fb\u51fa\u76d1\u63a7\u76ee\u5f55\u3002\nmove: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u79fb\u5165\u6216\u79fb\u51fa\u76d1\u63a7\u76ee\u5f55\u3002\nmove_self: \u88ab\u76d1\u63a7\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u79fb\u52a8\u3002\ncreate: \u5728\u76d1\u63a7\u76ee\u5f55\u5185\u521b\u5efa\u4e86\u65b0\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u3002\ndelete: \u5728\u76d1\u63a7\u76ee\u5f55\u5185\u5220\u9664\u4e86\u6587\u4ef6\u6216\u76ee\u5f55\u3002\ndelete_self: \u88ab\u76d1\u63a7\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u5220\u9664\u3002\nunmount: \u5305\u542b\u6587\u4ef6\u6216\u76ee\u5f55\u7684\u6587\u4ef6\u7cfb\u7edf\u88ab\u5378\u8f7d\u3002\n\n--timefmt \u9009\u9879\u5728 inotifywait \u547d\u4ee4\u4e2d\u5141\u8bb8\u4f60\u81ea\u5b9a\u4e49\u4e8b\u4ef6\u7684\u65f6\u95f4\u683c\u5f0f\uff0c\u8fd9\u4e2a\u683c\u5f0f\u5b57\u7b26\u4e32\u662f\u4e0e strftime \u51fd\u6570\u517c\u5bb9\u7684\u3002strftime \u662f\u4e00\u4e2a\u5e38\u7528\u7684\u65f6\u95f4\u683c\u5f0f\u5316\u51fd\u6570\uff0c\u5b83\u53ef\u4ee5\u6839\u636e\u6307\u5b9a\u7684\u683c\u5f0f\u6a21\u677f\u5c06\u65f6\u95f4\u8f6c\u6362\u6210\u76f8\u5e94\u7684\u5b57\u7b26\u4e32\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u5e38\u89c1\u7684 strftime \u683c\u5f0f\u5316\u7b26\u53f7\uff0c\u8fd9\u4e9b\u90fd\u53ef\u4ee5\u5728 --timefmt \u53c2\u6570\u4e2d\u4f7f\u7528\uff1a\n\n%Y: \u56db\u4f4d\u6570\u7684\u5e74\u4efd\uff08\u4f8b\u5982\uff1a2021\uff09\n%y: \u4e24\u4f4d\u6570\u7684\u5e74\u4efd\uff08\u4f8b\u5982\uff1a21\uff09\n%m: \u6708\u4efd\uff0801-12\uff09\n%d: \u4e00\u6708\u4e2d\u7684\u7b2c\u51e0\u5929\uff0801-31\uff09\n%H: 24\u5c0f\u65f6\u5236\u7684\u5c0f\u65f6\uff0800-23\uff09\n%I: 12\u5c0f\u65f6\u5236\u7684\u5c0f\u65f6\uff0801-12\uff09\n%M: \u5206\u949f\uff0800-59\uff09\n%S: \u79d2\uff0800-59\uff09\n%p: \u4e0a\u5348\u6216\u4e0b\u5348\u6807\u8bc6\uff08AM \u6216 PM\uff09\n%a: \u661f\u671f\u51e0\u7684\u7b80\u5199\uff08\u4f8b\u5982\uff1aMon\uff0cTue\uff09\n%A: \u661f\u671f\u51e0\u7684\u5168\u79f0\uff08\u4f8b\u5982\uff1aMonday\uff0cTuesday\uff09\n%b: \u6708\u4efd\u7684\u7b80\u5199\uff08\u4f8b\u5982\uff1aJan\uff0cFeb\uff09\n%B: \u6708\u4efd\u7684\u5168\u79f0\uff08\u4f8b\u5982\uff1aJanuary\uff0cFebruary\uff09\n%c: \u672c\u5730\u65e5\u671f\u548c\u65f6\u95f4\u8868\u793a\u6cd5\n%x: \u672c\u5730\u65e5\u671f\u8868\u793a\u6cd5\n%X: \u672c\u5730\u65f6\u95f4\u8868\u793a\u6cd5\n%Z: \u65f6\u533a\u540d\u79f0\n%z: \u65f6\u533a\u540d\u79f0\u7684\u6570\u503c\u8868\u793a\uff08\u4f8b\u5982\uff1a+0800\uff09\n\u5047\u8bbe\u4f60\u60f3\u8981\u4ee5\u5e74-\u6708-\u65e5 \u65f6:\u5206:\u79d2\u7684\u683c\u5f0f\u6765\u8bb0\u5f55\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u7684\u65f6\u95f4\uff0c\u4f60\u53ef\u4ee5\u8fd9\u6837\u8bbe\u7f6e --timefmt \u548c --format\uff1a\ninotifywait -m -e modify --timefmt &#039;%Y-%m-%d %H:%M:%S&#039; --format &#039;%T %w %f&#039; \/path\/to\/directory\n\n--format\u6709\u5173\u7684\u683c\u5f0f\u5360\u4f4d\u7b26\uff1a\n\u683c\u5f0f\u5360\u4f4d\u7b26\n%w: \u4e8b\u4ef6\u53d1\u751f\u7684\u8def\u5f84\u3002\n%f: \u89e6\u53d1\u4e8b\u4ef6\u7684\u6587\u4ef6\u540d\u3002\n%e: \u53d1\u751f\u7684\u4e8b\u4ef6\u5217\u8868\u3002\n%T: \u89e6\u53d1\u4e8b\u4ef6\u7684\u65f6\u95f4\uff08\u9700\u8981\u548c --timefmt \u9009\u9879\u4e00\u8d77\u4f7f\u7528\uff0c\u4ee5\u81ea\u5b9a\u4e49\u65f6\u95f4\u7684\u683c\u5f0f\uff09\u3002\n%X: \u4e0e\u4e8b\u4ef6\u76f8\u5173\u7684\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff08\u9700\u8981 Linux \u5185\u6838\u652f\u6301\uff09\u3002\n%W: \u76d1\u63a7\u9879\u7684\u770b\u5b88\u6807\u8bb0\uff08watch descriptor\uff09\uff0c\u5373 inotify \u5185\u90e8\u4f7f\u7528\u7684\u552f\u4e00\u6807\u8bc6\u3002<\/code><\/pre>\n<p>\u5f53\u7136\uff0c\u6211\u4eec\u53ef\u4ee5\u7b80\u5316\u4e00\u4e9b\u5e38\u89c1\u7684 <code>inotifywait<\/code> \u4f7f\u7528\u6848\u4f8b\uff0c\u8ba9\u4f60\u53ef\u4ee5\u5feb\u901f\u4e0a\u624b\uff0c\u901a\u8fc7\u51e0\u4e2a\u7b80\u5355\u7684\u547d\u4ee4\u884c\u4f8b\u5b50\u6765\u7406\u89e3\u5176\u57fa\u672c\u7528\u6cd5\u3002<\/p>\n<h4>1. \u76d1\u63a7\u5355\u4e2a\u6587\u4ef6\u7684\u4fee\u6539<\/h4>\n<p>\u5982\u679c\u4f60\u53ea\u60f3\u76d1\u63a7\u4e00\u4e2a\u7279\u5b9a\u6587\u4ef6\u7684\u4fee\u6539\uff0c\u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywait -m -e modify \/path\/to\/your\/file.txt<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u4f1a\u5b9e\u65f6\u663e\u793a\u6240\u6709\u5bf9 <code>file.txt<\/code> \u6587\u4ef6\u7684\u4fee\u6539\u4e8b\u4ef6\u3002<\/p>\n<h4>2. \u76d1\u63a7\u4e00\u4e2a\u76ee\u5f55\u4e0b\u7684\u521b\u5efa\u548c\u5220\u9664\u4e8b\u4ef6<\/h4>\n<p>\u5047\u8bbe\u4f60\u60f3\u76d1\u63a7\u4e00\u4e2a\u76ee\u5f55\uff0c\u67e5\u770b\u5176\u4e2d\u6587\u4ef6\u4f55\u65f6\u88ab\u521b\u5efa\u6216\u5220\u9664\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywait -m -e create -e delete \/path\/to\/your\/directory\/<\/code><\/pre>\n<p>\u6b64\u547d\u4ee4\u4f1a\u76d1\u63a7\u6307\u5b9a\u76ee\u5f55\u4e2d\u6587\u4ef6\u7684\u521b\u5efa\u548c\u5220\u9664\u4e8b\u4ef6\uff0c\u5e76\u6301\u7eed\u8f93\u51fa\u8fd9\u4e9b\u4e8b\u4ef6\u7684\u4fe1\u606f\u3002<\/p>\n<h4>3. \u76d1\u63a7\u76ee\u5f55\u53ca\u5176\u5b50\u76ee\u5f55\u7684\u6240\u6709\u4e8b\u4ef6<\/h4>\n<p>\u5982\u679c\u4f60\u9700\u8981\u76d1\u63a7\u4e00\u4e2a\u76ee\u5f55\u53ca\u5176\u6240\u6709\u5b50\u76ee\u5f55\u4e2d\u53d1\u751f\u7684\u6240\u6709\u7c7b\u578b\u7684\u4e8b\u4ef6\uff0c\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywait -m -r \/path\/to\/your\/directory\/<\/code><\/pre>\n<p><code>-r<\/code> \u9009\u9879\u4f7f\u5f97\u76d1\u63a7\u9012\u5f52\u5230\u6240\u6709\u5b50\u76ee\u5f55\uff0c\u800c <code>-m<\/code> \u4f7f\u547d\u4ee4\u6301\u7eed\u8fd0\u884c\uff0c\u4e0d\u65ad\u76d1\u63a7\u65b0\u7684\u4e8b\u4ef6\u3002<\/p>\n<h4>4. \u76d1\u63a7\u591a\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55<\/h4>\n<p>\u4f60\u53ef\u4ee5\u540c\u65f6\u76d1\u63a7\u591a\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55\uff0c\u53ea\u9700\u8981\u5728\u547d\u4ee4\u4e2d\u5217\u51fa\u6240\u6709\u4f60\u60f3\u76d1\u63a7\u7684\u8def\u5f84\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywait -m \/path\/to\/first\/file \/path\/to\/second\/directory<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u4f1a\u76d1\u63a7\u4e24\u4e2a\u8def\u5f84\u4e0a\u7684\u6240\u6709\u9ed8\u8ba4\u4e8b\u4ef6\uff0c\u5e76\u5b9e\u65f6\u62a5\u544a\u5b83\u4eec\u3002<\/p>\n<p><code>inotifywait<\/code> \u662f\u4e00\u4e2a\u975e\u5e38\u6709\u7528\u7684\u5de5\u5177\uff0c\u53ef\u4ee5\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u7684\u53d8\u5316\u5e76\u6267\u884c\u76f8\u5e94\u7684\u54cd\u5e94\u52a8\u4f5c\u3002\u4e0b\u9762\u5c06\u4ecb\u7ecd\u51e0\u4e2a\u5e38\u89c1\u7684 <code>inotifywait<\/code> \u4f7f\u7528\u6848\u4f8b\uff0c\u5c55\u793a\u5176\u5728\u5b9e\u9645\u5e94\u7528\u4e2d\u7684\u5177\u4f53\u7528\u6cd5\u3002<\/p>\n<h4>5. \u76d1\u63a7\u76ee\u5f55\u5e76\u81ea\u52a8\u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668<\/h4>\n<p>\u5047\u8bbe\u4f60\u6709\u4e00\u4e2a\u672c\u5730\u76ee\u5f55\uff0c\u5e0c\u671b\u4e00\u65e6\u91cc\u9762\u7684\u6587\u4ef6\u6709\u53d8\u52a8\u5c31\u81ea\u52a8\u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u3002\u8fd9\u53ef\u4ee5\u901a\u8fc7\u7ed3\u5408 <code>inotifywait<\/code> \u548c <code>rsync<\/code> \u6765\u5b9e\u73b0\u3002<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n\nSOURCE_DIR=&quot;\/path\/to\/local\/dir&quot;\nDEST_DIR=&quot;user@remotehost:\/path\/to\/remote\/dir&quot;\nLOG_FILE=&quot;\/path\/to\/log\/file.log&quot;\n\ninotifywait -m -r -e modify -e create -e delete &quot;$SOURCE_DIR&quot; --format &#039;%w%f&#039; |\nwhile read file; do\n    echo &quot;$(date) Changes detected in $file&quot; &gt;&gt; &quot;$LOG_FILE&quot;\n    rsync -avz -e ssh &quot;$SOURCE_DIR&quot; &quot;$DEST_DIR&quot;\ndone<\/code><\/pre>\n<p>\u8fd9\u4e2a\u811a\u672c\u4f1a\u76d1\u63a7 <code>SOURCE_DIR<\/code> \u76ee\u5f55\u7684\u4fee\u6539\u3001\u521b\u5efa\u548c\u5220\u9664\u4e8b\u4ef6\uff0c\u5e76\u5c06\u53d8\u5316\u8bb0\u5f55\u5230\u65e5\u5fd7\u6587\u4ef6\u4e2d\u3002\u6bcf\u5f53\u68c0\u6d4b\u5230\u53d8\u5316\u65f6\uff0c\u4f7f\u7528 <code>rsync<\/code> \u5c06\u76ee\u5f55\u540c\u6b65\u5230\u8fdc\u7a0b\u670d\u52a1\u5668\u3002<\/p>\n<h4>6. \u76d1\u63a7\u65e5\u5fd7\u6587\u4ef6\u5e76\u53d1\u9001\u8b66\u62a5<\/h4>\n<p>\u5982\u679c\u4f60\u60f3\u76d1\u63a7\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u5e76\u5728\u51fa\u73b0\u7279\u5b9a\u6587\u672c\uff08\u6bd4\u5982\u9519\u8bef\uff09\u65f6\u53d1\u9001\u8b66\u62a5\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>inotifywait<\/code> \u6765\u5b9e\u73b0\u3002<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n\nLOG_FILE=&quot;\/path\/to\/log\/file.log&quot;\nALERT_KEYWORD=&quot;ERROR&quot;\n\ninotifywait -m -e modify &quot;$LOG_FILE&quot; --format &#039;%w%f&#039; |\nwhile read file; do\n    if grep -q &quot;$ALERT_KEYWORD&quot; &quot;$file&quot;; then\n        echo &quot;Error found in log file! Alerting the user.&quot;\n        # \u53d1\u9001\u90ae\u4ef6\u6216\u5176\u4ed6\u901a\u77e5\n    fi\ndone<\/code><\/pre>\n<p>\u8fd9\u4e2a\u811a\u672c\u4f1a\u5b9e\u65f6\u76d1\u63a7 <code>LOG_FILE<\/code> \u6587\u4ef6\u7684\u4fee\u6539\u4e8b\u4ef6\u3002\u4e00\u65e6\u6587\u4ef6\u88ab\u4fee\u6539\uff0c\u811a\u672c\u4f1a\u68c0\u67e5\u662f\u5426\u5b58\u5728\u5173\u952e\u5b57 <code>ERROR<\/code>\uff0c\u5982\u679c\u5b58\u5728\uff0c\u5219\u6267\u884c\u8b66\u62a5\u901a\u77e5\u7684\u64cd\u4f5c\u3002<\/p>\n<h4>7. \u81ea\u52a8\u5904\u7406\u4e0a\u4f20\u7684\u6587\u4ef6<\/h4>\n<p>\u5982\u679c\u6709\u4e00\u4e2a\u7528\u4e8e\u4e0a\u4f20\u6587\u4ef6\u7684\u76ee\u5f55\uff0c\u4f60\u5e0c\u671b\u81ea\u52a8\u5bf9\u4e0a\u4f20\u7684\u6587\u4ef6\u8fdb\u884c\u5904\u7406\uff0c\u5982\u81ea\u52a8\u89e3\u538b\u7f29\u6216\u8f6c\u6362\u683c\u5f0f\uff0c\u53ef\u4ee5\u4f7f\u7528 <code>inotifywait<\/code>\u3002<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n\nUPLOAD_DIR=&quot;\/path\/to\/upload\/dir&quot;\n\ninotifywait -m -e create -r &quot;$UPLOAD_DIR&quot; --format &#039;%w%f&#039; |\nwhile read file; do\n    echo &quot;New file uploaded: $file&quot;\n    # \u5047\u8bbe\u9700\u8981\u5bf9\u4e0a\u4f20\u7684.zip\u6587\u4ef6\u8fdb\u884c\u89e3\u538b\u7f29\n    if [[ &quot;$file&quot; =~ \\.zip$ ]]; then\n        unzip -o &quot;$file&quot; -d &quot;${file%.zip}\/&quot;\n        echo &quot;File unzipped: ${file%.zip}\/&quot;\n    fi\ndone<\/code><\/pre>\n<p>\u8fd9\u4e2a\u811a\u672c\u4f1a\u76d1\u63a7 <code>UPLOAD_DIR<\/code> \u76ee\u5f55\u4e2d\u65b0\u4e0a\u4f20\u7684\u6587\u4ef6\u3002\u4e00\u65e6\u6709\u65b0\u6587\u4ef6\u521b\u5efa\uff0c\u811a\u672c\u4f1a\u68c0\u67e5\u6587\u4ef6\u7c7b\u578b\u5e76\u6267\u884c\u76f8\u5e94\u7684\u64cd\u4f5c\uff0c\u4f8b\u5982\u5982\u679c\u6587\u4ef6\u662f ZIP \u683c\u5f0f\uff0c\u5219\u81ea\u52a8\u89e3\u538b\u7f29\u3002<\/p>\n<h3>4.3 inotifywatch<\/h3>\n<p><code>inotifywatch<\/code> \u662f\u4e00\u4e2a\u7528\u6765\u6536\u96c6\u6587\u4ef6\u7cfb\u7edf\u4f7f\u7528\u60c5\u51b5\u7edf\u8ba1\u6570\u636e\u7684\u5de5\u5177\uff0c\u57fa\u4e8e <code>inotify<\/code> \u673a\u5236\u3002\u4ee5\u4e0b\u662f\u5bf9\u5176\u547d\u4ee4\u884c\u9009\u9879\u7684\u8be6\u7ec6\u89e3\u91ca\uff1a<\/p>\n<h4>\u57fa\u672c\u9009\u9879<\/h4>\n<ul>\n<li><code>-h<\/code> \u6216 <code>--help<\/code>: \u663e\u793a\u5e2e\u52a9\u6587\u672c\uff0c\u5217\u51fa\u6240\u6709\u53ef\u7528\u7684\u547d\u4ee4\u548c\u9009\u9879\u3002<\/li>\n<li><code>-v<\/code> \u6216 <code>--verbose<\/code>: \u8f93\u51fa\u66f4\u591a\u7684\u4fe1\u606f\uff0c\u5e2e\u52a9\u4e86\u89e3\u547d\u4ee4\u7684\u6267\u884c\u7ec6\u8282\u3002<\/li>\n<\/ul>\n<h4>\u6587\u4ef6\u9009\u62e9\u4e0e\u6392\u9664<\/h4>\n<ul>\n<li><code>@&lt;file&gt;<\/code>: \u6307\u5b9a\u4e0d\u88ab\u76d1\u63a7\u7684\u6587\u4ef6\u3002<\/li>\n<li><code>--fromfile &lt;file&gt;<\/code>: \u4ece\u6587\u4ef6\u6216\u6807\u51c6\u8f93\u5165 (<code>&#039;-&#039;<\/code>) \u8bfb\u53d6\u9700\u8981\u76d1\u63a7\u7684\u6587\u4ef6\u5217\u8868\u3002<\/li>\n<li><code>--exclude &lt;pattern&gt;<\/code>: \u6392\u9664\u6240\u6709\u4e0e\u63d0\u4f9b\u7684\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f <code>&lt;pattern&gt;<\/code> \u5339\u914d\u7684\u6587\u4ef6\u7684\u4e8b\u4ef6\u3002<\/li>\n<li><code>--excludei &lt;pattern&gt;<\/code>: \u7c7b\u4f3c\u4e8e <code>--exclude<\/code>\uff0c\u4f46\u5339\u914d\u65f6\u4e0d\u8003\u8651\u5927\u5c0f\u5199\u3002<\/li>\n<li><code>--include &lt;pattern&gt;<\/code>: \u53ea\u5305\u62ec\u4e0e\u63d0\u4f9b\u7684\u6269\u5c55\u6b63\u5219\u8868\u8fbe\u5f0f <code>&lt;pattern&gt;<\/code> \u5339\u914d\u7684\u6587\u4ef6\u7684\u4e8b\u4ef6\uff0c\u5176\u4ed6\u90fd\u6392\u9664\u3002<\/li>\n<li><code>--includei &lt;pattern&gt;<\/code>: \u7c7b\u4f3c\u4e8e <code>--include<\/code>\uff0c\u4f46\u5339\u914d\u65f6\u4e0d\u8003\u8651\u5927\u5c0f\u5199\u3002<\/li>\n<\/ul>\n<h4>\u76d1\u63a7\u548c\u8f93\u51fa\u9009\u9879<\/h4>\n<ul>\n<li><code>-z<\/code> \u6216 <code>--zero<\/code>: \u5728\u6700\u7ec8\u7684\u7edf\u8ba1\u8868\u4e2d\uff0c\u5373\u4f7f\u67d0\u4e9b\u884c\u6216\u5217\u7684\u8ba1\u6570\u4e3a\u96f6\u4e5f\u663e\u793a\u5b83\u4eec\uff08\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u4e0d\u663e\u793a\u5168\u96f6\u7684\u884c\u6216\u5217\uff09\u3002<\/li>\n<li><code>-r<\/code> \u6216 <code>--recursive<\/code>: \u9012\u5f52\u5730\u76d1\u63a7\u6307\u5b9a\u7684\u76ee\u5f55\u53ca\u5176\u5b50\u76ee\u5f55\u3002<\/li>\n<li><code>-P<\/code> \u6216 <code>--no-dereference<\/code>: \u76d1\u63a7\u7b26\u53f7\u94fe\u63a5\u672c\u8eab\uff0c\u800c\u4e0d\u662f\u5b83\u4eec\u6307\u5411\u7684\u6587\u4ef6\u3002<\/li>\n<\/ul>\n<h4>\u65f6\u95f4\u548c\u4e8b\u4ef6\u63a7\u5236<\/h4>\n<ul>\n<li><code>-t<\/code> \u6216 <code>--timeout &lt;seconds&gt;<\/code>: \u8bbe\u7f6e\u76d1\u63a7\u7684\u65f6\u95f4\u957f\u5ea6\uff0c\u5355\u4f4d\u662f\u79d2\u3002\u5982\u679c\u7701\u7565\u6216\u8bbe\u7f6e\u4e3a\u96f6\uff0c\u5219 <code>inotifywatch<\/code> \u4f1a\u4e00\u76f4\u8fd0\u884c\uff0c\u76f4\u5230\u63a5\u6536\u5230\u4e2d\u65ad\u4fe1\u53f7\u3002<\/li>\n<li><code>-e<\/code> \u6216 <code>--event &lt;event&gt;<\/code>: \u76d1\u542c\u7279\u5b9a\u7684\u4e8b\u4ef6\u7c7b\u578b\u3002\u5982\u679c\u7701\u7565\uff0c\u5219\u76d1\u542c\u6240\u6709\u4e8b\u4ef6\u7c7b\u578b\u3002<\/li>\n<\/ul>\n<h4>\u6392\u5e8f\u9009\u9879<\/h4>\n<ul>\n<li><code>-a<\/code> \u6216 <code>--ascending &lt;event&gt;<\/code>: \u6309\u7167\u7279\u5b9a\u4e8b\u4ef6\u7684\u53d1\u751f\u6b21\u6570\u5347\u5e8f\u6392\u5e8f\uff0c\u6216\u6309\u603b\u6b21\u6570\u6392\u5e8f\u3002<\/li>\n<li><code>-d<\/code> \u6216 <code>--descending &lt;event&gt;<\/code>: \u6309\u7167\u7279\u5b9a\u4e8b\u4ef6\u7684\u53d1\u751f\u6b21\u6570\u964d\u5e8f\u6392\u5e8f\uff0c\u6216\u6309\u603b\u6b21\u6570\u6392\u5e8f\u3002<\/li>\n<\/ul>\n<h4>\u9000\u51fa\u72b6\u6001<\/h4>\n<ul>\n<li><code>0<\/code>: \u6b63\u5e38\u9000\u51fa\u3002<\/li>\n<li><code>1<\/code>: \u53d1\u751f\u4e86\u67d0\u4e9b\u9519\u8bef\u3002<\/li>\n<\/ul>\n<h4>\u76d1\u542c\u7684\u4e8b\u4ef6\u7c7b\u578b<\/h4>\n<p>\u4e8b\u4ef6\u7c7b\u578b\u4e0e <code>inotifywait<\/code> \u7c7b\u4f3c\uff0c\u5305\u62ec\uff1a<\/p>\n<ul>\n<li><code>access<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5185\u5bb9\u88ab\u8bfb\u53d6\u3002<\/li>\n<li><code>modify<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5185\u5bb9\u88ab\u4fee\u6539\u3002<\/li>\n<li><code>attrib<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5c5e\u6027\u53d1\u751f\u53d8\u5316\u3002<\/li>\n<li><code>close_write<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5728\u53ef\u5199\u6a21\u5f0f\u4e0b\u5173\u95ed\u3002<\/li>\n<li><code>close_nowrite<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5728\u53ea\u8bfb\u6a21\u5f0f\u4e0b\u5173\u95ed\u3002<\/li>\n<li><code>close<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u5173\u95ed\uff0c\u4e0d\u8bba\u5176\u6a21\u5f0f\u3002<\/li>\n<li><code>open<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u6253\u5f00\u3002<\/li>\n<li><code>moved_to<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u79fb\u52a8\u5230\u76d1\u63a7\u76ee\u5f55\u4e2d\u3002<\/li>\n<li><code>moved_from<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u4ece\u76d1\u63a7\u76ee\u5f55\u4e2d\u79fb\u51fa\u3002<\/li>\n<li><code>move<\/code>: \u6587\u4ef6\u6216\u76ee\u5f55\u79fb\u5165\u6216\u79fb\u51fa\u76d1\u63a7\u76ee\u5f55\u3002<\/li>\n<li><code>move_self<\/code>: \u88ab\u76d1\u63a7\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u81ea\u8eab\u88ab\u79fb\u52a8\u3002<\/li>\n<li><code>create<\/code>: \u5728\u76d1\u63a7\u76ee\u5f55\u4e2d\u521b\u5efa\u6587\u4ef6\u6216\u76ee\u5f55\u3002<\/li>\n<li><code>delete<\/code>: \u5728\u76d1\u63a7\u76ee\u5f55\u4e2d\u5220\u9664\u6587\u4ef6\u6216\u76ee\u5f55\u3002<\/li>\n<li><code>delete_self<\/code>: \u88ab\u76d1\u63a7\u7684\u6587\u4ef6\u6216\u76ee\u5f55\u88ab\u5220\u9664\u3002<\/li>\n<li><code>unmount<\/code>: \u5305\u542b\u6587\u4ef6\u6216\u76ee\u5f55\u7684\u6587\u4ef6\u7cfb\u7edf\u88ab\u5378\u8f7d\u3002<\/li>\n<\/ul>\n<p><code>inotifywatch<\/code> \u901a\u8fc7\u8fd9\u4e9b\u9009\u9879\u4e3a\u7528\u6237\u63d0\u4f9b\u7075\u6d3b\u7684\u6587\u4ef6\u7cfb\u7edf\u76d1\u63a7\u5de5\u5177\uff0c\u53ef\u4ee5\u7528\u6765\u6536\u96c6\u5173\u4e8e\u6587\u4ef6\u6216\u76ee\u5f55\u6d3b\u52a8\u7684\u8be6\u7ec6\u7edf\u8ba1\u6570\u636e\uff0c\u8fd9\u5bf9\u4e8e\u4e86\u89e3\u6587\u4ef6\u7cfb\u7edf\u7684\u4f7f\u7528\u6a21\u5f0f\u975e\u5e38\u6709\u7528\u3002<\/p>\n<p><code>inotifywatch<\/code> \u662f\u4e00\u4e2a\u7528\u6765\u76d1\u63a7\u6587\u4ef6\u7cfb\u7edf\u4e8b\u4ef6\u5e76\u7edf\u8ba1\u8fd9\u4e9b\u4e8b\u4ef6\u53d1\u751f\u7684\u6b21\u6570\u7684\u5de5\u5177\u3002\u5b83\u9002\u5408\u7528\u6765\u5206\u6790\u6587\u4ef6\u7cfb\u7edf\u7684\u4f7f\u7528\u6a21\u5f0f\u6216\u68c0\u6d4b\u7279\u5b9a\u76ee\u5f55\u548c\u6587\u4ef6\u7684\u6d3b\u52a8\u3002\u4e0b\u9762\u6211\u5c06\u63d0\u4f9b\u4e00\u4e9b\u5b9e\u9645\u7684\u4f7f\u7528\u6848\u4f8b\uff1a<\/p>\n<h4>\u6848\u4f8b 1: \u7edf\u8ba1\u4e00\u4e2a\u76ee\u5f55\u4e2d\u6587\u4ef6\u4e8b\u4ef6\u7684\u53d1\u751f\u9891\u7387<\/h4>\n<p>\u5982\u679c\u4f60\u60f3\u4e86\u89e3\u4e00\u4e2a\u7279\u5b9a\u76ee\u5f55\uff08\u6bd4\u5982\u4e00\u4e2a\u670d\u52a1\u5668\u4e0a\u7684\u4e0a\u4f20\u76ee\u5f55\uff09\u4e2d\u7684\u6587\u4ef6\u6d3b\u52a8\u60c5\u51b5\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywatch -v -t 3600 -r \/path\/to\/directory<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u5c06\u9012\u5f52\u5730\u76d1\u63a7 <code>\/path\/to\/directory<\/code> \u76ee\u5f55\u4e2d\u7684\u6240\u6709\u6587\u4ef6\u548c\u5b50\u76ee\u5f55\uff0c\u6301\u7eed\u4e00\u4e2a\u5c0f\u65f6\uff083600\u79d2\uff09\u3002\u76d1\u63a7\u7ed3\u675f\u540e\uff0c\u5b83\u4f1a\u663e\u793a\u6bcf\u79cd\u4e8b\u4ef6\u7684\u603b\u8ba1\u6b21\u6570\uff0c\u8fd9\u53ef\u4ee5\u5e2e\u52a9\u4f60\u7406\u89e3\u8be5\u76ee\u5f55\u5728\u4e00\u4e2a\u5c0f\u65f6\u5185\u7684\u6d3b\u52a8\u6a21\u5f0f\u3002<\/p>\n<h4>\u6848\u4f8b 2: \u76d1\u63a7\u591a\u4e2a\u6587\u4ef6\u7684\u8bbf\u95ee\u548c\u4fee\u6539\u4e8b\u4ef6<\/h4>\n<p>\u5982\u679c\u4f60\u6709\u51e0\u4e2a\u5173\u952e\u6587\u4ef6\uff0c\u9700\u8981\u76d1\u63a7\u8fd9\u4e9b\u6587\u4ef6\u4f55\u65f6\u88ab\u8bbf\u95ee\u6216\u4fee\u6539\uff0c\u53ef\u4ee5\u8fd9\u6837\u505a\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywatch -e access -e modify -t 7200 \/path\/to\/file1 \/path\/to\/file2<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u76d1\u63a7\u6307\u5b9a\u7684\u4e24\u4e2a\u6587\u4ef6\uff0c\u53ea\u8bb0\u5f55\u8bbf\u95ee\u548c\u4fee\u6539\u4e8b\u4ef6\uff0c\u6301\u7eed\u4e24\u5c0f\u65f6\u3002\u8fd9\u5bf9\u4e8e\u8c03\u8bd5\u6216\u5b89\u5168\u76d1\u63a7\u975e\u5e38\u6709\u7528\uff0c\u6bd4\u5982\u76d1\u63a7\u914d\u7f6e\u6587\u4ef6\u6216\u91cd\u8981\u7684\u6570\u636e\u6587\u4ef6\u3002<\/p>\n<h4>\u6848\u4f8b 3: \u76d1\u63a7\u5e76\u8bb0\u5f55\u6587\u4ef6\u7cfb\u7edf\u6d3b\u52a8\u5230\u65e5\u5fd7\u6587\u4ef6<\/h4>\n<p>\u5982\u679c\u4f60\u60f3\u5c06\u76d1\u63a7\u5230\u7684\u6587\u4ef6\u7cfb\u7edf\u6d3b\u52a8\u8bb0\u5f55\u5230\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\u4e2d\uff0c\u4ee5\u4fbf\u540e\u7eed\u5206\u6790\uff0c\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u7ed3\u5408 <code>cron<\/code> \u4efb\u52a1\u6765\u5b9e\u73b0\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywatch -r -t 86400 \/path\/to\/watched\/directory &gt; \/path\/to\/logfile.log<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u4f1a\u9012\u5f52\u76d1\u63a7\u4e00\u4e2a\u76ee\u5f55\u4e00\u6574\u5929\uff0886400\u79d2\uff09\uff0c\u7136\u540e\u5c06\u7ed3\u679c\u91cd\u5b9a\u5411\u5230\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\u4e2d\u3002\u4f60\u53ef\u4ee5\u8bbe\u7f6e\u4e00\u4e2a\u6bcf\u65e5\u8fd0\u884c\u7684 <code>cron<\/code> \u4efb\u52a1\uff0c\u6bcf\u5929\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u65e5\u5fd7\u6587\u4ef6\u3002<\/p>\n<h4>\u6848\u4f8b 4: \u6309\u4e8b\u4ef6\u6392\u5e8f\u5e76\u8f93\u51fa\u8be6\u7ec6\u4fe1\u606f<\/h4>\n<p>\u5982\u679c\u4f60\u5bf9\u54ea\u4e9b\u4e8b\u4ef6\u6700\u9891\u7e41\u611f\u5174\u8da3\uff0c\u5e76\u5e0c\u671b\u5f97\u5230\u8be6\u7ec6\u7684\u8f93\u51fa\uff0c\u53ef\u4ee5\u4f7f\u7528\u6392\u5e8f\u9009\u9879\uff1a<\/p>\n<pre><code class=\"language-bash\">inotifywatch -v -t 3600 -r --descending access \/path\/to\/directory<\/code><\/pre>\n<p>\u8fd9\u4e2a\u547d\u4ee4\u5c06\u76d1\u63a7\u6307\u5b9a\u76ee\u5f55\u53ca\u5176\u5b50\u76ee\u5f55\uff0c\u6301\u7eed\u4e00\u4e2a\u5c0f\u65f6\uff0c\u5e76\u6309\u8bbf\u95ee\u4e8b\u4ef6\u7684\u53d1\u751f\u6b21\u6570\u964d\u5e8f\u6392\u5e8f\u8f93\u51fa\u7ed3\u679c\u3002\u8fd9\u5bf9\u4e8e\u5206\u6790\u6700\u9891\u7e41\u8bbf\u95ee\u7684\u6587\u4ef6\u975e\u5e38\u6709\u5e2e\u52a9\u3002<\/p>\n<p>\u8fd9\u4e9b\u6848\u4f8b\u5c55\u793a\u4e86 <code>inotifywatch<\/code> \u5728\u4e0d\u540c\u573a\u666f\u4e2d\u7684\u5e94\u7528\uff0c\u4ece\u57fa\u672c\u7684\u6587\u4ef6\u76d1\u63a7\u5230\u590d\u6742\u7684\u6570\u636e\u6536\u96c6\u548c\u5206\u6790\uff0c\u90fd\u662f\u8be5\u5de5\u5177\u7684\u5f3a\u9879\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5e94\u7528\u573a\u666f\uff1a\u5728\u751f\u4ea7\u73af\u5883\uff0c\u6709\u65f6\u4f1a\u9700\u8981\u4e24\u53f0\u4e3b\u673a\u7684\u7279\u5b9a\u76ee\u5f55\u5b9e\u73b0\u5b9e\u65f6\u540c\u6b65\u3002\u6bd4\u5982\uff0c\u5c06NFS\u5171\u4eab\u76ee\u5f55\u7684\u6570\u636e\u6587\u4ef6\uff0c\u81ea [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,74],"tags":[75,76],"views":539,"_links":{"self":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/473"}],"collection":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=473"}],"version-history":[{"count":1,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/473\/revisions"}],"predecessor-version":[{"id":474,"href":"http:\/\/8.141.4.74\/index.php?rest_route=\/wp\/v2\/posts\/473\/revisions\/474"}],"wp:attachment":[{"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=473"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=473"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/8.141.4.74\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=473"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}