java监视器

上一次我们建立了一个强大的备份系统,现在我们将研究如何监视备份集。 我们需要验证是否正确清理了备份集(这称为删除策略),并且它们是一致的(称为一致性策略)。

备份集可以包含多个文件集。 文件集是备份文件的集合,位于备份集的同一源目录下。

以下YAML配置显示了备份集和文件集的示例:

backup-set-configs:
- name: Mikrotik Backupsuri: /volume1/backupftp/mikrotik_backuptype: DISKfile-set:- name: fe-prodnet01 exportfilterPattern: '.*fe-prodnet01-.*\.rsc'- name: fe-prodnet11 backupfilterPattern: '.*fe-prodnet11.*\.backup'
- name: Exchange Backupsuri: /volume1/pex/backupstype: DISKfile-set:- name: Exchange pstsfilterPattern: '.*\.pst'groupByPattern: '.*\/backups\/(\d{4}-\d{2}-\d{2})\/'groupByPatternHasDatePattern: 'yyyy-MM-dd'deletePolicy:deleteEmptyDirectories: true
- name: Proxmox Backupsuri: /volume1/proxmox/dumptype: DISKfile-set:- name: QEMU backupsfilterPattern: '.*vzdump-qemu.*\.vma\.lzo'groupByPattern: 'proxmox/dump/vzdump-qemu-(\d+)-'consistencyPolicy:numberOfBackupsRequired: 3- name: LXC backupsfilterPattern: '.*vzdump-lxc.*\.tar\.lzo'groupByPattern: 'proxmox/dump/vzdump-lxc-(\d+)-'consistencyPolicy:numberOfBackupsRequired: 3

第一个备份集位于/volume1/backupftp/mikrotik_backup目录下,并包含两组文件。 当同一目录中有多个服务器的文件时,通常将以这种方式进行配置。 如第三个示例所示,还有另一种解决方案按服务器名称(或任何标识符)分组。

文件集具有name ,这只是GUI和filterPattern的逻辑名称。 无论目录树有多深,此模式都会过滤备份集路径下匹配的所有文件。

删除策略和一致性策略将按修改日期(在磁盘上)从大到小的顺序应用于文件。

第二个备份集用于交换备份。 请注意,在此示例中,我们如何使用groupByPattern 。 这通过groupByPattern所有过滤的文件名(来自filterPattern ) groupByPattern 。 在这种情况下, groupByPattern也是日期模式,由groupByPatternHasDatePattern指定。

我们将按照指定的日期模式最终得到一个按日期分组的文件集,并且删除策略和一致性策略将按顺序将删除和一致性策略应用于匹配的文件(分组日期)。

第三个备份集(用于Proxmox备份)将文件存储在“转储”目录中,并混合两种类型的备份。 QEMU和LXC备份分为两个文件集,并由(\d+)指定的VMID(虚拟机标识符)分组。 由于groupByPattern是十进制值而不是日期,因此删除和一致性策略将按修改日期(在磁盘上)以降序顺序应用于匹配的文件。

请注意,我们并不总是指定deletePolicyconsistencyPolicy ,因为我们在这两个政策的合理的默认值。 它们都将针对每个备份集和其中的每个文件集执行。

deletePolicy具有两个配置设置:

  • deleteEmptyDirectories :默认情况下处于禁用状态,当您有一个groupByPattern作为日期值时,此设置很有用。 当超过保留策略时,该目录中的所有文件都将被删除,从而使您拥有一个空的“日期”目录。 在这种情况下,您可以指定deleteEmptyDirectories 。 该目录只有在确实为空的情况下才会被清理(以防其他日志文件徘徊)。
  • deleteNumberOfBackupsLargerThan :默认情况下为30。对于每日备份,这类似于30天。 如果您每周备份一次,则表示保留政策为30周。 当然,无论天数如何,都可以根据需要更改此值。 它表示需要在磁盘上保留多少个文件集。

consistencyPolicy具有三个配置旋钮:

  • numberOfBackupsRequired :默认值为7。即使我们在deletePolicy保留30个文件集,我们也只需要7个文件集即可通过一致性。 如果是每日备份,则意味着我们至少需要备份7天才能使文件集保持一致。
  • minimumFileSizeRequired :默认值为1。这意味着文件集中的每个文件必须至少为1个字节或更大。 这可以确保至少有东西在文件中。 您可以将其设置为更大,或将其设置为0以禁用该检查。
  • numberOfDaysOfBackupsRequired :默认值为7。这将检查文件集中的最后一个文件(按日期或修改时间降序排列)至少比7天前更新。

组合所有设置可确保:

  1. 文件集包含足够新的文件。
  2. 文件集的文件中至少写入了一些内容。
  3. 我们有一组跨一定时间的文件,并且该时间不超过或不影响删除策略。

如果任何检查失败,则文件集将失败。 如果文件集失败,则备份集也会失败,因此,全局状态也将失败。

一致性策略和删除策略的实现都扩展了相同的抽象类AbstractFileVisitor ,而后者又扩展了SimpleFileVisitor<Path> 。 此FileVisitor将循环备份集URI中的所有子目录两次,首先执行删除策略,然后执行一致性策略。

然后, AbstractFileVisitor将过滤与过滤器匹配的所有子目录中的所有文件,并将它们放置在地图结构中。

