[linux] lsyncd 文件增量同步利器 用法

lsyncd 详细介绍 lsyncd 详细介绍 阅读详情

[linux] lsyncd 文件增量同步利器 用法

简介

自从有一次不小心把home目录删没了,还有一次调整分区大小不小心把home给格没了,我就长心眼了。一定要数据备份。

然后统计了一下,我的个龟龟,30w个文件我拿命备份啊,文件倒是不到(迁移了一部分在移动硬盘里),但是qq聊天记录那些乱七八糟的表情包啊小图片啊,光这一部分就有8w个文件,淦。自然就想到了增量备份。

在这里插入图片描述

我比较懒就不发引用了,增量同步大致就有点像git仓库,原理上是会根据文件差异来传输文件,而不是一股脑把所有文件都拷过去(当然它肯定没法像git一样回溯)

安装、配置与使用

原理

其实lsyncd[3]它使用的工具是rsync+inotify。rsync是linux自带的,几乎所有发行版应该都有这个工具,你们也可以尝试一下,直接rsync -av /home/core /tmp/xxx就好了。第一次拷因为很大所以慢,但是在做出一些修改之后,第二次使用同样的命令就非常快了,只会拷贝修改的文件,具体其它骚操作可以看这里Linux文件同步工具-rsync[2]或者直接man一下手册。

关于lsync的原理下面直接引用大佬的发言[1],本文主要参考的就是这篇了

Lysncd 实际上是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,然后通过rsync去差异同步,达到实时的效果。我认为它最令人称道的特性是,完美解决了 inotify + rsync海量文件同步带来的文件频繁发送文件列表的问题 —— 通过时间延迟或累计触发事件次数实现。另外,它的配置方式很简单,lua本身就是一种配置语言,可读性非常强。lsyncd也有多种工作模式可以选择,本地目录cp,本地目录rsync,远程目录rsyncssh。

安装

作为arch系,aur里怎么可能没有包,一顿yay -Sy lsyncd搞定。(yaourt已经过时啦赶紧yay用起来)

配置

这个包最骚的是它丫竟然没有给默认配置,我:???

还好文档还是有的,感谢大佬[1]做了大部分翻译工作,欢迎直接参考,这边只说几个大佬网站上没讲的部分。

安好了之后并没有任何指导,但你知道它是个daemon,所以问题不大,vim /usr/lib/systemd/system/lsyncd.service,就能看到它的daemon的配置文件

在这里插入图片描述

(这里面注释的是我自己写后来删掉了,其余的应该和刚装好没什么区别。)

红线备注出来的部分便是配置文件了,当然你打开这个目录的时候会发现它并没有目录,也没有给默认配置,这就需要配置文件了,具体的规则在大佬的博客[1]里写得很清楚了,他是把原本的官方文档[4]翻译了一波。

这里我对着我自己的配置简单说一下要注意的地方

settings {
    nodaemon=false,
    maxProcesses=4
}

sync {
    default.rsync,
    source="/home/core",
    target="/run/media/core/Home-Bak/core",
    delay=4000,
    delete="startup",
    excludeFrom="/home/core/.config/lsyncd.exclude",
    rsync={
        binary="/usr/bin/rsync",
        archive=true,
        compress=false,
        verbose=false
    }
}

