您的位置:首页 > 文旅 > 美景 > 服装定制图片_江门网站免费制作_友谊平台_网页设计软件

服装定制图片_江门网站免费制作_友谊平台_网页设计软件

2025/4/16 16:07:28 来源:https://blog.csdn.net/weixin_42434700/article/details/147037589  浏览:    关键词:服装定制图片_江门网站免费制作_友谊平台_网页设计软件
服装定制图片_江门网站免费制作_友谊平台_网页设计软件

文章目录

  • 🌀使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步
  • 前言
  • 介绍
  • 架构图
  • 🧱系统环境
  • 🔧Rsync配置(两台都需安装)
    • 关闭SELinux(两台都需)
  • 📦配置目标端(client)为 Rsync 服务端
    • 创建用户和目录
    • 配置 /etc/rsyncd.conf
    • rsyncd.conf 配置文件讲解
    • 创建认证文件
    • 启动并设置开机自启
    • 在这里插入图片描述
  • 🚀配置源端(server)安装并使用 Lsyncd 实现实时同步
    • 安装 lsyncd
    • 创建用户、目录及认证文件
    • 测试 Rsync 是否能正常使用
      • 参数解释
      • 作用总结
  • ⚙️配置 Lsyncd 实现实时监听同步
    • 配置 /etc/lsyncd.conf
    • lsyncd.conf配置讲解
      • 全局配置
      • 同步设置
      • rsync 配置
    • 启动并设置 Lsyncd 自启动
  • 🧪测试同步效果
  • 📝总结
  • 📚推荐扩展


🌀使用 Rsync + Lsyncd 实现 CentOS 7 实时文件同步

在日常运维中,我们经常遇到需要将一台服务器上的数据实时同步到另一台服务器的场景,比如配置文件同步、数据热备、静态资源同步等。本文将基于以下环境,通过 Rsync + Lsyncd 来实现文件的实时同步。


前言

在分布式系统中,数据同步是一个重要的需求,尤其是当我们希望将两台服务器的数据保持一致时。rsynclsyncd 是两种常见的数据同步工具,它们能高效地处理文件同步和实时数据同步。本文将通过在两台 CentOS 7.9 服务器上配置 rsynclsyncd,展示如何进行数据同步的操作和配置。

介绍

  • rsync:是一款用于远程和本地文件同步的工具,支持增量传输,能有效减少网络带宽的使用。它通常用于备份和镜像操作。
  • lsyncd:是一个基于 rsync 的实时同步工具,它利用 inotify 机制监听文件变化,实时同步指定的目录。lsyncd 配合 rsync 使用,能够实现近乎实时的数据同步。

本文将介绍如何通过 rsync 配合 lsyncd 实现文件同步,并通过配置文件和命令展示如何设置。

架构图

以下是本次同步任务的架构图:

+---------------------+      rsync/lsyncd     +---------------------+
|                     |<--------------------->|                     |
|      Server         |                       |     Client          |
|  10.255.101.216     |                       |  10.255.101.217     |
|                     |                       |                     |
| - Data Directory    |                       | - Data Directory    |
| - Rsync + Lsyncd    |                       | - Rsync Daemon      |
|                     |                       |                     |
+---------------------+                       +---------------------+

通过这种架构,server 上的文件会通过 rsynclsyncd 实时同步到 client 上,确保两个节点的数据保持一致。


🧱系统环境

主机名IP地址系统版本备注
server10.255.101.216CentOS Linux release 7.9.2009 (Core)源服务器
client10.255.101.217CentOS Linux release 7.9.2009 (Core)目标服务器
  • CPU:2核
  • 内存:4G
  • 存储:50G
  • rsync:3.1.2
  • lsyncd:2.2.2
    在这里插入图片描述

🔧Rsync配置(两台都需安装)

yum -y install rsync

关闭SELinux(两台都需)

getenforce
# 如果输出不是 Disabled,则执行
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

在这里插入图片描述


📦配置目标端(client)为 Rsync 服务端

创建用户和目录

groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync # 组名在前,用户名在后
echo "test123456." | passwd --stdin rsync  # 设置密码
mkdir /data/
chown -R rsync:rsync /data/

在这里插入图片描述

配置 /etc/rsyncd.conf

uid = rsync
gid = rsync
port = 873
fake super = yes
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors = yes
read only = false
list = false
auth users = rsync
secrets file = /etc/rsync.password[client-10.255.101.217]
comment = "test"
path = /data/

在这里插入图片描述

rsyncd.conf 配置文件讲解

下面对 rsyncd.conf 配置文件中的各个参数进行详细讲解:

  • uidgid:这两个参数设置 rsync 守护进程运行时使用的用户和用户组。rsync 进程将以该用户身份进行操作,这有助于限制进程的权限,避免过高的安全风险。此配置确保 rsync 进程不会以 root 权限运行,从而提高安全性。
  • port:指定 rsync 服务监听的端口。默认情况下,rsync 使用 873 端口。可以根据需要修改端口号,但修改后需确保客户端连接时也指定相应的端口。
  • fake super:启用此选项后,rsync 会模拟 root 用户的权限,允许传输文件时保持文件的所有者和权限信息。这对于普通用户的权限不足情况下,允许同步时模拟一些 root 权限以便传输文件。
  • use chroot:此选项设置是否在 chroot 环境中运行 rsync 服务。设置为 no 可以避免使用 chroot 环境,从而让 rsync 可以访问系统的其他部分,而不局限于一个虚拟文件系统。设置为 yes 会把 rsync 进程限制在指定的目录路径中,增加安全性。
  • max connections:限制 rsync 守护进程可以同时处理的最大连接数。此配置项的目的是防止过多的连接导致系统资源被占用过多。
  • timeout:设置 rsync 连接的超时时间(单位:秒)。如果在超时时间内没有数据传输,rsync 会自动断开连接。
  • pid file:指定存储 rsync 守护进程 PID(进程 ID)的文件路径。这对于管理 rsync 服务非常有用,可以帮助查看进程是否正常运行,并进行相应的操作(如停止进程等)。
  • lock file:此选项指定 rsync 守护进程使用的锁文件。该文件防止多个 rsync 进程同时访问相同的资源,避免出现数据冲突或文件损坏。
  • log file:指定 rsync 守护进程日志文件的路径。所有的活动日志都会记录到这个文件中,可以用来检查同步操作的状态和排查问题。
  • ignore errors:启用此选项后,rsync 将忽略在传输过程中遇到的错误,而不会立即停止同步过程。通常用在需要保证同步不间断的场景,但请注意,忽略错误可能会导致一些文件传输失败而未被及时发现。
  • read only:设置为 false 表示目标目录是可写的,允许进行数据同步时的修改。如果设置为 true,则目标目录将变为只读,rsync 只会将文件从源同步到目标,而不会修改目标文件。
  • list:设置为 false 时,客户端无法列出同步模块的内容。通过禁用列表功能,可以提高安全性,避免泄露不应公开的目录信息。
  • auth users:指定允许进行身份验证的用户列表。在此配置中,rsync 只允许名为 rsync 的用户连接和同步数据。客户端连接时需要提供有效的用户名和密码。
  • secrets file:指定存储 rsync 用户密码的文件路径。该文件存储了与 auth users 配对的用户名和密码,用于身份验证。密码文件通常有严格的权限控制,确保只有 rsync 进程可以读取。
  • [client-10.255.101.217]:这是一个同步模块的定义。在此模块下,rsync 会同步指定路径的文件。模块名称通常与目标机器的 IP 地址、主机名或其他标识符相关,以便在多个同步任务中进行区分。
  • comment:为该同步模块添加注释,用于描述该模块的作用或用途。在此配置中,comment 被设置为 "test",可以根据实际需求更改。
  • path:指定 rsync 服务需要同步的目录路径。在此配置中,rsync 将同步 client 上的 /data/ 目录。

创建认证文件

echo "rsync:test123456." > /etc/rsync.password
chmod 600 /etc/rsync.password

