轻量级文件备份管理器





5.00/5 (8投票s)
一个具有简单用户界面和所有基本功能的文件的备份管理器。
引言
一个开源的文件备份管理器,具有简单的用户界面,并为家庭或普通办公室用户提供了所有基本功能。它包含两种模式,第一种用于文件夹,第二种用于文件。
背景
嗯,说到这个应用程序的诞生,对我来说,它最初是我为个人用途而创建的一个项目,然后我花了两年时间维护和改进它。我在家里的台式机和笔记本电脑上使用它,将重要数据同步到我的网络驱动器。我也使用它与 Google Drive 自动备份重要文件和文件夹。一旦应用程序将文件复制到我的 Google Drive 文件夹,它就会被上传到云端。如果您有一台带有 SSD 的笔记本电脑或台式机,请配置此应用程序,因为 SSD 可能会在没有任何警告的情况下崩溃。这将使您有一天免于丢失所有珍贵文件,而且是免费的。当然,我还在这个应用程序中添加了一些独特的功能。您可以自己看看。
使用应用程序
屏幕截图:主页
屏幕截图:添加任务窗口 - 文件夹模式
屏幕截图:添加任务窗口 - 文件模式
安装
方法 1:只需将构建文件夹复制到您想要的位置,然后从那里运行。
方法 2:使用安装程序设置文件,位于 $\FileManagerToolSetup\FileManagerToolSetup\Express\DVD-5\DiskImages\DISK1 目录。
可选:安装完成后,转到安装位置并修改 FileManagerLibrary.dll.config 中的“UserContext
”设置,将其更改为您想要的节。有关更多详细信息,请参阅 config 文件中的注释。
Windows 服务将在应用程序首次启动时安装,这需要管理员权限才能运行。可以根据配置规范安装单独的服务。
由于应用程序的服务控制行为,建议由应用程序管理员拥有管理员权限。
应用程序功能
我还将列出应用程序包含的一些功能。
- 文件夹模式 - 选择一个文件夹以备份整个文件夹到另一个位置。如果不想备份,您可以排除子文件夹。
- 文件模式 - 选择要备份到通用位置的文件。计划包括每月、每周、每日以及即时备份,即文件一旦更新就会被备份。
- 有一个选项可以仅从过去的某个时间段进行备份。就我而言,我想备份一个文件夹,但不想备份今天创建的文件,因为我可能会删除它们,并且不需要备份它们。
- 有三种操作模式。例如,您可以使用删除模式删除早于特定日期的文件,或者在文件大小超出特定大小时删除它们。
- 文件夹模式中的“清理目标”选项会将文件从源复制到目标,但会在备份位置保留这些文件直到指定的天数。默认值为 0,表示如果目标中缺少文件,则会从目标中删除这些文件。这仅在复制模式下可用。
- 您可以在文件模式下拥有多个文件版本。
关于代码
在设计此应用程序时,我没有侧重于任何特定的框架或模式。但是,您会在这里找到许多模式,因为在设计时,对于那些心中有模式的人来说,它们会自动就位。
另外,在这里列出每一个类和方法可能不是一个好主意,因为它会造成混乱,弊大于利。这个项目足够大且复杂,无法在一篇文章中完全解释。我将从顶层解释代码,供您初步了解。如果您想深入研究,欢迎下载并探索。随意复制代码。
文件管理器的模块可以分组如下:
- FileBase:执行应用程序文件系统相关操作的类集合。
CopyFolders
/MoveFolders
/Deletefolders
:将所有文件夹及其内容复制/删除/移动到目标文件夹。此方法包含异常处理,并在文件被锁定一段时间的情况下在单独的线程中等待。
类文件:FileOperations.cs, FileSystemOperations.cs - FileWatcher:该模块围绕
FileSystemWatcher
类设计,并监视文件修改。它是为了处理大量文件而设计的,例如监视 C:\windows\system32\ 目录中的文件。
类文件:FileWatcher.cs, FileWatcherManager.cs - JobManagers:应用程序中有两种类型的任务。基于间隔的任务使用
Threading.Timer
,而基于文件更改事件的任务使用Filewatcher
。
类文件:FileWatcherManager.cs, ScheduledJobManager.cs - Serialization:此类负责将应用程序数据保存到二进制文件中。
类文件:FileWatcherManager.cs, Serializer.cs - UIData:这些类保存应用程序的所有 UI 数据,以及用于数据序列化的叶级方法。
类文件:BackupJobData.cs, FileJobSettings.cs, FolderJobSettings.cs,LastRunStatus
, UIDataBase.cs - WindowsService:本节处理与 Windows 服务相关的功能。包括更改 Windows 服务模式的 API 调用、启动和停止 Windows 服务以及安装和卸载 Windows 服务。
类文件:ServiceStartupTypeHelper.cs, WindowsServiceHelper.cs, WindowsServiceInstallHelper.cs - Config:备份可以从应用程序的两个地方执行:从主仪表板和 Windows 服务。为了最大化代码利用率并最小化维护,我不得不将所有业务逻辑移到一个程序集中,然后从两者中消耗该库。这增加了获取应用程序配置的技术难度,因为我需要为 Windows 服务和桌面模块维护单独的应用程序配置副本。解决方法是创建一个自定义配置节,这在维护方面被证明是一种更好的方法。
重要类文件:AppSettings.cs, FileManagerLibraryUserSettings.cs - Jobcontroller:这是负责每个作业操作的模块。
类文件:JobController.cs - UI - BackupSetManager:此 UI 模块处理作业的添加和编辑。有两种作业模式,每种模式都有单独的控制器,它们继承自一个基类控制器。
类文件:BackupJobManagerControllerBase.cs, FileManagerController.cs, FolderManagerController.cs, BackupJobManagerView.cs - UI - Dashboard:这是应用程序的启动和主用户界面。
类文件:DashBoard.cs
未来展望
- 您可能会看到此应用程序的 WCF 版本,我计划在远程计算机上运行服务。考虑到这一点在办公室环境中可能会很方便。
- 我计划将其转换为 WPF,但这需要更多的时间……所以我把它留到以后再说……
- 将二进制保存文件移至 XML,以启用手动编辑和更好的可移植性。
历史
- 2015年1月22日:原始版本。如果发现错误,请给我留言。我会根据其重要性,在有空时修复它们。