sync {
    default.rsync,
    source="/run/media/core/Data-2.5",
    target="/run/media/core/Data-3.5/Data-2.5",
    delay=7000,
    delete="startup",
    rsync={
        binary="/usr/bin/rsync",
        archive=true,
        compress=false,
        verbose=false
    }
}
  1. 整体设置里nodaemon要设为false,这样你才是后台运行
  2. source是源目录,target是目标目录,需要注意的是如果你的目录后面加了/,那么它只会拷这个目录下的所有文件(而不会把这个目录也拷过去)。比如这里是把/home/core整个目录拷到/home-Bak/core目录,如果我source写的是/home/core/,那么就会把core目录下的所有文件(不包括core目录)拷过去
  3. 文档里介绍了rsync、ssh和direct三种模式,虽然说direct快,但还是推荐使用rsync,因为后者能把文件、文件权限、属性等一大堆东西都拷过去(前提是目标目录也得是同样的分区格式,比如我是ext4),如果拷到ntfs那就没辙了,都是777。
  4. delete=startup是指同步的时候只做新增和覆盖操作,不会删除目标目录里的内容,只会在开机的时候执行完全同步(白话文:source里你删了一个文件之后,同步的时候不会把target里对应的文件删掉,这个操作只会在开机的时候执行)
  5. delay是延迟多长时间同步,默认是15s,我感觉太短,设置成了3000s和7000s

使用

把配置文件写好了之后sudo systemctl start lsyncd.service就能使用啦。

加入开机启动列表:sudo systemctl enable lsyncd.service

常见问题与解决

开机自启动但是我的可移动设备没有挂载该怎么办?

对于kde平台,在系统设置-开机和关机-后台服务里先启用自动挂载服务

在这里插入图片描述

然后在系统设置-可移动设备里有一个自动挂载配置,会有一个挂载选项,根据需求选择登录时挂载/连接时挂载即可。

在这里插入图片描述

其它桌面平台应该都有类似的设置,靠你们自己找咯,反正我第一个接触的桌面平台就是manjaro-kde嘿嘿嘿

但是这里还没有结束,因为你会发现设备的自动挂载是在sddm那个界面输入了密码之后才进行的,而使用sudo systemctl enable lsyncd.service会让它在这之前就启动服务。

所以这里需要disable掉lsyncd这个服务:sudo systemctl disable lsyncd.service,然后让每次输入完密码之后start服务。