为了完成此过程,将循环映射结构,并根据策略规则删除和验证文件。

您是否对我们的实施感到好奇? 您想分叉并修改我们的代码吗? 在评论中大喊大叫,我们可以谈谈我们解决方案的开源。

改进措施

可以随时进行改进,这是我们头脑中的一些事情:

  • 在备份断开连接之前,在源上添加MD5校验和。 在我们的应用程序中检查那些MD5校验和,以确保我们的备份随时间推移保持一致。
  • 在应用程序的内存中解析档案文件(.zip,.tar,.gz),遍历文件条目,看看是否到达档案文件的末尾; 这应该排除损坏的.zip文件。
  • 解析邮箱备份并遍历条目以查看存档是否未损坏。
  • 将数据库备份发送到检查数据库是否可以还原的基础结构。
  • 添加了远程检查备份的功能(例如,通过SSH登录到远程服务器,并检查那里的备份是否也可用并保持一致),对于某些异地备份方案很有用。
  • 添加通过API检查备份的功能(例如,查看第三方系统上托管的AWS备份或Proxmox备份的状态)。

翻译自: https://www.javacodegeeks.com/2018/05/monitoring-and-managing-your-backup-system.html

java监视器

java监视器_监视和管理备份系统相关推荐

  1. 海域动态监视监测管理系统_监视和管理备份系统

    海域动态监视监测管理系统 上一次我们建立一个强大的备份系统时 ,现在我们将研究如何监视备份集. 我们需要验证是否正确清理了备份集(这称为删除策略),并且它们是一致的(称为一致性策略). 备份集可以包含 ...

  2. java计算机毕业设计高速公路收费管理MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高速公路收费管理MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高速公路收费管理MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B ...

  3. java毕业设计春之梦理发店管理Mybatis+系统+数据库+调试部署

    java毕业设计春之梦理发店管理Mybatis+系统+数据库+调试部署 java毕业设计春之梦理发店管理Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java ...

  4. java计算机毕业设计高校实习管理平台系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高校实习管理平台系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高校实习管理平台系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目 ...

  5. JAVA计算机毕业设计房屋中介管理Mybatis+系统+数据库+调试部署

    JAVA计算机毕业设计房屋中介管理Mybatis+系统+数据库+调试部署 JAVA计算机毕业设计房屋中介管理Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  6. java计算机毕业设计吉他库存管理MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计吉他库存管理MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计吉他库存管理MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  7. java投标_基于jsp的招投标系统-JavaEE实现招投标系统 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的招投标系统, 该项目可用各类java课程设计大作业中, 招投标系统的系统架构分为前后台两部分, 最终实现在线上进行 ...

  8. 安卓9可用的性能监视器_监视应用程序生态系统的性能和可用性

    在这个三篇文章的系列的第1部分和第2部分中 ,我介绍了监视Java应用程序的技术和模式,重点是JVM和应用程序类. 在最后的最后一部分中,我将重点放在介绍用于从应用程序的依赖项(例如底层操作系统,网络 ...

  9. 汽车租赁系统java窗口_共享型汽车租赁系统(SSM+MySql)

    知乎视频​www.zhihu.com 共享型汽车租赁系统(SSM+MySql)的设计与实现(毕业论文14000字以上,程序代码,MySQL数据库) [项目包含内容] [文档包含内容] [项目功能描述] ...

最新文章

  1. SemSegMap :基于3D点云语义信息的定位
  2. Revit:从入门到精通学习教程
  3. php在没用xdebug等调试工具的情况下如何让调试内容优雅地展现出来?--php数组格式化...
  4. Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
  5. 领扣-26/27/80/283 数组专题 做好初始定义 双指针 MD
  6. Swift之深入解析如何实现Promise
  7. 李倩星r语言实战_《基于R的统计分析与数据挖掘》教学大纲
  8. 泛型lua的for循环以及lua的特殊的dowhile循环
  9. 保持windows2003域控制器的安全
  10. Git教程、python教程、ubuntu教程 收藏
  11. 直接通过服务器文件相对路径实现文件下载
  12. windows server 2008安装配置DHCP服务器
  13. 写给15岁的女儿-乐嘉
  14. matlab 秩和检验,多个独立样本比较的秩和检验(Kruskal-Wallis H)
  15. 编程猫的python咋样_编程猫的课程怎么样?
  16. 批量缩小多张图片尺寸,保持图片清晰无损
  17. ASWEET项目实施日志
  18. 跟sky学数字IC/FPGA设计学习培训课程:全集已出
  19. 【敏捷】主要角色和分工
  20. make 命令干什么用?

热门文章

  1. 人工智能大牛的新年启示:未来要看无监督学习、自然语言处理
  2. LNMP环境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)
  3. yii2 postman 文件上传
  4. docker容器互联实战
  5. 不计前嫌,握手言和:Microsoft宣布新版SQL Server将同时支持Windows与Linux两大平台...
  6. 联机共享 Windows Live Writer 草稿
  7. [Java 基础]方法
  8. Opencv 完美配置攻略 2014 (Win8.1 + Opencv 2.4.8 + VS 2013)下
  9. 总结Servlet体系接口和类
  10. Linux 下使用命令行查看 內核版本 | 系統版本 | cpu 位數 | 內存使用