1
- # Rocky Linux - 镜像解决方案 - lsycnd
1
+ ---
2
+ title : 镜像解决方案 - lsyncd
3
+ author : Steven Spencer
4
+ contributors : Ezequiel Bruni, tianci li
5
+ updated : 2021-10-29
6
+ ---
2
7
3
- ## 准备工作
8
+ # 镜像解决方案 - ` lsyncd `
4
9
5
- 在继续阅读这篇指南之前,您需要准备或了解以下的内容:
10
+ ## 必备条件
11
+
12
+ 以下是您需要了解并准备本指南的所有内容:
6
13
7
14
* 运行 Rocky Linux 的计算机。
8
15
* 熟练从命令行修改配置文件。
9
16
* 了解如何使用命令行编辑器(本文使用 vi,但您也可以使用其他编辑器)。
10
17
* 您需要 root 用户访问权限,并且最好以 root 用户身份登录终端。
11
- * SSH 公私密钥对 。
12
- * Fedora 的 EPEL 仓库
18
+ * SSH 公钥私钥对 。
19
+ * Fedora 的 EPEL 软件仓库(也叫存储库)
13
20
* 熟悉事件监视程序接口 * inotify*
14
21
* 可选:熟悉 * tail*
15
22
16
- # 简介
23
+ ## 简介
17
24
18
- 如果您正在寻找一种在计算机之间自动同步文件和文件夹的方法,lsyncd 是一个相当不错的选择。对初学者来说唯一的缺点是什么?您必须通过命令行和文本文件配置所有内容 。
25
+ 如果您正在寻找一种在计算机之间自动同步文件和文件夹的方法,` lsyncd ` 是一个相当不错的选择。对初学者来说唯一的缺点是什么?那就是您必须通过命令行和文本文件配置所有内容 。
19
26
20
27
即便如此,它还是值得任何系统管理员认真学习。
21
28
22
- * lsyncd* 的最佳描述来自其 man 手册页。稍微解释一下,lsyncd 是一种轻量级实时镜像解决方案,相对易于安装。它不需要新的文件系统或块设备,也不会影响本地文件系统的性能。简而言之,它镜像文件。
29
+ * lsyncd* 的最佳描述来自其 man 手册页。稍微解释一下,lsyncd 是一个相对易于安装的轻量级实时镜像解决方案,它不需要新的文件系统或块设备,也不会影响本地文件系统的性能。简而言之,它的作用就是对文件进行镜像。
30
+
31
+ lsyncd 监视本地目录树事件监视器接口(inotify)。它在几秒钟内聚合和组合事件,然后产生一个(或多个)进程来同步更改,默认进程为` rsync ` 。
23
32
24
- lsyncd 监视本地目录树事件监视器接口(inotify)。它在几秒钟内聚合并组合事件,然后生成一个(或多个)进程来同步更改。默认情况下,进程是 rsync。
33
+ 在本文中,带有原始文件的系统称为“master(主)”,而与之同步的系统将称为“target(目标)”。实际上,使用 ` lsyncd ` 可以完全镜像一个服务器,只要非常仔细地指定要同步的目录和文件,这是非常棒的!
25
34
26
- 在本文中,带有原始文件的系统称为“master(主)”,而与之同步的系统将称为“target(目标)”。实际上,,使用 lsyncd 通过非常仔细地指定要同步的目录和文件是有可能完全镜像服务器。真是太好了!
35
+ 对于远程同步,您还需要设置 [ Rocky Linux SSH 公钥私钥对 ] ( ../security/ssh_public_private_keys.md ) 。此处的示例使用 SSH(默认端口 22)。
27
36
28
- 对于远程同步,您还需要设置 [ Rocky Linux SSH 公私钥对 ] ( ../security/ssh_public_private_keys.md ) 。此处的示例使用 SSH(端口 22) 。
37
+ 对于这个工具程序,您可以在 [ 官方项目地址 ] ( https://github.com/axkibe/lsyncd ) 找到最新的版本信息 。
29
38
30
- # 安装 lsycnd
39
+ ## 安装 lsyncd
31
40
32
- 实际上有两种方法可以安装 lsyncd。此处两种方法都介绍,但首选的方法是从源代码安装。这种安装相对容易,而且几乎不需要依赖项。RPM 往往会稍微落后于源码包。换言之,此处给出两种方法,自行选择 。
41
+ 实际上有两种方式可以安装 lsyncd,此处两种方式都介绍,我们想给您两个选择,让您选择。RPM安装方式的版本通常都会比源代码版本落后,但是它易于安装。在撰写本文时,RPM方式安装的包版本号是2.2.2-9,而源代码版本号现在是2.2.3 。
33
42
34
- ## 安装 lsycnd —— RPM 方法
43
+ ## 安装 lsyncd —— RPM 方式
35
44
36
- 安装 RPM 版本相对容易。您唯一需要首先安装的是 Fedora 的 EPEL 软件库。只需一条命令即可完成此操作:
45
+ 安装RPM版本是比较容易的,您需要首先安装的是来自Fedora的EPEL软件库。这可以用一个命令来完成。
37
46
38
- ` dnf install https://dl.fedoraproject.org/pub/ epel/epel -release-latest-8.noarch.rpm `
47
+ ` dnf install -y epel-release `
39
48
40
49
然后,只需安装 lsyncd,任何缺少的依赖项都将与它一起安装:
41
50
42
51
` dnf install lsyncd `
43
52
44
- 就这样!
53
+ 将服务设置为开机自启动,但现在不启动:
54
+
55
+ ` systemctl enable lsyncd `
56
+
57
+ RPM安装方式就是这么简单!
45
58
46
- ## 安装 lsycnd —— 源码方法
59
+ ## 安装 lsyncd —— 源代码方式
47
60
48
- 从源码安装并不复杂,只需遵循本指南,相信您能很快完成一切事情 !
61
+ 从源码安装并不复杂,只需按照本指南操作,您很快就可以启动并运行 !
49
62
50
- ### 安装依赖
63
+ ### 安装依赖项
51
64
52
- 我们需要安装下面的一些依赖项:lsyncd 本身需要的依赖项,以及从源码构建软件包所需要的依赖项 。在 Rocky Linux 机器上使用此命令,以确保您具有所需的依赖项。如果要从源码进行构建,则最好安装所有开发工具 :
65
+ 我们需要安装下面的一些依赖项:一些是 ` lsyncd ` 本身需要的,还有一些是从源代码构建软件包所需要的 。在 Rocky Linux 机器上使用此命令,以确保您具有所需的依赖项。如果要从源码进行构建,则最好安装所有的开发工具 :
53
66
54
67
` dnf groupinstall 'Development Tools' `
55
68
56
69
以下是 lsyncd 本身及其构建过程所需的依赖项:
57
70
58
71
` dnf install lua lua-libs lua-devel cmake unzip wget rsync `
59
72
60
- ### 下载 lsycnd 并构建
73
+ ### 下载 lsyncd 并构建
61
74
62
- 接下来,获取源码 :
75
+ 接下来,下载源码 :
63
76
64
77
` wget https://github.com/axkibe/lsyncd/archive/master.zip `
65
78
@@ -71,7 +84,7 @@ lsyncd 监视本地目录树事件监视器接口(inotify)。它在几秒钟
71
84
72
85
` cd lsyncd-master `
73
86
74
- And then:
87
+ 然后:
75
88
76
89
` mkdir build `
77
90
@@ -81,19 +94,17 @@ And then:
81
94
82
95
现在执行以下命令:
83
96
84
- ```
97
+ ``` bash
85
98
cmake ..
86
99
make
87
100
make install
88
101
```
89
102
90
103
完成后,您应该已经安装了 lsyncd 二进制文件并可以在 * /usr/local/bin* 中使用。
91
104
92
- # lsycnd Systemd 服务
93
-
94
- 两种安装方法都不会创建用于重启时启动 lsyncd 的 systemd 服务。我们希望能够做到这一点,因为如果您正在镜像文件,肯定不希望因忘记手动启动服务而使镜像处于脱机状态。
105
+ ## lsyncd Systemd 服务
95
106
96
- 这对于任何系统管理员来说都是非常尴尬的 !
107
+ 使用RPM安装方法时,已经为您安装了systemd服务,但如果您选择从源代码安装,则需要创建systemd服务。虽然您可以在没有systemd服务的情况下启动二进制文件,但我们希望确保它在开机自启动时“确实”启动了。否则,机器重新启动时将停止同步工作,如果您忘记了再次启动lsycnd,这很可能会让任何系统管理员感到非常尴尬 !
97
108
98
109
创建 systemd 服务并不复杂,从长远来看,它将为您节省大量时间。
99
110
@@ -105,7 +116,7 @@ make install
105
116
106
117
该文件的内容应为:
107
118
108
- ```
119
+ ``` bash
109
120
[Unit]
110
121
Description=Live Syncing (Mirror) Daemon
111
122
After=network.target
@@ -121,6 +132,7 @@ PIDFile=/run/lsyncd.pid
121
132
[Install]
122
133
WantedBy=multi-user.target
123
134
```
135
+
124
136
现在,将刚才创建的文件安装到正确的位置:
125
137
126
138
` install -Dm0644 /root/lsyncd.service /usr/lib/systemd/system/lsyncd.service `
@@ -129,15 +141,15 @@ WantedBy=multi-user.target
129
141
130
142
` systemctl daemon-reload `
131
143
132
- # 配置
144
+ ## ` lsyncd ` 配置
133
145
134
- 无论您选择何种方法安装 lsyncd,都需要配置文件 :* /etc/lsyncd.conf* 。下一部分将讲解如何构建一个简单的配置文件,并测试它。
146
+ 无论您选择何种方式安装 lsyncd,都需要对配置文件进行配置 :* /etc/lsyncd.conf* 。下一部分将讲解如何构建一个简单的配置文件,并测试它。
135
147
136
- ## 测试配置示例
148
+ ## 用于测试的简单配置
137
149
138
- 下面是一个简单配置文件的示例,它将 * /home* 同步到另一台机器。目标机器是一个本地 IP 地址:* 192.168.1.40*
150
+ 下面是一个简单配置文件的示例,它将 * /home* 同步到另一台机器。目标机器是一个私有的 IP 地址:* 192.168.1.40*
139
151
140
- ```
152
+ ``` bash
141
153
settings {
142
154
logfile = " /var/log/lsyncd.log" ,
143
155
statusFile = " /var/log/lsyncd-status.log" ,
@@ -164,28 +176,28 @@ sync {
164
176
165
177
对该文件进行分解解释:
166
178
167
- * 服务启动时将自动创建 "logfile" 和 "statusFile"。
168
- * "statusInterval" 是写入 statusFile 之前要等待的秒数 。
179
+ * 服务启动时将自动创建 "logfile" 和 "statusFile"两个参数里的文件 。
180
+ * "statusInterval" 是写入 statusFile 之前的等待的秒数 。
169
181
* "maxProcesses" 是允许 lsyncd 产生的进程数。事实上,除非您在超级繁忙的计算机上运行此进程,否则一个进程就足够了。
170
182
* 在 sync 部分,"default.rsyncssh" 表示通过 ssh 使用 rsync。
171
183
* "source=" 是要从中同步的目录路径。
172
184
* "host=" 是要同步到的目标计算机。
173
- * "excludeFrom=" 告诉 lsyncd 排除的文件位置。它必须存在,但可以为空。
174
- * "targetdir=" 是要将文件发送到的目标目录 。在大多数情况下,它将等于 source 值,但并非总是如此。
185
+ * ** "excludeFrom="告诉 lsyncd 排除的文件位置。它必须存在,而且非常重要。 **
186
+ * "targetdir=" 要将文件发送到目标计算机的目录位置 。在大多数情况下,它等于 source 值,但并非总是如此。
175
187
* 然后,"rsync ="部分是运行 rsync 的选项。
176
188
* 最后,"ssh ="部分指定了正在监听目标计算机上的 SSH 端口。
177
189
178
- 如果要添加多个目录进行同步,则需要为每个目录重复整个"sync"部分,包括所有开始括号和结束括号。
190
+ ** 如果要添加多个目录进行同步,则需要为每个目录重复整个"sync"部分,包括所有开始括号和结束括号。**
179
191
180
192
## lsyncd.exclude 文件
181
193
182
194
如前所述,"excludeFrom"文件必须存在,所以现在创建它:
183
195
184
196
` touch /etc/lsyncd.exclude `
185
197
186
- 如果要在计算机上同步 /etc 文件夹,那么需要忽略其中许多文件和(或)目录。只需将需要忽略的文件和目录简单地列在文件中 ,每行一个,如下所示:
198
+ 如果要在计算机上同步 /etc 文件夹,但是需要忽略一些文件或者目录,那么您只需将需要忽略的文件和目录简单地列在文件中 ,每行一个,如下所示:
187
199
188
- ```
200
+ ``` bash
189
201
/etc/hostname
190
202
/etc/hosts
191
203
/etc/networks
@@ -210,23 +222,23 @@ sync {
210
222
211
223
` tail /var/log/lsyncd-status.log `
212
224
213
- 假设一切正确,进入到 ` /home/[user] ` 目录,其中 ` [user] ` 是计算机上的用户 ,并使用 * touch* 在其中创建新文件。
225
+ 假设一切正确,进入到 ` /home/[user] ` 目录,其中 ` [user] ` 是Rocky Linux上的普通用户(UID大于等于1000) ,并使用 * touch* 在其中创建新文件。
214
226
215
227
` touch /home/[user]/testfile `
216
228
217
- 现在转到目标计算机,查看文件是否显示。如果显示,那么一切都会按预期进行。将 lsyncd.service 设置为在引导时使用以下命令 :
229
+ 现在转到目标计算机,查看文件是否显示。如果显示,那么一切都会按预期进行。将 lsyncd.service 设置为开机自启动使用以下命令 :
218
230
219
231
` systemctl enable lsyncd `
220
232
221
233
222
- ## 谨记
234
+ ## 注意
223
235
224
236
每当您将一组文件或目录同步到另一台计算机时,请仔细考虑它对目标计算机的影响。如果您回到上面示例中的 ** The lsyncd.exclude File** ,您能想象如果将 * /etc/fstab* 同步会发生什么情况?
225
237
226
- 对于新手,* fstab* 是用于在任何 Linux 机器上配置存储驱动器的文件。磁盘和标签几乎可以肯定是不同的。下次重新引导目标计算机时,它很可能无法完全引导 。
238
+ 对于新手,* fstab* 是用于在任何 Linux 机器上配置存储驱动器的文件。磁盘和标签几乎可以肯定是不同的。下次重新启动目标计算机时,它很可能无法正常启动 。
227
239
228
- # 总结与参考
240
+ lsyncd是单向同步的工具。
229
241
230
- lsycnd 是用于在计算机之间进行目录同步的强大工具。如您所见,安装起来并不难,并且很容易维护。不能要求更多。
242
+ # 总结
231
243
232
- 您可以去 [ 官方网站 ] ( https://github.com/axkibe/lsyncd ) 了解更多关于 lsyncd 的信息 。
244
+ lsycnd 是用于在计算机之间进行目录同步的强大工具。如您所见,安装起来并不难,并且很容易维护。不能要求更多了 。
0 commit comments