具体做法是,系统设置-开机和关机-自启动有个添加脚本,事先写好一个可执行的脚本就好啦,然后添加进来就好啦。(我后来把ss和aria2cd都放这里面了,感觉登录之后再启动的逻辑更好一点(毕竟属于用户自定义的启动进程嘛)

在这里插入图片描述

最后一句,如果你的sudo需要输入密码的话这个部分就不好使了,自己visudo让sudo命令执行特定指令不需要密码吧。

如果我的可移动设备没有连接会怎么办?

试试就知道了,这个daemon的状态会fail,重新连接设备并且挂载之后sudo systemctl restart lsyncd.service即可。

对于笔记本来说这个服务开着很费电?

对于笔记本来说,其实开机自启动并不够友善,而且在使用电池或者没有备份的设备(移动硬盘)没有连接到电脑时很尴尬。前者会增加耗电量,降低续航,后者则会导致服务会fail。这里还是以kde plasma平台为例讲一下我的做法。

其实原理很简单,写好特定的脚本,在交流电和电池切换的时候触发执行即可。

首先kde plasma桌面在系统设置-开机和关机-自动启动有一个开机自启动管理,要做的事情很简单

  1. 写一个脚本,用来打开这个服务(像我前面写的那样)

  2. 再写一个脚本,用来关闭这个服务(像我前面写的那样)

  3. 找到配置电源设置,在交流供电和电池供电的运行脚本这里执行我们特定的脚本(打开和关闭服务),如下图

    在这里插入图片描述

参考资料

[1] lsyncd实时同步搭建指南——取代rsync+inotify

[2] Linux文件同步工具-rsync

[3] lsyncd github

[4] 官方配置文档

lsyncd 实时同步搭建指南 lsyncd的功能不仅仅是同步,官方手册 Lsyncd 2.1.x ‖ Layer 2 Config ‖ Advanced onAction 高级功能提到,还可以监控某个目录下的文件,根据触发的事件自己定义要执行的命令,example是监控某个某个目录,只要是有jpg、gif、png格式的文件参数,就把它们转成pdf,然后同步到另一个目录。(提示一下,delete和exclude本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销) 阅读详情

相关推荐

Linux文件同步利器rsync:原理、参数与实战技巧

文件同步是数据备份与分布式系统的基础需求,其核心在于高效识别差异并最小化传输量。rsync通过校验和比对实现增量同步,采用滚动校验算法仅传输变化部分,相比全量复制可节省70%以上带宽。该工具特别适合跨机房备份、CDN内容分发等场景,支持断点续传、压缩传输等企业级功能。热词分析显示,生产环境中常结合inotify实现实时同步,并通过--bwlimit参数避免网络拥塞。典型应用包括MySQL日志备份(需排除临时文件)、海量小文件同步优化(禁用压缩提升性能)等场景,是Linux系统管理员必备的自动化运维工具之一。

weixin_34327223的博客 467

lsyncd-实时同步(镜像)守护程序

E-mail: 1226032602@qq.com 官方文档 https://axkibe.github.io/lsyncd/ https://github.com/axkibe/lsyncd 简介 Lsyncd使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改。Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统。默认同步方法是rs...

wuxingge的博客 8448

从命令行到编程:跨主机数据传输的实战指南与性能优化

在分布式系统和网络编程中,数据传输是基础且核心的技术环节。其原理涉及从物理层到应用层的多层协议栈协作,旨在解决网络不可靠性带来的挑战,确保数据的正确、完整与及时送达。这一过程的技术价值在于为上层应用提供了稳定、高效的通信基础,是构建物联网、云计算、微服务等现代架构的基石。在实际应用场景中,根据数据类型、网络环境与可靠性要求的不同,工程师需要灵活选用工具与协议。例如,通过SSH家族命令(如scp、rsync)可快速安全地传输文件,而TCP Socket编程则为自定义双向通信提供了底层支持。本文聚焦于数据传输的

weixin_30781107的博客 363

nfs高可用部署(lsyncd两主机双向同步)

​ rsync(remote synchronize)是 Liunx/Unix 下的一个远程数据同步工具,它可通过 LAN/WAN 快速同步多台主机间的文件和目录。rsync 通过比较两边文件是否相同,不相同才进行更新。​ 但是rsync无法知道“什么时候同步”,因为rsync只有执行同步命令的时候,才会去扫描文件判断哪些文件被修改了,只能建立一个定时任务,每隔一定的时间(比如5分钟,10分钟等等)去执行一次同步,这样虽然能同步,但却“不实时”。

liuhm的博客 3042

DLPFC.h5ad格式数据简便获取方式+STAGATE论文复现问题

简便获取DLPFC.h5ad格式的数据方式

apple_74057836的博客 2255

Origin作图——等高线图

最近做一个测试数据图,开始想通过用热图来展示,结果发现热图有很多的小方块,很难呈现出最好的效果,因为数据是有一层一层的递进效果,因此经过尝试后,发现等高线图是个好选择。 热图展示效果如下:其中有很多的小方块不适合,热图制图方法前面有记录。 下面展示等高线图制作方法。首先是导入数据,可以从excal导入,也可以直接复制进去。等方法。 选中要展示的数据,绘图----等高线图 选中箭头,确定。 双击图像,点击线,我们需要把线隐藏了. 双击图像,我们需要调色板,根据自己的选择,一般用调色板的颜色。

qq_42278015的博客 1万+

sersync/lsyncd实时同步

第一章 sersync/lsync实时同步 1.1 实时同步服务原理/概念 1)需要部署好rsync守护进程服务,实现数据传输 2)需要部署好inotify服务,实现目录中数据变化监控 3)将rsync服务和inotify服务建立联系,将变化的数据进行实时备份传输 1.2 inotify介绍 ݦ Inotify是一种强大的,细粒度的,异步的文件系统事件监视机制,Linux2.6.13起加...

weixin_30520015的博客 527

MATLAB实战:5步搞定GNSS单点定位解算(附完整代码)

