如何在 Ubuntu 20.04 LTS 上安装 lsyncd

lsyncd 是什么?

lsyncd 是一个基于 rsync 的工具,它监视指定目录(包括子目录)的更新和修改,然后将这些更改同步到指定的目标。 它是一个轻量级的命令应用程序,使用流行的 Lua 语言易于安装和配置。

它在跟踪配置目录中的数据修改时非常有用,如果看到更改,它会在经常更新新内容的目录之间同步数据。 默认情况下,它只是 rsync。

先决条件

  • 这些说明专门用于在 Ubuntu 20.04 LTS 上安装 lsyncd。
  • 我们将在 Liquid Web Core Managed Ubuntu 20.04 LTS 服务器上工作。
  • 我们以 root 用户身份登录。

安装 lsyncd

第 1 步:更新和升级

首先,我们将遵循我们简单的最佳实践建议,确保在安装任何新软件包之前,服务器上的可用软件包列表是最新的。

root@host3:~# apt-get -y update && apt-get upgrade -y
 Hit:1 https://syspackages.sourcedns.com/packages/stable/ubuntu focal InRelease
 Hit:2 https://us.archive.ubuntu.com/ubuntu focal InRelease
 Get:3 https://us.archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
 Get:4 https://us.archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
 Get:5 https://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
 Get:6 https://us.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [378 kB]
 Get:7 https://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [670 kB]
 Get:8 https://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [695 kB]
 Get:9 https://us.archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [517 kB]
 Fetched 2,576 kB in 1s (3,783 kB/s)
 Reading package lists… Done
 Reading package lists… Done
 Building dependency tree
 Reading state information… Done
 Calculating upgrade… Done
 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
 root@host3:~# 

第 2 步:安装

作为预防措施,我们将验证我们的系统上没有安装 lsyncd。

root@host3:~# which lsyncd
 root@host3:~#

接下来,我们将安装 lsyncd 和任何所需的软件包。

root@host3:~# apt-get -y update && apt-get upgrade -y
 Hit:1 https://syspackages.sourcedns.com/packages/stable/ubuntu focal InRelease
 Hit:2 https://us.archive.ubuntu.com/ubuntu focal InRelease
 Get:3 https://us.archive.ubuntu.com/ubuntu focal-updates InRelease [111 kB]
 Get:4 https://us.archive.ubuntu.com/ubuntu focal-backports InRelease [98.3 kB]
 Get:5 https://security.ubuntu.com/ubuntu focal-security InRelease [107 kB]
 Get:6 https://us.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [378 kB]
 Get:7 https://us.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [670 kB]
 Get:8 https://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [695 kB]
 Get:9 https://us.archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [517 kB]
 Fetched 2,576 kB in 1s (3,783 kB/s)
 Reading package lists… Done
 Reading package lists… Done
 Building dependency tree
 Reading state information… Done
 Calculating upgrade… Done
 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
 root@host3:~# which lsyncd
 root@host3:~# apt-get -y install lsyncd
 Reading package lists… Done
 Building dependency tree
 Reading state information… Done
 The following additional packages will be installed:
   liblua5.3-0 lua5.3
 The following NEW packages will be installed:
   liblua5.3-0 lsyncd lua5.3
 0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
 Need to get 294 kB of archives.
 After this operation, 1,128 kB of additional disk space will be used.
 Get:1 https://us.archive.ubuntu.com/ubuntu focal/main amd64 liblua5.3-0 amd64 5.3.3-1.1ubuntu2 [116 kB]
 Get:2 https://us.archive.ubuntu.com/ubuntu focal/universe amd64 lua5.3 amd64 5.3.3-1.1ubuntu2 [110 kB]
 Get:3 https://us.archive.ubuntu.com/ubuntu focal/universe amd64 lsyncd amd64 2.2.3-1 [67.4 kB]
 Fetched 294 kB in 0s (1,146 kB/s)
 Selecting previously unselected package liblua5.3-0:amd64.
 (Reading database … 97037 files and directories currently installed.)
 Preparing to unpack …/liblua5.3-0_5.3.3-1.1ubuntu2_amd64.deb …
 Unpacking liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) …
 Selecting previously unselected package lua5.3.
 Preparing to unpack …/lua5.3_5.3.3-1.1ubuntu2_amd64.deb …
 Unpacking lua5.3 (5.3.3-1.1ubuntu2) …
 Selecting previously unselected package lsyncd.
 Preparing to unpack …/lsyncd_2.2.3-1_amd64.deb …
 Unpacking lsyncd (2.2.3-1) …
 Setting up lua5.3 (5.3.3-1.1ubuntu2) …
 update-alternatives: using /usr/bin/lua5.3 to provide /usr/bin/lua (lua-interpreter) in auto mode
 update-alternatives: using /usr/bin/luac5.3 to provide /usr/bin/luac (lua-compiler) in auto mode
 Setting up liblua5.3-0:amd64 (5.3.3-1.1ubuntu2) …
 Setting up lsyncd (2.2.3-1) …
 Processing triggers for systemd (245.4-4ubuntu3.3) …
 Processing triggers for man-db (2.9.1-1) …
 Processing triggers for libc-bin (2.31-0ubuntu9.1) …
 root@host3:~#   

