65.9K
CodeProject 正在变化。 阅读更多。
Home

轻量级文件备份管理器

starIconstarIconstarIconstarIconstarIcon

5.00/5 (8投票s)

2015年1月25日

CPOL

6分钟阅读

viewsIcon

40142

downloadIcon

2447

一个具有简单用户界面和所有基本功能的文件的备份管理器。

引言

一个开源的文件备份管理器,具有简单的用户界面,并为家庭或普通办公室用户提供了所有基本功能。它包含两种模式,第一种用于文件夹,第二种用于文件。

背景

嗯,说到这个应用程序的诞生,对我来说,它最初是我为个人用途而创建的一个项目,然后我花了两年时间维护和改进它。我在家里的台式机和笔记本电脑上使用它,将重要数据同步到我的网络驱动器。我也使用它与 Google Drive 自动备份重要文件和文件夹。一旦应用程序将文件复制到我的 Google Drive 文件夹,它就会被上传到云端。如果您有一台带有 SSD 的笔记本电脑或台式机,请配置此应用程序,因为 SSD 可能会在没有任何警告的情况下崩溃。这将使您有一天免于丢失所有珍贵文件,而且是免费的。当然,我还在这个应用程序中添加了一些独特的功能。您可以自己看看。

使用应用程序

屏幕截图:主页

屏幕截图:添加任务窗口 - 文件夹模式

屏幕截图:添加任务窗口 - 文件模式

安装

方法 1:只需将构建文件夹复制到您想要的位置,然后从那里运行。

方法 2:使用安装程序设置文件,位于 $\FileManagerToolSetup\FileManagerToolSetup\Express\DVD-5\DiskImages\DISK1 目录。

可选:安装完成后,转到安装位置并修改 FileManagerLibrary.dll.config 中的“UserContext”设置,将其更改为您想要的节。有关更多详细信息,请参阅 config 文件中的注释。

Windows 服务将在应用程序首次启动时安装,这需要管理员权限才能运行。可以根据配置规范安装单独的服务。

由于应用程序的服务控制行为,建议由应用程序管理员拥有管理员权限。

应用程序功能

我还将列出应用程序包含的一些功能。

  1. 文件夹模式 - 选择一个文件夹以备份整个文件夹到另一个位置。如果不想备份,您可以排除子文件夹。
  2. 文件模式 - 选择要备份到通用位置的文件。计划包括每月、每周、每日以及即时备份,即文件一旦更新就会被备份。
  3. 有一个选项可以仅从过去的某个时间段进行备份。就我而言,我想备份一个文件夹,但不想备份今天创建的文件,因为我可能会删除它们,并且不需要备份它们。
  4. 有三种操作模式。例如,您可以使用删除模式删除早于特定日期的文件,或者在文件大小超出特定大小时删除它们。
  5. 文件夹模式中的“清理目标”选项会将文件从源复制到目标,但会在备份位置保留这些文件直到指定的天数。默认值为 0,表示如果目标中缺少文件,则会从目标中删除这些文件。这仅在复制模式下可用。
  6. 您可以在文件模式下拥有多个文件版本。

关于代码

在设计此应用程序时,我没有侧重于任何特定的框架或模式。但是,您会在这里找到许多模式,因为在设计时,对于那些心中有模式的人来说,它们会自动就位。

另外,在这里列出每一个类和方法可能不是一个好主意,因为它会造成混乱,弊大于利。这个项目足够大且复杂,无法在一篇文章中完全解释。我将从顶层解释代码,供您初步了解。如果您想深入研究,欢迎下载并探索。随意复制代码。

文件管理器的模块可以分组如下:

  1. FileBase:执行应用程序文件系统相关操作的类集合。
    CopyFolders/MoveFolders/Deletefolders:将所有文件夹及其内容复制/删除/移动到目标文件夹。此方法包含异常处理,并在文件被锁定一段时间的情况下在单独的线程中等待。
    类文件:FileOperations.cs, FileSystemOperations.cs
  2. FileWatcher:该模块围绕 FileSystemWatcher 类设计,并监视文件修改。它是为了处理大量文件而设计的,例如监视 C:\windows\system32\ 目录中的文件。
    类文件:FileWatcher.cs, FileWatcherManager.cs
  3. JobManagers:应用程序中有两种类型的任务。基于间隔的任务使用 Threading.Timer ,而基于文件更改事件的任务使用 Filewatcher
    类文件:FileWatcherManager.cs, ScheduledJobManager.cs
  4. Serialization:此类负责将应用程序数据保存到二进制文件中。
    类文件:FileWatcherManager.cs, Serializer.cs
  5. UIData:这些类保存应用程序的所有 UI 数据,以及用于数据序列化的叶级方法。
    类文件:BackupJobData.cs, FileJobSettings.cs, FolderJobSettings.cs, LastRunStatus, UIDataBase.cs
  6. WindowsService:本节处理与 Windows 服务相关的功能。包括更改 Windows 服务模式的 API 调用、启动和停止 Windows 服务以及安装和卸载 Windows 服务。
    类文件:ServiceStartupTypeHelper.cs, WindowsServiceHelper.cs, WindowsServiceInstallHelper.cs
  7. Config:备份可以从应用程序的两个地方执行:从主仪表板和 Windows 服务。为了最大化代码利用率并最小化维护,我不得不将所有业务逻辑移到一个程序集中,然后从两者中消耗该库。这增加了获取应用程序配置的技术难度,因为我需要为 Windows 服务和桌面模块维护单独的应用程序配置副本。解决方法是创建一个自定义配置节,这在维护方面被证明是一种更好的方法。
    重要类文件:AppSettings.cs, FileManagerLibraryUserSettings.cs
  8. Jobcontroller:这是负责每个作业操作的模块。
    类文件:JobController.cs
  9. UI - BackupSetManager:此 UI 模块处理作业的添加和编辑。有两种作业模式,每种模式都有单独的控制器,它们继承自一个基类控制器。
    类文件:BackupJobManagerControllerBase.cs, FileManagerController.cs, FolderManagerController.cs, BackupJobManagerView.cs
  10. UI - Dashboard:这是应用程序的启动和主用户界面。
    类文件:DashBoard.cs

未来展望

  1. 您可能会看到此应用程序的 WCF 版本,我计划在远程计算机上运行服务。考虑到这一点在办公室环境中可能会很方便。
  2. 我计划将其转换为 WPF,但这需要更多的时间……所以我把它留到以后再说……
  3. 将二进制保存文件移至 XML,以启用手动编辑和更好的可移植性。

历史

  • 2015年1月22日:原始版本。如果发现错误,请给我留言。我会根据其重要性,在有空时修复它们。
© . All rights reserved.