怎样在 AlmaLinux 上安装和配置 LsyncD

Lsyncd(实时同步守护程序)用于在特定时间间隔后本地和远程同步或复制文件和目录。 Lsyncd 在后端使用 rsync 和 ssh。

Lsyncd 适用于主从架构。 它将监视主服务器上的目录。 如果主服务器上发生任何更改或修改,Lsyncd 将在特定时间间隔后将它们复制到其从服务器上。 这些频繁的目录更新和同步操作确保主从目录保持相同。

在本文中,我们将讨论怎样在 AlmaLinux 服务器上安装和配置 Lsyncd。

要求

  • 主服务器和从服务器。
  • 操作系统和版本:AlmaLinux OS 8.5。
  • 处理器:1.1 GHz。
  • RAM:至少 1 GB,但建议使用 2 GB。
  • 磁盘空间:至少 20 GB,但建议 40 GB。
  • 架构:64 位。
  • 软件:Lsyncd 和 SSHD。
  • 根访问您的 Linux 系统或通过 sudo 命令。

怎样在 AlmaLinux 上安装和配置 LsyncD

要继续安装和配置,您需要两台安装了 AlmaLinux 的服务器 – 一台用于主服务器(IP:192.168.1.20) example) 和一台从属服务器(IP: 192.168.1.21 在此 example)。

第 1 步:在主服务器和从服务器之间启用基于密钥的身份验证。

从主服务器,使用 ssh-keygen 命令生成公钥和私钥。

这是输出。