第 3 步:验证安装

root@host3:~# lsyncd --version
 Version: 2.2.3
 root@host3:~#

配置 lsyncd

第 1 步:定义要同步的目录

在这个 example,我们将配置/home/user1/public_html/文件夹同步到/home/backup/。 您可以选择任何文件夹组合以满足您的特定需求。 接下来,我们将创建一个新目录,lsyncd 可以将我们的更改写入该目录。

root@host3:~# mkdir -p /source/to/copy 
root@host3:~# mkdir /dest/dir/

root@host3:~# mkdir /var/www/html/
root@host3:~# mkdir /backup/html/

步骤 2:创建配置文件和日志

现在,我们将创建一个新的 lsyncd 配置文件来存储我们的信息。 该文件将定义我们要同步的源目录和目标目录。

root@host3:~# vim /etc/lsyncd/lsyncd.conf.lua

这是我们要添加到文件中的信息,这些信息将定义我们的文件夹、日志信息和状态。

settings {
         logfile = "/var/log/lsyncd/lsyncd.log",
         statusFile = "/var/log/lsyncd/lsyncd.status",
    statusInterval = 30,
    nodaemon   = false
 }
 sync {
         default.rsync,
         source = "/var/www/html/",
         target = "/backup/html/"
 }

现在,保存并 close 完成编辑后使用 :wq 的文件。 接下来,我们将为配置创建日志目录。

root@host3:~# mkdir /var/log/lsyncd 
root@host3:~# touch /var/log/lsyncd/lsyncd.{log,status}

第 3 步:重新启动并启用 lsyncd

root@host3:~# systemctl start lsyncd
root@host3:~# systemctl enable lsyncd

接下来,我们使用以下命令检查 lsyncd 服务的状态。 您将看到类似于以下信息的输出。

root@host3:~# systemctl status lsyncd
 lsyncd.service - LSB: lsyncd daemon init script
 Loaded: loaded (/etc/init.d/lsyncd; generated)
 Active: active (exited) since Fri 2020-11-20 15:13:57 EST; 34min ago
   Docs: man:systemd-sysv-generator(8)
   Tasks: 0 (limit: 2178)
  Memory: 0B
  CGroup: /system.slice/lsyncd.service 
Nov 20 15:13:57 host3.g33k.fun systemd[1]: Starting LSB: lsyncd daemon init script…
Nov 20 15:13:57 host3.g33k.fun systemd[1]: Started LSB: lsyncd daemon init script.
root@host3:~# 

启用日志记录

现在,我们将验证我们的日志是否设置正确并产生输出。

root@host3:~# mkdir /var/log/lsyncd/
root@host3:~# touch /var/log/lsyncd/lsyncd.log

现在,如果将文件添加到我们的默认文件夹,它应该会自动同步到我们的备份文件夹。

测试

现在,让我们在 /var/www/html/ 文件夹中添加一个新文件。

touch /var/www/html/file101
root@host3:~# tail -f /var/log/lsyncd/lsyncd.log

Fri Nov 20 17:51:14 2020 Normal: --- Startup, daemonizing ---
 Fri Nov 20 17:51:14 2020 Normal: recursive startup rsync: /var/www/html/ -> /backup/html/

Fri Nov 20 17:51:14 2020 Normal: Startup of /var/www/html/ -> /backup/html/ finished.

Fri Nov 20 17:52:29 2020 Normal: Calling rsync with filter-list of new/modified files/dirs
/file101 <<< new file added and synced

结论

你有它! 一种使用 lsyncd 备份文件的快速简便的方法。 lsyncd 还可以远程同步文件。 唯一的区别是我们需要设置 SSHKeys 来登录远程系统,然后将以下行添加到我们的同步部分中

host = "123.456.789.0",

今天就开始吧!

我们以成为 Hosting™ 中最有帮助的人而自豪!

我们的支持团队由经验丰富的 Linux 技术人员和才华横溢的系统管理员组成,他们对多种网络托管技术有着深入的了解,尤其是本文中讨论的技术。

如果您对此信息有任何疑问,我们将随时为您解答与本文相关问题的任何询问,每天 24 小时、每周 7 天、每年 365 天。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私有父服务器, 托管 Cloud 服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话@800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。