<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Ops运维 | Mr`kang Blog｜小豆子]]></title> 
<link>https://www.cnmysql.com/index.php</link> 
<description><![CDATA[关注服务器运维技术、DB优化、Docker虚拟化、自动化运维、工作积累]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Ops运维 | Mr`kang Blog｜小豆子]]></copyright>
<item>
<link>https://www.cnmysql.com/post//</link>
<title><![CDATA[使用 lsyncd 同步本地和远程目录]]></title> 
<author>kangyang &lt;kangyang315@qq.com&gt;</author>
<category><![CDATA[LINUX系统管理]]></category>
<pubDate>Mon, 15 Sep 2014 08:14:34 +0000</pubDate> 
<guid>https://www.cnmysql.com/post//</guid> 
<description>
<![CDATA[ 
	<span style="font-family: 宋体;"><span style="font-size: 12px;"><br/>自动同步本地服务器（或 VPS）上的目录到另一台或多台远程服务器的办法和工具有很多，最简单的办法可能是用 rsync + cron，这种办法有个问题就是 rsync 只能在固定时间间隔里被 cron 调用，如果时间间隔设的太短，频繁 rsync 会增加服务器负担；如果时间间隔设的太长，可能数据不能及时同步。今天介绍的 lsyncd 采用了 Linux 内核（2.6.13 及以后）里的 inotify 触发机制，这种机制可以做到只有在需要（变化）的时候才去同步。lsyncd 密切监测本地服务器上的参照目录，当发现目录下有文件或目录变更后，立刻通知远程服务器，并通过 rsync 或 rsync+ssh 方式实现文件同步。lsyncd 默认同步触发条件是每20秒或者每积累到1000次写入事件就触发一次，当然，这个触发条件可以通过配置参数调整。<br/>lsyncd 已经在 Ubuntu 的官方源里，安装很容易：<br/><div class="code">$ sudo apt-get update<br/>$ sudo apt-get install lsyncd</div><br/>lsyncd 安装后没有自动生成所需要的配置文件和目录，需要手动创建：<br/><div class="code">$ sudo mkdir /etc/lsyncd<br/>$ sudo touch /etc/lsyncd/lsyncd.conf.lua<br/>$ sudo mkdir /var/log/lsyncd<br/>$ sudo touch /var/log/lsyncd/lsyncd.&#123;log,status&#125;</div><br/>配置 lsyncd，注意 source, host, targetdir 部分，依次是本地需要同步到远程的目录（源头），远程机器的 IP，远程目录（目标）：<br/><div class="code">$ sudo vi /etc/lsyncd/lsyncd.conf.lua<br/>settings &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfile = &quot;/var/log/lsyncd/lsyncd.log&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statusFile = &quot;/var/log/lsyncd/lsyncd.status&quot;<br/>&#125;<br/><br/>sync &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default.rsyncssh,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;source = &quot;/home/vpsee/local&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;host = &quot;192.168.2.5&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;targetdir = &quot;/remote&quot;<br/>&#125;</div><br/>配置本地机器和远程机器 root 帐号无密码 ssh 登陆，并在远程机器上（假设 IP 是 192.168.2.5）创建一个 /remote 目录：<br/><div class="code">$ sudo su<br/># ssh-keygen -t rsa<br/># ssh-copy-id root@192.168.2.5<br/><br/># ssh 192.168.2.5<br/># mkdir /remote</div><br/>配置好后就可以在本地机器上启动 lsyncd 服务了，启动服务后本地机器 /home/vpsee/local 下的目录会自动同步到远程机器的 /remote 目录下：<br/><div class="code">$ sudo service lsyncd restart</div><br/>除了同步本地目录到远程目录外，lsyncd 还可以轻松做到同步本地目录到本地另一目录，只要修改配置文件就可以了：<br/><div class="code">$ sudo vi /etc/lsyncd/lsyncd.conf.lua<br/>settings &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfile = &quot;/var/log/lsyncd/lsyncd.log&quot;,<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statusFile = &quot;/var/log/lsyncd/lsyncd.status&quot;<br/>&#125;<br/><br/><br/>sync &#123;<br/>&nbsp;&nbsp;default.rsync,<br/>&nbsp;&nbsp;source = &quot;/home/vpsee/local&quot;,<br/>&nbsp;&nbsp;target = &quot;/localbackup&quot;<br/>&#125;<br/><br/>$ sudo service lsyncd restart</div><br/></span></span><br/>Tags - <a href="https://www.cnmysql.com/tags/lsyncd/" rel="tag">lsyncd</a> , <a href="https://www.cnmysql.com/tags/%25E5%2590%258C%25E6%25AD%25A5/" rel="tag">同步</a>
]]>
</description>
</item><item>
<link>https://www.cnmysql.com/post//#blogcomment</link>
<title><![CDATA[[评论] 使用 lsyncd 同步本地和远程目录]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.cnmysql.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>