当前位置:首页 期刊杂志

基于C#语言编写自动备份程序

时间:2024-05-04

柏建明,梁军,裴伟

(中色(宁夏)东方集团有限公司,石嘴山753000)

0 引言

任务计划程序是Windows系统的一个工具,可以定时执行用户指定的程序。如果想在自己开发的软件中直接加上任务计划功能,该如何实现呢。本文使用C#语言,编写一个任务计划程序,让程序在系统托盘后台定时执行文件或数据库的备份作业。程序运行初始,用户将备份时间、备份内容、存储目标、保存周期几个参数设定好并保存,程序最小化到系统托盘定时执行指定的备份作业。在用户指定的时间点自动备份用户数据到指定的存储空间,并检索是否有备份数据超过保存期限,如果过期了就删除,确保存储空间足够。

1 程序的窗体设计

选择“Windows窗体应用程序”创建项目,添加一个主窗体(frmMain,图 1),并添加托盘图标控件“notify⁃icon”和一个同托盘图标相关联的右键菜单控件“con⁃textMenuStrip”。右键菜单设置“打开窗口”、“关闭窗口”、“退出程序”三个菜单,由此用户可以在系统托盘里操作程序主界面。

再添加一个参数设定窗体(frmPrarameter,图2),作为软件初始化运行时用户对执行时间、备份内容、存储目标、保存周期几个参数进行设定的用户界面。在项目中添加一个以“.settings”为后缀的“设置文件”,将参数设定窗体中的参数类型和命名管理交给这个设置文件,由这个文件对这些参数进行设置和定义。程序运行时,实际的用户参数将保存在一个运行目录中。

图1 主窗体

2 程序的关键代码

2.1 程序在系统托盘的行为控制

主窗体最小化到系统托盘(点击主窗体的“关闭窗口”按钮):

系统托盘里的本程序图标对鼠标的左右键单击反应:

系统托盘里的本程序图标的菜单功能(对控件“contextMenuStrip”的“打开窗口”、“关闭窗口”、“退出程序”菜单添加单击代码,这里仅列出“打开窗口”的代码):

2.2 参数设定以及界面刷新

用户设定参数后,保存在运行目录的“AppSettings.settings”文件中,程序下次运行后,将首先读取上次保存的参数并在参数窗口显示。

为了保证参数窗体在关闭后将设置好的参数传给主窗体,并将主窗体的提示信息刷新,采用事件委托方法来处理这一过程。参数设定窗体中定义一个委托事件,当参数设定窗体中的参数设置并保存后,通知主窗体刷新当前备份信息。

在参数设定窗体关闭事件中调用此委托事件,并且将主窗体显示出来,

当在主窗体中打开参数设定窗体时,订阅此委托事件,并将一个刷新方法(RefreshControl)传递过去,方法RefreshControl在设定参数改变后刷新主窗体的提示信息。

2.3 程序的任务计划功能

为了让程序定时执行,引用系统时钟类作为定时器,按一定的时间间隔查看是否符合备份作业的设定时间,并在窗体构造函数中执行这一线程。

2.4 程序的备份功能

备份的内容分为多个文件、文件夹、数据库(SQL Server、Oracle、MySQL),需要在程序的参数界面事先设定备份的源路径(文件和文件夹)、数据库类型和用户信息、备份的目标路径(可以是本机、非本机共享目录、SAN磁盘)、备份数据保存周期。

开始备份前,检查是否存在指定的目标路径,不存在就新建;检查是否存在过期备份文件,有过期文件就删除。对于备份的文件夹而言,检索并删除过期文件夹的语句稍有不同,此处省略。

所有备份的文件、文件夹、数据库在目标路径中重新命名,命名规则:原文件名(或原文件夹名、或原数据库名)+备份日期。以下仅列出SQL Server数据库的备份代码:

3 结语

本方法将用户设定的备份参数独立出来,作为一个单独的配置文件由主体程序在执行时读取,提高了程序的灵活性和通用性。在程序中集成任务计划功能,以系统托盘控制的方式运行,使得程序操作简洁且安全。可以实现对多个文件、文件夹、数据库(SQL Server、Oracle、MySQL)进行定时自动备份功能。程序中以当前时间作为备份保存周期的日期上限,倒推出备份保存周期的日期下限,删除过期备份数据并备份新的数据,确保备份数据留存一定的周期并使存储空间足够。这是系统管理员进行备份管理工作的一个很好工具,很适合一般中小企业数据中心使用。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!