在这里插入图片描述

启动并设置开机自启

systemctl start rsyncd
systemctl enable rsyncd

验证运行状态:

systemctl status rsyncd

在这里插入图片描述

🚀配置源端(server)安装并使用 Lsyncd 实现实时同步

安装 lsyncd

yum install -y epel-release
yum install -y lsyncd

创建用户、目录及认证文件

groupadd rsync
useradd -s /sbin/nologin -M -g rsync rsync # 组名在前,用户名在后
echo "test123456." | passwd --stdin rsync  # 设置密码
mkdir /data
touch /data/file{1..10}.txt  # 创建模拟数据# 创建 rsync 密码文件
echo "test123456." > /etc/rsyncd.pwd
chmod 600 /etc/rsyncd.pwd

在这里插入图片描述
在这里插入图片描述

测试 Rsync 是否能正常使用

rsync -avz --password-file=/etc/rsyncd.pwd /data/ rsync@10.255.101.217::client-10.255.101.217

在这里插入图片描述
目标端 /data 目录应成功收到同步的文件。
在这里插入图片描述

参数解释

  • rsync:调用 rsync 工具进行文件同步。

  • -a归档模式(archive mode)。这个选项会递归地同步文件,并保留文件的权限、符号链接、时间戳等信息。它等同于 -rlptgoD,即:

    • -r:递归同步目录。
    • -l:复制符号链接为符号链接。
    • -p:保留文件的权限信息。
    • -t:保留文件的修改时间。
    • -g:保留文件的组信息。
    • -o:保留文件的所有者信息。
    • -D:保留设备信息和特殊文件。
  • -v详细模式(verbose)。使 rsync 输出详细的同步过程,包括每个文件的同步状态。此选项会显示文件传输的进度和文件列表,便于跟踪同步情况。

  • -z压缩传输。在传输文件时启用压缩,以减少网络带宽的使用,尤其适用于较大的文件。

  • --password-file=/etc/rsyncd.pwd:指定存放密码的文件路径。rsync 会从这个文件中读取与指定的 rsync 用户(本例中是 rsync)相关的密码,而不是通过交互式的方式输入密码。该文件的权限应设置为仅 rsync 用户可读,以保障安全性。

  • /data/:指定本地源目录路径。这个路径表示需要同步的本地目录。rsync 会将这个目录中的文件同步到远程主机的指定目录。

  • rsync@10.255.101.217::client-10.255.101.217

    • rsync:指定用于连接远程 rsync 服务的用户。
    • 10.255.101.217:远程 rsync 服务的 IP 地址。
    • ::client-10.255.101.217:指定 rsync 服务上的模块名。模块名是在 rsyncd.conf 配置文件中定义的,这里指向 client-10.255.101.217 模块,表示同步目标为 rsync 服务端的该模块所对应的目录。

作用总结

该命令会将本地 /data/ 目录中的文件递归同步到远程 rsync 服务器上,目标路径由 rsync 服务器上的 client-10.255.101.217 模块决定。同步过程中会保留文件的权限、时间戳等元数据,且传输数据时会进行压缩以节省带宽,同时通过指定的密码文件实现自动认证。


⚙️配置 Lsyncd 实现实时监听同步

配置 /etc/lsyncd.conf

settings {logfile = "/var/log/lsyncd/lsyncd.log",statusFile = "/var/log/lsyncd/lsyncd.status",inotifyMode = "CloseWrite or Modify",maxProcesses = 8,insist = true,
}sync {default.rsync,source = "/data/",target = "rsync@10.255.101.217::client-10.255.101.217",delete = false,exclude = { ".*", "logs/*.log" },delay = 1,init = false,rsync = {binary = "/usr/bin/rsync",archive = true,compress = true,verbose = true,password_file = "/etc/rsyncd.pwd",_extra = {"--bwlimit=200"}}
}

在这里插入图片描述

lsyncd.conf配置讲解

