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 联系我们, 聊天 或支持票以帮助您完成此过程。