使用 lsyncd 同步本地和远程目录
自动同步本地服务器(或 VPS)上的目录到另一台或多台远程服务器的办法和工具有很多,最简单的办法可能是用 rsync + cron(参考:用 VPS 给博客做镜像),这种办法有个问题就是 rsync 只能在固定时间间隔里被 cron 调用,如果时间间隔设的太短,频繁 rsync 会增加服务器负担;如果时间间隔设的太长,可能数据不能及时同步。今天介绍的 lsyncd 采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,这种机制可以做到只有在需要(变化)的时候才去同步。lsyncd 密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过 rsync 或 rsync+ssh 方式实现文件同步。lsyncd 默认同步触发条件是每20秒或者每积累到1000次写入事件就触发一次,当然,这个触发条件可以通过配置参数调整。
lsyncd 已经在 Ubuntu 的官方源里,安装很容易:
$ sudo apt-get update $ sudo apt-get install lsyncd
lsyncd 安装后没有自动生成所需要的配置文件和目录,需要手动创建:
$ sudo mkdir /etc/lsyncd
$ sudo touch /etc/lsyncd/lsyncd.conf.lua
$ sudo mkdir /var/log/lsyncd
$ sudo touch /var/log/lsyncd/lsyncd.{log,status}
配置 lsyncd,注意 source, host, targetdir 部分,依次是本地需要同步到远程的目录(源头),远程机器的 IP,远程目录(目标):
$ sudo vi /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsyncssh,
source = "/home/vpsee/local",
host = "192.168.2.5",
targetdir = "/remote"
}
配置本地机器和远程机器 root 帐号无密码 ssh 登陆,并在远程机器上(假设 IP 是 192.168.2.5)创建一个 /remote 目录:
$ sudo su # ssh-keygen -t rsa # ssh-copy-id root@192.168.2.5 # ssh 192.168.2.5 # mkdir /remote
配置好后就可以在本地机器上启动 lsyncd 服务了,启动服务后本地机器 /home/vpsee/local 下的目录会自动同步到远程机器的 /remote 目录下:
$ sudo service lsyncd restart
除了同步本地目录到远程目录外,lsyncd 还可以轻松做到同步本地目录到本地另一目录,只要修改配置文件就可以了:
$ sudo vi /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/var/log/lsyncd/lsyncd.status"
}
sync {
default.rsync,
source = "/home/vpsee/local",
target = "/localbackup"
}
$ sudo service lsyncd restart
建议继续学习:
- 关于IO的同步,异步,阻塞,非阻塞 (阅读:15946)
- mysql 主从同步原理 (阅读:6301)
- 消息分发的同步均衡策略 (阅读:5818)
- 五款最好的免费同步软件 (阅读:4500)
- MySQL5.5复制/同步的新特性及改进 (阅读:4398)
- 大量小文件的实时同步方案 (阅读:4319)
- redis源代码分析 - replication (阅读:4137)
- 三款面向 Amazon S3 的开源文件同步工具之对比 (阅读:3918)
- rsync主动同步代码 (阅读:3640)
- truncate table 不能复制到从库 (阅读:3313)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:vpsee 来源: vpsee.com
- 标签: lsyncd 同步
- 发布时间:2013-10-23 12:58:13
-
[325] WordPress插件开发 -- 在插件使用 -
[151] 解决 nginx 反向代理网页首尾出现神秘字 -
[91] IOS安全–浅谈关于IOS加固的几种方法 -
[50] 二维码的生成细节和原理 -
[50] Linux Used内存到底哪里去了? -
[50] 到底什么是MVC? -
[48] Shell的那些事儿 -
[47] Hacker News 排名算法工作原理 -
[47] 中间件和稳定性平台 -
[46] 浏览器的工作原理:新式网络浏览器幕后揭秘