[[email protected] ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:IU8Zc98zsgAVIlSCgchSavTv+kkUyC53LWo/LAOPV6c [email protected]
The key's randomart image is:
+---[RSA 3072]----+
|.+...++.*.+.     |
|+o+ o  o B . .   |
|o. + .. + . o +  |
|. . . o+ . . o o |
| . o = .S   .    |
| .o =...         |
|  +oooo          |
| ..=+E.          |
|  ..++.          |
+----[SHA256]-----+
[[email protected] ~]#

使用 ssh-copy-id 命令将公钥复制到从服务器。

[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected] 
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

第 2 步:在 AlmaLinux 主服务器上安装 Lsyncd 包

使用以下 yum 命令在 AlmaLinux 中安装 lsyncd 依赖包。

[[email protected] ~]# yum install lua pkgconfig gcc asciidoc

这是输出。

[[email protected] ~]# yum install lua pkgconfig gcc asciidoc
Last metadata expiration check: 0:02:29 ago on Sun 06 Mar 2022 04:37:19 AM UTC.
Dependencies resolved.
=========================================================================================================================================================================
 Package                                                Architecture             Version                                               Repository                   Size
=========================================================================================================================================================================
Installing:
 asciidoc                                               noarch                   8.6.10-0.5.20180627gitf7c2274.el8                     appstream                   216 k
 gcc                                                    x86_64                   8.5.0-4.el8_5.alma                                    appstream                    23 M
 lua                                                    x86_64                   5.3.4-12.el8                                          appstream                   191 k
 pkgconf-pkg-config                                     x86_64                   1.4.2-1.el8                                           baseos                       15 k

—----
—----

Installed:
  adobe-mappings-cmap-20171205-3.el8.noarch              adobe-mappings-cmap-deprecated-20171205-3.el8.noarch        adobe-mappings-pdf-20180407-1.el8.noarch           
  asciidoc-8.6.10-0.5.20180627gitf7c2274.el8.noarch      atk-2.28.1-1.el8.x86_64                                     avahi-libs-0.7-20.el8.x86_64                       
  binutils-2.30-108.el8_5.1.x86_64                       boost-regex-1.66.0-10.el8.x86_64                            cairo-1.15.12-3.el8.x86_64                         
  cpp-8.5.0-4.el8_5.alma.x86_64                          ctags-5.8-22.el8.x86_64                                     cups-libs-1:2.2.6-40.el8.x86_64                    
  docbook-dtds-1.0-69.el8.noarch                         docbook-style-xsl-1.79.2-9.el8.noarch                       emacs-filesystem-1:26.1-7.el8.noarch               
  fontconfig-2.13.1-4.el8.x86_64                         fontpackages-filesystem-1.44-22.el8.noarch                  fribidi-1.0.4-8.el8.x86_64                         
  gcc-8.5.0-4.el8_5.alma.x86_64                          gd-2.2.5-7.el8.x86_64                                       gdk-pixbuf2-2.36.12-5.el8.x86_64                   
  gdk-pixbuf2-modules-2.36.12-5.el8.x86_64               glibc-devel-2.28-164.el8.x86_64                             glibc-headers-2.28-164.el8.x86_64                  
  google-droid-sans-fonts-20120715-13.el8.noarch         graphite2-1.3.10-10.el8.x86_64                              graphviz-2.40.1-43.el8.x86_64                      
  gtk-update-icon-cache-3.22.30-8.el8.x86_64             gtk2-2.24.32-5.el8.x86_64                                   harfbuzz-1.7.5-3.el8.x86_64                        
  hicolor-icon-theme-0.17-2.el8.noarch                   isl-0.16.1-6.el8.x86_64                                     jasper-libs-2.0.14-5.el8.x86_64                    
  jbig2dec-libs-0.16-1.el8.x86_64                        jbigkit-libs-2.1-14.el8.x86_64                              kernel-headers-4.18.0-348.12.2.el8_5.x86_64        
  lcms2-2.9-2.el8.x86_64                                 libICE-1.0.9-15.el8.x86_64                                  libSM-1.2.3-1.el8.x86_64                           
  libX11-1.6.8-5.el8.x86_64                              libX11-common-1.6.8-5.el8.noarch                            libXau-1.0.9-3.el8.x86_64                          
  libXaw-1.0.13-10.el8.x86_64                            libXcomposite-0.4.4-14.el8.x86_64                           libXcursor-1.1.15-3.el8.x86_64                     
  libXdamage-1.1.4-14.el8.x86_64                         libXext-1.3.4-1.el8.x86_64                                  libXfixes-5.0.3-7.el8.x86_64                       
  libXft-2.3.3-1.el8.x86_64                              libXi-1.7.10-1.el8.x86_64                                   libXinerama-1.1.4-1.el8.x86_64                     
  libXmu-1.1.3-1.el8.x86_64                              libXpm-3.5.12-8.el8.x86_64                                  libXrandr-1.5.2-1.el8.x86_64                       
  libXrender-0.9.10-7.el8.x86_64                         libXt-1.1.5-12.el8.x86_64                                   libXxf86misc-1.0.4-1.el8.x86_64                    
  libXxf86vm-1.1.4-9.el8.x86_64                          libdatrie-0.2.9-7.el8.x86_64                                libfontenc-1.1.3-8.el8.x86_64                      
  libgs-9.27-1.el8.x86_64                                libicu-60.3-2.el8_1.x86_64                                  libidn-1.34-5.el8.x86_64                           
  libijs-0.35-5.el8.x86_64                               libjpeg-turbo-1.5.3-12.el8.x86_64                           libmcpp-2.7.2-20.el8.x86_64                        
  libmpc-1.1.0-9.1.el8.x86_64                            libpaper-1.1.24-22.el8.x86_64                               libpkgconf-1.4.2-1.el8.x86_64                      
  librsvg2-2.42.7-4.el8.x86_64                           libthai-0.1.27-2.el8.x86_64                                 libtiff-4.0.9-20.el8.x86_64                        
  libtool-ltdl-2.4.6-25.el8.x86_64                       libwebp-1.0.0-5.el8.x86_64                                  libxcb-1.13.1-1.el8.x86_64                         
  libxcrypt-devel-4.1.1-6.el8.x86_64                     libxslt-1.1.32-6.el8.x86_64                                 lua-5.3.4-12.el8.x86_64                            
  mcpp-2.7.2-20.el8.x86_64                               openjpeg2-2.4.0-4.el8.x86_64                                pango-1.42.4-8.el8.x86_64                          
  pixman-0.38.4-1.el8.x86_64                             pkgconf-1.4.2-1.el8.x86_64                                  pkgconf-m4-1.4.2-1.el8.noarch                      
  pkgconf-pkg-config-1.4.2-1.el8.x86_64                  sgml-common-0.6.3-50.el8.noarch                             source-highlight-3.1.8-17.el8.x86_64               
  urw-base35-bookman-fonts-20170801-10.el8.noarch        urw-base35-c059-fonts-20170801-10.el8.noarch                urw-base35-d050000l-fonts-20170801-10.el8.noarch   
  urw-base35-fonts-20170801-10.el8.noarch                urw-base35-fonts-common-20170801-10.el8.noarch              urw-base35-gothic-fonts-20170801-10.el8.noarch     
  urw-base35-nimbus-mono-ps-fonts-20170801-10.el8.noarch urw-base35-nimbus-roman-fonts-20170801-10.el8.noarch        urw-base35-nimbus-sans-fonts-20170801-10.el8.noarch
  urw-base35-p052-fonts-20170801-10.el8.noarch           urw-base35-standard-symbols-ps-fonts-20170801-10.el8.noarch urw-base35-z003-fonts-20170801-10.el8.noarch       
  vim-filesystem-2:8.0.1763-16.el8_5.4.noarch            xml-common-0.6.3-50.el8.noarch                              xorg-x11-font-utils-1:7.5-41.el8.x86_64            
  xorg-x11-fonts-ISO8859-1-100dpi-7.5-19.el8.noarch      xorg-x11-server-utils-7.7-27.el8.x86_64                    

Complete!

在使用 yum 命令安装 lsyncd 包之前,您需要先使用以下命令安装 EPEL 存储库配置包,因为默认存储库中没有 lsyncd 包。

[[email protected] ~]# yum install -y epel-release

这是输出。

[[email protected] ~]# yum install -y epel-release
Last metadata expiration check: 0:06:06 ago on Sun 06 Mar 2022 04:37:19 AM UTC.
Dependencies resolved.
=========================================================================================================================================================================
 Package                                     Architecture                          Version                                   Repository                             Size
=========================================================================================================================================================================
Installing:
 epel-release                                noarch                                8-10.el8                                  extras                                 22 k

Transaction Summary
=========================================================================================================================================================================
Install  1 Package

Total download size: 22 k
Installed size: 32 k
Downloading Packages:
epel-release-8-10.el8.noarch.rpm                                                                                                         269 kB/s |  22 kB     00:00    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                    163 kB/s |  22 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                 1/1 
  Installing       : epel-release-8-10.el8.noarch                                                                                                                    1/1 
  Running scriptlet: epel-release-8-10.el8.noarch                                                                                                                    1/1 
  Verifying        : epel-release-8-10.el8.noarch                                                                                                                    1/1 
Installed:
  epel-release-8-10.el8.noarch    
                                                                                                                                       
Complete!

要安装 lsyncd 包,请运行以下命令。

[[email protected] ~]# yum install lsyncd

这是输出。

[[email protected] ~]# yum install lsyncd
Extra Packages for Enterprise Linux 8 - x86_64                                                                                            16 MB/s |  11 MB     00:00    
Extra Packages for Enterprise Linux Modular 8 - x86_64                                                                                   5.7 MB/s | 979 kB     00:00    
Dependencies resolved.
=========================================================================================================================================================================
 Package                                Architecture                           Version                                        Repository                            Size
=========================================================================================================================================================================
Installing:
 lsyncd                                 x86_64                                 2.2.2-9.el8                                    epel                                  86 k

Transaction Summary
=========================================================================================================================================================================
Install  1 Package

Total download size: 86 k
Installed size: 205 k
Is this ok [y/N]: y
Downloading Packages:
lsyncd-2.2.2-9.el8.x86_64.rpm                                                                                                            1.4 MB/s |  86 kB     00:00    
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                    691 kB/s |  86 kB     00:00     
Extra Packages for Enterprise Linux 8 - x86_64                                                                                           1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x2F86D6A1:
 Userid     : "Fedora EPEL (8) <[email protected]>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                                 1/1 
  Installing       : lsyncd-2.2.2-9.el8.x86_64                                                                                                                       1/1 
  Running scriptlet: lsyncd-2.2.2-9.el8.x86_64                                                                                                                       1/1 
  Verifying        : lsyncd-2.2.2-9.el8.x86_64                                                                                                                       1/1 

Installed:
  lsyncd-2.2.2-9.el8.x86_64                                                                                                                                              

Complete!

第 3 步:使用 Lsyncd 将本地目录与远程同步

使用此命令在主服务器上创建源目录。

[[email protected] ~]# mkdir master-lsyncd

您可以使用以下命令将一些文件添加到源目录。

[[email protected] ~]# sudo touch master-lsyncd/file{1..25}

这是输出。

[[email protected] master-lsyncd]# ll
total 0
-rw-r--r--. 1 root root 0 Mar  6 05:07 file1
-rw-r--r--. 1 root root 0 Mar  6 05:07 file10
-rw-r--r--. 1 root root 0 Mar  6 05:07 file11
-rw-r--r--. 1 root root 0 Mar  6 05:07 file12
-rw-r--r--. 1 root root 0 Mar  6 05:07 file13
-rw-r--r--. 1 root root 0 Mar  6 05:07 file14
-rw-r--r--. 1 root root 0 Mar  6 05:07 file15
-rw-r--r--. 1 root root 0 Mar  6 05:07 file16
-rw-r--r--. 1 root root 0 Mar  6 05:07 file17
-rw-r--r--. 1 root root 0 Mar  6 05:07 file18
-rw-r--r--. 1 root root 0 Mar  6 05:07 file19
-rw-r--r--. 1 root root 0 Mar  6 05:07 file2
-rw-r--r--. 1 root root 0 Mar  6 05:07 file20
-rw-r--r--. 1 root root 0 Mar  6 05:07 file21
-rw-r--r--. 1 root root 0 Mar  6 05:07 file22
-rw-r--r--. 1 root root 0 Mar  6 05:07 file23
-rw-r--r--. 1 root root 0 Mar  6 05:07 file24
-rw-r--r--. 1 root root 0 Mar  6 05:07 file25
-rw-r--r--. 1 root root 0 Mar  6 05:07 file3
-rw-r--r--. 1 root root 0 Mar  6 05:07 file4
-rw-r--r--. 1 root root 0 Mar  6 05:07 file5
-rw-r--r--. 1 root root 0 Mar  6 05:07 file6
-rw-r--r--. 1 root root 0 Mar  6 05:07 file7
-rw-r--r--. 1 root root 0 Mar  6 05:07 file8
-rw-r--r--. 1 root root 0 Mar  6 05:07 file9

在从服务器上创建一个目标目录。

[[email protected] ~]# mkdir slave-lsyncd

要设置 Lsyncd 配置文件,将示例配置复制到 /etc/lsyncd.conf。

[[email protected] ~]# cp /usr/share/doc/lsyncd/examples/lrsync.lua /etc/lsyncd.conf

将以下行添加到配置文件 /etc/lsyncd.conf。

[[email protected] master-lsyncd]# cat /etc/lsyncd.conf
----
-- User configuration file for lsyncd.
--
-- Simple example for default rsync.
--
settings{
 logfile = "/var/log/lsyncd.log",
 statusFile = "/var/log/lsyncd.stat",
 statusInterval = 2,
}
sync{
 default.rsync,
 source="/root/master-lsyncd",
 target="192.168.1.21:/root/slave-lsyncd",
 rsync={rsh ="/usr/bin/ssh -l root -i /root/.ssh/id_rsa",}
}

第 4 步:启动 Lsyncd 服务并在重启时启用

要启动 lsyncd 服务,您可以运行以下命令。

[[email protected] ~]# systemctl start lsyncd

要在重新启动时启用 lsyncd,您可以运行以下命令。

[[email protected] ~]# systemctl enable lsyncd

这是输出。

[[email protected] ~]# systemctl start lsyncd
[[email protected] ~]# systemctl enable lsyncd
Created symlink /etc/systemd/system/multi-user.target.wants/lsyncd.service → /usr/lib/systemd/system/lsyncd.service.
[[email protected] ~]# systemctl status lsyncd
● lsyncd.service - Live Syncing (Mirror) Daemon
   Loaded: loaded (/usr/lib/systemd/system/lsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2022-03-06 04:58:17 UTC; 3s ago
 Main PID: 10950 (lsyncd)
    Tasks: 1 (limit: 5834)
   Memory: 1.8M
   CGroup: /system.slice/lsyncd.service
           └─10950 /usr/bin/lsyncd -nodaemon /etc/lsyncd.conf

Mar 06 04:58:17 noufserver-master systemd[1]: Started Live Syncing (Mirror) Daemon.

第 5 步:分析复制和日志报告

在本文中,我们使用 root 用户来同步数据。 您可以根据需要更改用户名。

使用 Lsyncd 日志文件 /var/log/lsyncd.log 可以查看复制是否完成。

[[email protected] ~]# tail -50 /var/log/lsyncd.log

这是输出。

[[email protected] ~]# tail -50 /var/log/lsyncd.log
Sun Mar  6 04:58:17 2022 Normal: --- Startup ---
Sun Mar  6 04:58:17 2022 Normal: recursive startup rsync: /root/master-lsyncd/ -> 192.168.1.21:/root/slave-lsyncd/
Sun Mar  6 04:58:17 2022 Normal: Startup of /root/master-lsyncd/ -> 192.168.1.21:/root/slave-lsyncd/ finished.
Sun Mar  6 05:08:01 2022 Normal: Calling rsync with filter-list of new/modified files/dirs
/file1
/file2
/file3
/file4
/file5
/file6
/file7
/file8
/file9
/file10
/file11
/file12
/file13
/file14
/file15
/file16
/file17
/file18
/file19
/file20
/file21
/file22
/file23
/file24
/file25
Sun Mar  6 05:08:01 2022 Normal: Finished a list after exitcode: 23
Sun Mar  6 05:09:09 2022 Normal: --- TERM signal, fading ---
Sun Mar  6 05:09:09 2022 Normal: --- Startup ---
Sun Mar  6 05:09:09 2022 Normal: recursive startup rsync: /root/master-lsyncd/ -> 192.168.1.21:/root/slave-lsyncd/
Sun Mar  6 05:09:09 2022 Normal: Startup of /root/master-lsyncd/ -> 192.168.1.21:/root/slave-lsyncd/ finished.

您可以使用统计文件 /var/log/lsyncd.stat 查看 lsyncd 状态报告。

[[email protected] lsyncd]# cat /var/log/lsyncd.stat

这是输出。

[[email protected] ~]# cat /var/log/lsyncd.stat
Lsyncd status report at Sun Mar  6 05:09:11 2022

Sync1 source=/root/master-lsyncd/
There are 0 delays
Excluding:
  nothing.

Inotify watching 1 directories
  1: /root/master-lsyncd/

总结

如果您正在寻找在 Almalinux 上安装和配置 Lsyncd 的服务器,或者如果您对执行上述任何步骤感到不舒服,Liquid Web 可以满足您的需求。 我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。

我们提供专用服务器和 VPS 托管选项。 此外,我们技术娴熟的团队提供 24/7/365 全天候支持和监控服务,让您可以专注于您的网站。 立即联系我们的团队以了解更多信息。