Rsync的一个高级应用


背景

2019年刚开始接触linux时. 有一个很恶心的场景.
很多人为了简单起见, 提交数据库的修改(数据结果和预制数据)
都不是增量处理, 都是全量提交过来.
所以会造成修改越来越多的, 速度越来越慢的情况.
当时自己就在网上找资料,发现了一个解决方案, 就是利用rsync进行一系列的对比与查找,将文件按照目录到指定路径下. 这样有一个好处. 应用的话 我就知道哪一些文件发生了变化, 进而推动了我这边镜像分层.动态生成加快生成速度的想法
另外一方面非应用 数据库部分就可以利用这个方式仅更新变化的部分.

命令解析

最原始的作者:
https://my.oschina.net/mengshuai/blog/551379
原作者是 2015年写的文章. 我应该死2019年发现的这个地方.
然后用来进行过一些处理. rsync -rcn --out-format="%n" /myapp/${before}/ /myapp/${now}/ |grep -v "/$"|xargs -I{} rsync -R /myapp/${now}/./{} /myapp/diff${now}/new 这是一个rsync的命令,实现的功能是将从源目录/myapp/${before}/到目标目录/myapp/${now}/之间差异
的文件复制到/myapp/diff${now}/old目录中。下面是具体命令中各选项的含义: --dry-run:显示这个命令将做的事情,但是不实际操作。
-r:递归复制子目录,保持目录结构。
-C: cvs相关的文件不进行备份恢复, 原始的命令来里面带这个, 我这边不是源码, 是反编译后的,所以需要带着.
-c:根据文件的check-sum比对文件内容是否有修改, 快速确定是否需要同步更新。
-n:模拟执行,不进行实际操作。
--out-format="%n":输出修改或已存在于目标位置的文件名。
/myapp/${before}/:源目录路径变量 ${before} 对应某个目录。
/myapp/${now}/:目标目录路径变量 ${now} 对应某个目录。
grep -v "/$":过滤掉grep命令中以斜杠(/)结尾的行,剩余的行即为需要同步的文件,而不包括目录。
xargs -i{} rsync -r /myapp/${before}/./{} /myapp/diff${now}/old:使用xargs将需要同步的文件名作为参数传递给rsync命令,
并根据路径和文件名,把旧版本的文件复制到指定目录/myapp/diff${now}/old 的相对位置。
其中 {} 为zarfs占位符变量,用以读取从上一行 grep -v "/$"得到的源目录文件名列表中每行文件名。

命名说明

上一个命令解析其实是 chatgpt 给解析的.
其实我也尝试过, 自己也可以将命令准确的进行解释. chatgpt 的确是一个生产力工具.
但是我感觉还是尽量能够有自己的思维去理解会更好一些. grep xargs rsync 其实都是自己常用的命令. 理论上自己也可以写的出来
还是要加强自己的学习.

Rsync的一个高级应用的更多相关文章

  1. 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>

    1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...

  2. 《西科软件》一个高级PHP工程师所应该具备的

    初次接触PHP,就为他的美所折服,于是一发不可收拾.很多面试,很多人员能力要求都有"PHP高级工程师的字眼",如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师 ...

  3. 一个高级PHP工程师所应该具备的

    初次接触PHP,就为他的美所折服,于是一发不可收拾. 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望 ...

  4. 成为一个高级java架构师所需要具备那些技能呢?

    一.什么是架构师 所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等.可能涉及到 ...

  5. 2020年如何成为一个高级AVA架构师(50W~100W年薪)

    2020年如何成为一个高级AVA架构师(50W~100W年薪)

  6. 一个高级PHP工程师所应该具备的(转自元如枫博客)

    初次接触PHP,就为他的美所折服,于是一发不可收拾. 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望 ...

  7. Layui 实现一个高级筛选功能

    基于layui写的一个高级搜索(筛选)功能.效果图: 是一位萌新,所有写的有点儿乱.(放在上面,供新手们参考,也是自己做一个记录.)代码如下: <!DOCTYPE html PUBLIC &qu ...

  8. break 的一个“高级用法”(转)

    转载:http://blog.csdn.net/lovelan1748/article/details/5321558 本小节不是很适于没有多少实际编程经历的初学者,所以初学者可以跳过,以后再回头阅读 ...

  9. 通过rsync搭建一个远程备份系统(二)

    Rsync+inotify实时备份数据 rsync在同步数据的时候,需要扫描所有文件后进行对比,然后进行差量传输,如果文件达到了百万或者千万级别以上是,扫描文件的时间也很长,而如果只有少量的文件变更了 ...

  10. 通过rsync搭建一个远程备份系统(一)

    前言 我公司是电子商务公司,全部是linux系统,每天的网站数都在增加,为了保证安全,需要建立一个远程容灾系统,将网站数据每天凌晨1点备份到远程服务器上,由于数据量大,每天进行进行增量备份,仅仅备份当 ...

随机推荐

  1. vue遮罩层

    <template> <div class="hello"> <button @click="toggleModal">打开 ...

  2. 面试官:说一下Jena推理

    摘要:本文介绍了Jena的推理子系统,并构建了一个简单的RDF图.基于该RDF图,我们搭建了一个Jena推理引擎,并进行自动化推理. 本文分享自华为云社区<知识推理之基于jena的知识推理(三) ...

  3. Solon2 之基础:三、启动参数说明

    启动参数,在应用启动后会被静态化(为了内部更高效的利用).比如,想通过体外扩展加载配置,是不能改掉它们的. 1.启动参数 启动参数 对应的应用配置 描述 --env solon.env 环境(可用于内 ...

  4. AI Studio 基本操作

    https://aistudio.baidu.com/aistudio/projectdetail/6182202 项目启停 执行和调试 添加代码或文件 运行代码 %cd /home/aistudio ...

  5. PPT 工作计划PPT 应该怎么样改

    收集素材 页面处理 丰富细节 PPT 工作计划PPT 应该怎么样做

  6. Intelij IDEA 隐藏 .idea

    如图 这两文件夹是 IDEA 自动生成的,在开发过程中用不到它.可以把它隐藏(不在 IDEA中显示),操作如下: OK后,立即生效

  7. MySQL 添加用户,分配权限

    1. 添加用户 CREATE USER `vipsoft`@`%` IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER; 2. 权限配置 GRANT 权限1,权限 ...

  8. Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索

    1.Nuget包添加引用: X.PagedList.Mvc.Core 2.View: @using VipSoft.Web.Model @model X.PagedList.IPagedList< ...

  9. SQL Server 事务执行、回滚

    MySQL 事务回滚.在执行删除.更新等操作时,防止误操作 生产环境更新数据时必用 begin tran --开启事务 begin--先在事务中 执行 UPDATE Sys_User SET Name ...

  10. Java 网络编程 —— 实现非阻塞式的客户端

    创建阻塞的 EchoClient 客户程序一般不需要同时建立与服务器的多个连接,因此用一个线程,按照阻塞模式运行就能满足需求 public class EchoClient { private Soc ...