Rsync的一个高级应用
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的一个高级应用的更多相关文章
- 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>
1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...
- 《西科软件》一个高级PHP工程师所应该具备的
初次接触PHP,就为他的美所折服,于是一发不可收拾.很多面试,很多人员能力要求都有"PHP高级工程师的字眼",如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师 ...
- 一个高级PHP工程师所应该具备的
初次接触PHP,就为他的美所折服,于是一发不可收拾. 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望 ...
- 成为一个高级java架构师所需要具备那些技能呢?
一.什么是架构师 所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等.可能涉及到 ...
- 2020年如何成为一个高级AVA架构师(50W~100W年薪)
2020年如何成为一个高级AVA架构师(50W~100W年薪)
- 一个高级PHP工程师所应该具备的(转自元如枫博客)
初次接触PHP,就为他的美所折服,于是一发不可收拾. 很多面试,很多人员能力要求都有“PHP高级工程师的字眼”,如果您真心喜欢PHP,并且您刚起步,那么我简单说说一个PHP高级工程师所应该具备的,希望 ...
- Layui 实现一个高级筛选功能
基于layui写的一个高级搜索(筛选)功能.效果图: 是一位萌新,所有写的有点儿乱.(放在上面,供新手们参考,也是自己做一个记录.)代码如下: <!DOCTYPE html PUBLIC &qu ...
- break 的一个“高级用法”(转)
转载:http://blog.csdn.net/lovelan1748/article/details/5321558 本小节不是很适于没有多少实际编程经历的初学者,所以初学者可以跳过,以后再回头阅读 ...
- 通过rsync搭建一个远程备份系统(二)
Rsync+inotify实时备份数据 rsync在同步数据的时候,需要扫描所有文件后进行对比,然后进行差量传输,如果文件达到了百万或者千万级别以上是,扫描文件的时间也很长,而如果只有少量的文件变更了 ...
- 通过rsync搭建一个远程备份系统(一)
前言 我公司是电子商务公司,全部是linux系统,每天的网站数都在增加,为了保证安全,需要建立一个远程容灾系统,将网站数据每天凌晨1点备份到远程服务器上,由于数据量大,每天进行进行增量备份,仅仅备份当 ...
随机推荐
- vue星星评分
<template> <div> <div class="xx"> <div v-for="(i, index) in list ...
- Java 插入Excel页眉、页脚
前言 在Excel文档中,我们常用页眉页脚来显示文档的附加信息,例如日期.公司名称.Logo或作者信息等.本文将通过Java程序来介绍如何给Excel文档添加页眉页脚.代码示例主要从以下几方面来演示添 ...
- CodeArts TestPlan:一站式测试管理平台
摘要:华为云正式发布CodeArts TestPlan,这是一款自主研发的一站式测试管理平台,沉淀了华为30多年高质量的软件测试工程方法与实践,覆盖测试计划.测试设计.测试执行和测试评估等全流程. 本 ...
- DTT年度收官圆桌π,华为云8位技术专家的年末盘点
摘要:收下这份DTT年度收官圆桌π总结,在新的一年心想事成,技术上更上一层楼. 本文分享自华为云社区<DTT年度收官圆桌π,华为云8位技术专家的年末盘点>,作者:华为云社区精选 . 在20 ...
- MySQL 数据库救火:磁盘爆满了,怎么办?
摘要:当磁盘空间爆满后,MySQL会发生什么事呢?又应该怎么应对? 本文分享自华为云社区<[MySQL 数据库救火]- 磁盘突然爆满的处理方式>,原文作者:技术火炬手 . 大多数用户在对于 ...
- 优化 uniapp 发行操作:一键打包、混淆代码
uniapp一键发行代码并混淆代码 第一步.在项目根目录下安装插件 npm install javascript-obfuscator -g 安装完成后,javascript-obfuscator ...
- 使用 quartz-solon-plugin 开发定时任务(新)
(一)新建一个 maven 空项目 (二)添加 maven 引用 <dependency> <groupId>org.noear</groupId> <art ...
- c#-微软2
练习-编写第一个代码: 在第一次练习中你将使用c#将神圣的程序员用语打印到控制台的标准输出 编写第一行代码: 在软件开发者中,有这么一个传统,那就是将"Hello World!"这 ...
- JSP | JavaBean 的基本使用方法与 IDEA 配置
上一篇重新编写了 IDEA 2021.2 新建JavaWeb项目及Tomcat部署, 接下来的本篇文章才是核心,JavaBean的基本使用方法与 IDEA 配置 JavaBean概述 JavaBean ...
- 《机器学习实战》 | 第3章 决策树(含Matplotlib模块介绍)
系列文章:<机器学习实战>学习笔记 本篇文章使用到的完整代码:Here 决策树 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据. 缺点:可能会产生过度 ...