企业建站新闻内容,门户网站开发平台,制作相片的免费软件,建站兔软件常见问题使用lsyncd本地目录实时备份lsyncd简介安装lsyncdlsyncd配置文件设置ssh免密lsyncd同步配置lsyncd.conf配置选项说明settingssyncrsync启动lsyncdlsyncd.conf其他模式示例lsyncd简介
Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具#xff01;实现的功能是#xff0c;…使用lsyncd本地目录实时备份lsyncd简介安装lsyncdlsyncd配置文件设置ssh免密lsyncd同步配置lsyncd.conf配置选项说明settingssyncrsync启动lsyncdlsyncd.conf其他模式示例lsyncd简介Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具实现的功能是本地目录source实时同步到另一个目录target而在source下有大量的文件并且有部分目录和临时文件不需要同步。原则上来讲数据从哪来Lysncd就部署在哪角色数据流向作用相互SSH免密hostname软件包数据同步路径源服务器 (Push端)数据的起点监控与推送yesfile_serverrsync lsyncd/tmp/sersync_result/目标服务器 (Pull端)数据的终点接收和存储yesecsrsync/tmp/sersync_result/安装lsyncd安装lsyncd极为简单一条yum命令即可# 因为这个rpm包在epel源中所以需要先安装epel源yuminstallepel-release -y# 安装lsyncdyuminstalllsyncd -ylsyncd配置文件参考博文https://www.cnblogs.com/lvzhenjiang/p/14198841.htmlhttps://www.cnblogs.com/lvzhenjiang/p/14411173.htmlvim/etc/lsyncd.conf设置ssh免密ssh-copy-id${源机器}ssh-copy-id${目的地机器}lsyncd同步配置-- 配置全局设置settings{-- 指定日志文件路径用于记录同步过程中的日志信息logfile/var/log/lsyncd/lsyncd.log,-- 指定状态文件路径用于记录lsyncd的运行状态statusFile/var/log/lsyncd/lsyncd.status,-- 设置inotify监控模式为CloseWrite即文件关闭写入时触发同步inotifyModeCloseWrite,-- 设置最大并发进程数为7maxProcesses7,-- 注释掉的选项设置为true时以非守护进程模式运行-- nodaemon true,}-- 定义同步任务配置sync{-- 使用默认的rsyncssh同步模式通过SSH隧道使用rsyncdefault.rsyncssh,-- 源目录需要同步的本地目录路径source/tmp/src,-- 目的主机远程服务器IP地址host192.168.2.16,-- 远程目录在目标主机上的同步目录路径targetdir/root/remote,-- 启用删除功能当源目录删除文件时目标目录也会删除对应文件deletetrue,-- 设置同步延迟为0秒即实时同步delay0,-- 注释掉的选项指定排除规则文件路径-- excludeFrom /etc/rsyncd.d/rsync_exclude.lst,-- rsync相关配置参数rsync{-- 指定rsync可执行文件路径binary/usr/bin/rsync,-- 启用归档模式保持文件属性、时间戳等信息archivetrue,-- 启用压缩传输减少网络传输数据量compresstrue,-- 启用详细输出模式verbosetrue,-- 保持文件所有者信息ownertrue,-- 保持文件权限信息permstrue,-- rsync额外参数限制带宽为2000KB/s-- _extra { --bwlimit2000 },},-- SSH相关配置参数ssh{-- 设置SSH连接端口为22port22}}到这启动 lsycnd 就可以完成实时同步了默认的许多参数可以满足绝大部分需求非常简单。lsyncd.conf配置选项说明settings里面是全局设置--开头表示注释下面是几个常用选项说明配置项说明默认值 / 补充说明logfile定义 lsyncd 的日志文件路径无需显式指定statusFile定义 lsyncd 的状态文件路径无需显式指定nodaemon是否以非守护进程模式运行true即默认不启用守护模式statusInterval将 lsyncd 状态写入 statusFile 的时间间隔秒10 秒inotifyMode指定 inotify 监控的文件事件类型CloseWrite可选值Modify、CloseWrite or ModifymaxProcesses同时运行的最大 rsync 同步进程数无固定默认值通常由用户根据系统资源设定maxDelays累计监控到多少个事件后立即触发同步即使未达到 delay 设定的时间无固定默认值常与 delay 配合使用sync定义一个或多个同步任务可配置多个sync块。里面是定义同步参数可以继续使用maxDelays来重写settings的全局变量。一般第一个参数指定lsyncd以什么模式运行rsync、rsyncssh、direct三种模式同步模式sync kind说明适用场景认证/依赖要求default.rsyncssh使用rsync通过 SSH 协议同步到远程主机目录跨主机安全同步常用在异地备份、部署等必须配置 SSH 免密登录如密钥认证default.rsync使用rsync命令进行同步支持本地目录同步也可通过 SSH 或 rsync daemon 实现远程同步本地同步或需要兼容远程 rsyncSSH/daemon的场景若远程使用 SSH需配置免密登录或密钥default.direct使用原生命令如cp、rm、mv等直接操作文件实现本地差异同步仅限本地目录间快速同步对性能要求高且无需网络传输无纯本地操作配置项说明示例 / 选项说明default.rsyncdefault.directdefault.rsyncssh指定同步模式 •rsync本地或远程SSH/rsyncd •direct本地cp/rm•rsyncssh强制通过 SSH 远程同步三选一source被监控的源目录必须为绝对路径/data/www/target同步目标路径 • 本地/backup/• 远程 rsyncdrsyncuser192.168.99.237::backuprsyncuser远程用户192.168.99.237备机 IP::backuprsync 模块名注意模块名和服务端配置一致init是否在启动时全量同步一次源目录true默认false表示仅同步启动后变更的文件delay事件触发后延迟多少秒再执行同步防频繁触发通常设为1秒excludeFrom排除不需要同步的文件支持通配符或正则exclude { *.swp, *.log }delete控制是否删除目标端源端已不存在的文件-true始终同步删除默认 -false从不删除 -startup仅启动时删除 -running仅运行时删除启动时不删excludeFrom排除选项后面指定排除的列表文件如excludeFrom /etc/lsyncd.exclude如果是简单的排除可以使用exclude LIST。这里的排除规则写法与原生rsync有点不同更为简单监控路径里的任何部分匹配到一个文本都会被排除例如/bin/foo/bar可以匹配规则foo如果规则以斜线/开头则从头开始要匹配全部如果规则以/结尾则要匹配监控路径的末尾?匹配任何字符但不包括/*匹配0或多个字符但不包括/**匹配0或多个字符可以是/rsync提示一下delete和exclude本来都是rsync的选项上面是配置在sync中的我想这样做的原因是为了减少rsync的开销bwlimit限速单位kb/s与rsync相同这么重要的选项在文档里竟然没有标出compress压缩传输默认为true。在带宽与cpu负载之间权衡本地目录同步可以考虑把它设为falseperms默认保留文件权限其它rsync的选项其它还有rsyncssh模式独有的配置项如host、targetdir、rsync_path、password_file见后文示例。rsyncOps{-avz,--delete}这样的写法在2.1.*版本已经不支持。lsyncd.conf可以有多个sync各自的source各自的target各自的模式互不影响。启动lsyncd使用命令加载配置文件启动守护进程自动同步目录操作。# 自行查看source target是否同步成功systemctlenable--now lsyncd# 确保状态是active (running)systemctl status lsyncd -llsyncd.conf其他模式示例以下配置本人都已经过验证可行必须根据实际需要裁剪配置settings{logfile/var/log/lsyncd/lsyncd.log, statusFile/var/log/lsyncd/lsyncd.status, inotifyModeCloseWrite, maxProcesses8,}# I. 本地目录同步directcp/rm/mv 适用500万文件变动不大sync{default.direct,source/tmp/src, target/tmp/dest, delay1maxProcesses1}# II. 本地目录同步rsync模式rsyncsync{default.rsync,source/tmp/src, target/tmp/dest1, excludeFrom/etc/rsyncd.d/rsync_exclude.lst,rsync{binary/usr/bin/rsync, archivetrue, compresstrue, bwlimit2000}}# III. 远程目录同步rsync模式 rsyncd daemonsync{default.rsync,source/tmp/src, targetsyncuser10.4.7.10::module1,deleterunning, exclude{.*,.tmp}, delay30, initfalse,rsync{binary/usr/bin/rsync, archivetrue, compresstrue, verbosetrue, password_file/etc/rsyncd.d/rsync.pwd, _extra{--bwlimit200}}}# IV. 远程目录同步rsync模式 ssh shellsync{default.rsync,source/tmp/src, target10.4.7.10:/tmp/dest,# target root10.4.7.10:/remote/dest,# 上面target注意如果是普通用户必须拥有写权限maxDelays5, delay30,# init true,rsync{binary/usr/bin/rsync, archivetrue, compresstrue, bwlimit2000# rsh /usr/bin/ssh -p 22 -o StrictHostKeyCheckingno# 如果要指定其它端口请用上面的rsh}}# V. 远程目录同步rsync模式 rsyncssh效果与上面相同sync{default.rsyncssh,source/tmp/src2,host10.4.7.10, targetdir/remote/dir, excludeFrom/etc/rsyncd.d/rsync_exclude.lst,# maxDelays 5,delay0,# init false,rsync{binary/usr/bin/rsync, archivetrue, compresstrue, verbosetrue, _extra{--bwlimit2000},},ssh{port1234}}