admin avatar

这应该是最详细的lsyncd 实时同步数据的教程啦

🕟 by admin





小白一个,这折腾了一天才搞定lsyncd 实时同步数据。

原因就是网上的教程很多都是基于不同的系统而写的。下面的教程是基于debian而写的。

配置文件都是一样的。配置文件是服务端同时向两台客户端实时同步数据。加注释了方便看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
settings {
   logfile    = "/tmp/lsyncd.log",
   statusFile = "/tmp/lsyncd.status",
   insist = true,
   statusInterval = 10
}
//上面的是主配置文件
lsyncd的可选参数:
#############
logfile 	  : 指定lsyncd工具本身运行所产生的日志文件存放位置
statusFile	  : 定义lsyncd监控目录状态文件的存放位置
statusInterval	  : 隔多少秒记录一次被监控目录的状态
nodaemon=true 	  : 默认是不启用守护模式的
inotifyMode	  : 指定要监控的事件,如,CloseWrite,Modify,CloseWrite or Modify
maxProcesses  	  : 指定同步时进程的最大个数
maxDelays	  : 当事件被命中累计多少次后才进行一次同步
##########################
sync {
    default.rsyncssh,
    source    = "/home/test1",
    host      = "192.168.1.5",
    targetdir = "/home/test1",
    -- delete="true",
    //默认是先清空客户端目录在同步
    --exclude = { "dir*" },
    //排除的目录
    --excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
    -- maxDelays = 5,
    delay = 0,
    -- init = false,
    rsync    = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        verbose   = true,
        --extra = {"--bwlimit=2000"},
        },
    ssh      = {
        port  =  22
        }
    }

sync {
    default.rsyncssh,
    source    = "/home/test1",
    host      = "192.168.1.2",
    targetdir = "/home/test1",
    -- delete="true",
    --exclude = { "dir*" },
    --excludeFrom = "/etc/rsyncd.d/rsync_exclude.lst",
    -- maxDelays = 5,
    delay = 0,
    -- init = false,
    rsync    = {
        binary = "/usr/bin/rsync",
        archive = true,
        compress = true,
        verbose   = true,
        --extra = {"--bwlimit=2000"},
        },
    ssh      = {
        port  =  22
        }
    }
###################
一些rsync自带参数:
#######################
default.rsync	: 指定lsyncd运行模式,另外,还有default.direct,default.rsyncssh模式,个人建议缺省
source		: 指定要监控的目录,务必全部用绝对路径
target		: 要同步到的目标目录,一般为rsync服务端模块下指定的目录
init		: 为false时表示只同步lsyncd进程启动以后发生改动事件的文件,否则,反之,默认为true
delay		: 当命中的事件累计到多少时再触发同步
exclude		: 通过此选项排除掉不需要同步的文件,可用它自己的正则进行匹配
delete		: 和rsync 的 --delete 作用一样,先清空再同步
compress	: 压缩后再同步
bwlimit		: 限速同步,当你不想占满带宽时
archive		: 归档模式同步
perms		: 保留文件原有属性同步

#######################

重点来了,启动lsyncd的正确命令是什么?

systemctl start lsyncd

正确的启动lsyncd命令是要指定配置文件的。

lsyncd -log Exec /filename/config/lsyncd.conf

那么问题来了,如果使用密匙登陆服务器,并且有多台服务器怎么办?

简单,看下面代码,已经添加注释

下面的步骤一定要记得,否则会出现rsync255错误

vi ~/.ssh/config

1
2
3
4
5
6
7
Host 10.11.11.11
User username2
IdentityFile ~/.ssh/test_rsa2

Host 10.10.11.11
User username1
IdentityFile ~/.ssh/test_rsa1

记住如果修改了lsyncd的配置文件记得重启lsyncd进程





💘 相关文章

写一条评论

Based on Golang + fastHTTP + sdb | go1.18.3 Processed in 2ms