本文提供了一份基于MATLAB的GNSS单点定位实战指南。通过5个核心步骤,详细讲解了如何从卫星坐标和伪距观测值出发,利用最小二乘迭代算法,构建并实现一个完整的单点定位解算器。文章附有完整代码,并涵盖精度评估与结果分析,适合GNSS初学者和MATLAB用户快速上手实践。

a2b3c4d5e的博客 249

lsyncd:实时文件同步利器

是一个轻量级且高效的数据同步工具,它允许你在本地和远程系统之间实时地、单向地同步文件或目录。这个项目由Axkibe开发并维护,其目标是提供一种简单的方式,让你的数据始终保持最新。 ## 技术分析 lsyncd 基于 Linux 的 inotify 功能,能够监听文件系统的改变事件。一旦检测到文件或目录的变化,它会立即通过 rsync 或者其它可选的同步协议将这些变更同步至远程系统。这一设计使得...

gitblog_00070的博客 612

文本→图像→视频:AIGC跨模态转换全流程解析

本文旨在系统性地解析AIGC领域中跨模态内容生成的技术原理和实现方法,特别聚焦于从文本到图像再到视频的完整转换流程。跨模态表示学习的基本原理文本到图像生成的核心技术图像到视频转换的关键算法端到端跨模态生成系统的构建方法实际应用场景和性能优化策略背景介绍:建立基本概念和知识框架核心概念:解析跨模态转换的关键技术和原理算法细节:深入讲解文本到图像、图像到视频的核心算法数学模型:提供必要的数学基础和公式推导项目实战:通过完整案例展示实现过程应用场景:探讨技术的实际应用可能性。

AI天才研究院 1352

Xftp卸载报错1628终极解决指南:深入解析InstallShield残留问题

本文深入解析了Xftp卸载时遇到的1628错误,其根源在于InstallShield安装引擎的残留问题。文章提供了从手动清理注册表项到彻底删除隐藏安装备份文件夹的完整解决方案,并给出了防患于未然的实用建议,帮助用户彻底解决这一经典安装报错。

weixin_29276847的博客 336

Linux 文件实时备份 rsync+lsyncd

rsync+lsyncd linux文件实时备份,有具体示例

ziqibit的博客 4283

得物(毒)App潮鞋价格波动监控系统实战:从爬虫开发到数据可视化完整指南

本文将带领您从零开始构建一套完整的得物潮鞋价格监控系统,涵盖爬虫开发、数据存储、价格波动分析和可视化展示等全流程技术。我们将使用最新的Python技术栈,包括异步爬虫框架、智能代理池、反爬虫绕过技巧,以及基于机器学习的时间序列预测模型。无论您是想要追踪特定鞋款价格的潮流爱好者,还是希望构建商业级监控系统的开发者,这篇文章都将为您提供切实可行的解决方案。

2201_76125261的博客 2504

lsyncd实时同步搭建指南——取代rsync+inotify

1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使...

weixin_33895604的博客 1201

UNet改进(12):融合小波变换与注意力机制的图像分割新方法

本文提出了一种改进的WaveletAttentionUNet架构,通过结合小波变换和注意力机制来增强传统UNet的多尺度特征提取能力。该网络使用分组卷积模拟小波分解,将输入通道扩展为4个子带(LL、LH、HL、HH),并通过通道注意力机制自适应加权各子带特征。网络保留了UNet的编码器-解码器结构,在关键位置集成了WaveletAttention模块。实验证明该方法在医学图像分割等任务中能更好地保持边缘细节和复杂纹理特征,同时保持计算效率。

2501_91516851的博客 758

【八股】JUC并发编程篇