全局配置

  • logfile = "/var/log/lsyncd/lsyncd.log":指定日志文件的保存路径。所有同步操作的日志信息将写入此文件,便于后续查看和调试。

  • statusFile = "/var/log/lsyncd/lsyncd.status":指定状态文件的路径,记录当前同步的状态信息。

  • inotifyMode = "CloseWrite or Modify"inotify 监听模式。lsyncd 使用 inotify 监听文件系统事件来触发文件同步。这个配置指示 lsyncd 监听文件的修改操作(Modify)或者文件关闭写入操作(CloseWrite)。当文件发生这些事件时,lsyncd 会启动同步任务。

  • maxProcesses = 8:最大同步进程数。lsyncd 会使用多进程并行执行同步操作,这个选项限制了最大进程数为 8。

  • insist = true:该选项指定如果进程出现异常终止,是否继续运行。true 表示 lsyncd 会尝试在出现异常后继续运行。


同步设置

  • default.rsync:表示同步方式是 rsync,即使用 rsync 协议进行数据传输。

  • source = "/data/":本地同步的源目录,指向 /data/ 目录。

  • target = "rsync@10.255.101.217::client-10.255.101.217":指定远程目标路径,使用 rsync 协议通过 rsync 用户连接到远程主机 10.255.101.217,并同步到 client-10.255.101.217 模块。

  • delete = false:指定是否删除目标目录中不在源目录中的文件。false 表示不同步删除操作,即目标目录中未在源目录的文件不会被删除。

  • exclude = { ".*", "logs/*.log" }:排除的文件和目录。这个选项指定了不需要同步的文件或目录:

    • "*.*":排除所有以 . 开头的隐藏文件或目录。
    • "logs/*.log":排除 logs 目录中的所有 .log 文件。
  • delay = 1:设置每次文件同步的延迟时间为 1 秒。这样可以避免文件频繁变化时导致的过度同步操作。

  • init = false:指定是否在 lsyncd 启动时立即执行同步。如果设置为 false,则 lsyncd 启动时不会自动同步数据,等待监控到文件变化后才会执行同步。

rsync 配置

这些选项用于配置 rsync 的具体参数:

  • binary = "/usr/bin/rsync":指定 rsync 可执行文件的路径,通常不需要修改,除非 rsync 安装在非标准路径。

  • archive = true:启用 rsync 的归档模式,确保文件的符号链接、权限、时间戳等信息都能被保留。

  • compress = true:启用压缩,在同步时对数据进行压缩,从而减少传输的数据量,特别适用于网络带宽有限的情况。

  • verbose = true:启用详细模式,输出详细的同步过程,帮助调试和查看同步的文件。

  • password_file = "/etc/rsyncd.pwd":指定存储 rsync 密码的文件路径,这样可以避免每次同步时都要手动输入密码。

  • _extra = {"--bwlimit=200"}:添加额外的 rsync 参数,这里设置了带宽限制为 200KB/s,用于限制同步过程中的带宽使用。

启动并设置 Lsyncd 自启动

systemctl start lsyncd
systemctl enable lsyncd

在这里插入图片描述


🧪测试同步效果

在 server 添加新文件:

touch /data/file{11..20}.txt

在 client 上查看是否实时同步:

ls -l /data/

在这里插入图片描述

✅ 你将看到 file11.txt ~ file20.txt 自动同步到目标机的 /data 目录。


📝总结

通过本方案:

  • ✅ 利用了 rsync 进行安全、高效的数据传输;
  • ✅ 使用 Lsyncd 实现了源端目录的实时监听;
  • ✅ 达到数据实时同步的效果,适合小文件频繁变更的场景;
  • ✅ 配置灵活,支持压缩、排除规则、带宽限制等。

📚推荐扩展

  • 日志查看:tail -f /var/log/lsyncd/lsyncd.log
  • 支持双向同步请参考:lsyncd + inotifywait 或使用 Unison
  • 实时同步大量小文件建议优化 inotify 参数或调大 fs.inotify.max_user_watches

如果你也有类似需求,不妨动手试试吧!有什么问题欢迎留言讨论~


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com