👉抽象队列同步器,就是一种锁,内部维护的是一个先进先出的双向队列,队列中存储的是排队的线程,用state来标识是否有线程获得锁【0是无锁状态】👉流程:当一个线程拿到锁后会修改state = 1,这时如果有其他线程访问则会进入队列进行排序,直到state变成0后,队头线程才会拿到锁。在对state进行修改时,用的是CAS操作,所以可以保证原子性。👉它可以实现公平锁或非公平锁【默认】,上述是一个公平锁。如果新线程和队头线程抢锁资源就是非公平锁。

qq_44768318的博客 551

Linux系统的Lsync服务

Lsyncd是一个强大的工具,适用于需要实时文件同步的场景,如从安全区域同步数据到不太安全的区域。它特别适合于系统管理员使用,可以有效地简化文件同步任务。

Governing的博客 1490

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lsync实时同步搭建步骤

lsync实时同步搭建步骤

m0_49562857的博客 793

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

机房冷风吹-lsync实现目录实时同步

lsync实现文件夹同步

losersnake的博客 1387

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lsyncd搭建和使用(含rsync配置)

官方文档 https://axkibe.github.io/lsyncd/ https://github.com/axkibe/lsyncd lsyncd简介 Lsyncd使用lua语言对inotify和rsync进行封装,使用文件系统事件接口(inotify或fsevents)来监视对本地文件和目录的更改,Lsyncd将这些事件整理几秒钟,然后生成一个或多个进程以将更改同步到远程文件系统,默认同步方法是rsync。是一种轻量级的实时镜像解决方案,不需要新的文件系统或块设备,Lysncd不会妨碍本地文件系统

XNRS_25的博客 3858

lsyncd文件实时同步

lsyncd文件实时同步

技术引领业务创新 8156

Lsyncd文件同步终极指南:从入门到精通配置技巧

Lsyncd(Live Syncing Daemon)是一个轻量级的实时文件同步工具,能够监控本地目录的变化并自动同步到远程目标。作为开源的文件同步解决方案,Lsyncd特别适合需要将数据从安全区域同步到不太安全区域的场景。🚀 ## 为什么选择Lsyncd进行文件同步? Lsyncd的核心优势在于其轻量级和实时性。它通过inotify或fsevents监控文件系统事件,聚合几秒钟内的变化后,

gitblog_00806的博客 721

Lsyncd:轻量级实时同步守护进程,打造你的数据镜像高速路

--- 在当今这个数据流动频繁的时代,保持关键目录的实时同步变得至关重要。本文将为你揭开Lsyncd的神秘面纱,一个聪明且灵活的解决方案,用于轻巧地实现本地目录树到远程的实时镜像。对于那些追求数据即时性与安全性的开发者和系统管理员来说,Lsyncd无疑是一把利器。 ## 项目介绍 Lsyncd(Live Syncing Daemon)监控着本地目录树的变化——通过Linux下的inotify...

gitblog_00691的博客 728

lsyncd 配合 rsync 实时差异同步节点文件

文章目录说明书部署客户端安装 rsync 服务编写配置文件创建 rsync 用户创建目录并赋权创建认证用户和密码文件启动 rsync查看 rsync 是否启动成功部署服务端安装 rsync 服务创建 rsync 用户创建目录并赋权创建认证用户和密码文件测试 rsync 文件同步客户端查看文件安装 lsyncd 服务编写配置文件启动 lsyncd 服务测试 lsyncd 功能 说明书 rsync rsync 是一个开源的实用程序,可提供快速增量文件传输 rsync 官网 和 sync 命令是完全两个玩意,

以梦为马|越骑越傻 2378

rsync和lsyncd实现文件的实时同步/备份

当C(client)服务器中的文件发生变化(新增、修改、删除),实时推动到S(server)服务器,S服务器作为备份服务器。通知可配置当删除时,备份服务服务器不需要同步删除。

Stronger的博客 1924

lsyncd实时同步工具

lsyncd实时同步工具

qq_43934844的博客 665
上一篇: 各电脑用途计划
下一篇: [markdown]LaTex学习
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值