Skip to content

一套协助用户对文件进行处理、管理、备份、同步的工具集;A toolkit designed to assist users in processing, managing, backing up, and synchronizing files.

License

Notifications You must be signed in to change notification settings

f-shake/ArchiveMaster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简介

这是一套协助用户对文件进行处理、管理、备份、同步的工具集。

在开始这个项目之前的许多年,我已经陆续写了很多的用于备份、同步、管理文件或照片的软件,包括:

这些工具功能各异,界面各不相同,技术水平差异很大,操作方式也不尽相同。因此,我希望通过本项目,把这些工具进行整合,使用跨平台的Avalonia技术承载GUI。

截图

主界面

主界面

文件目录工具

文件加密解密 目录结构同步 目录结构克隆
1.文件加密解密 2.目录结构同步 3.目录结构克隆
批量重命名 重复文件清理 按时间段分类
4.批量重命名 5.重复文件清理 6.按时间段分类
附属文件清理 批量命令行执行 硬链接去重 文件筛选操作
7.附属文件清理 8.批量命令行执行 9.硬链接去重 10.文件筛选操作

文本工具

文本智能生成(AI) 文本混淆 文档智能搜索(AI)
1.文本智能生成 2.文本混淆 3.文档智能搜索
错别字检查(AI) 编码识别与转换 逐行智能转换(AI)
4.错别字检查 5.编码识别与转换 6.逐行智能转换

照片工具

修复照片修改时间 照片瘦身 照片地理信息写入 照片位置分类
1.修复照片修改时间 2.照片瘦身 3.照片地理信息写入 4.照片位置分类

异地备份

制作异地快照 本地生成补丁 异地同步
1.制作异地快照 2.本地生成补丁 3.异地同步

动态固存备份

打包和备份 重建和恢复 包信息和验证
1.打包和备份 2.重建和恢复 3.包信息和验证

实时备份服务

备份任务配置 备份管理中心
1.备份任务配置 2.备份管理中心

工具和帮助

基本使用帮助

文件目录工具(FileTools

一套用来解决文件、目录(特别是图像文件)在预处理、整理、存档、浏览等环节存在问题的自动化工具

文件目录工具帮助

工具名 用途 期望解决的问题 原项目
按时间段分类
TimeClassify
识别目录中相同时间段的文件,将它们移动到相同的新目录中 例如对于航拍照片,多次起飞的照片和视频会混在一起。通过该工具,可以通过拍摄时间来自动将不同航次的照片和视频进行归类。 照片归档工具
附属文件清理
TwinFileCleaner
自动清理与主文件同名的关联文件。例如,当目录中存在.dng文件时,自动删除同名但不同后缀的.jpg等关联文件。 当拍摄了RAW+JPG格式的照片时,若决定处理RAW文件,那么JPG格式是多余的,需要删除。 照片归档工具
文件加密解密
Encryptor
使用AES加密方法,对文件进行加密或解密 需要对一个文件夹内的文件和子文件进行加密,并需要保留目录结构,需要加密文件名、文件夹名或目录结构。 照片归档工具
文件夹加密
目录结构同步
DirStructureSync
以一个目录为模板,将另一个目录中的文件同步到与模板内相同文件一直的位置 有两份初始状态一样的目录,其中一份中的某些文件进行了移动等操作,希望能够让另一份也同步应用更改,避免不必要的复制操作。 异地备份离线同步
控制台小程序集
目录结构克隆
DirStructureClone
以一个目录为模板,生成一个新的目录,目录中文件与模板一致,但大小为0 需要保存一个目录的结构,但是不需要了解文件的内容,只是想用尽可能小的容量存储文件树状结构。 异地备份离线同步
文件归位器
批量重命名
Rename
批量对一个目录中的文件或文件夹按规则进行重命名操作 需要对一个目录中的文件按一定规则进行重命名。 文件批量操作
重复文件清理
DuplicateFileCleanup
清理一个目录内的重复文件,或已包含在另一个目录中的相同文件 一些相同的文件散落在各个地方,为了节省空间,需要删除一部分 控制台小程序集
批量命令行执行
BatchCommandLine
以文件或目录为元素,批量执行命令行 有一个能够传入参数的可执行文件,需要将某个目录下的所有子目录或文件作为参数,传入可执行文件并运行,每个子目录或文件作为参数运行一次。例如需要对指定目录下筛选后的文件分别压缩。
硬链接去重
LinkDeduplication
将一个目录中二进制相同的文件指向同一个硬盘物理地址,即硬链接,以减少磁盘占用 加入一个目录中有很多完全相同的文件,用这个工具可以大幅减少占用空间
文件筛选操作
FileFilterOperation
对筛选后的文件进行复制、移动、删除操作 需要对某个目录中的一部分文件提取(复制、移动)到另一个位置,以及按规则删除文件或其他操作 文件批量操作

文本工具(TextTools)

文本工具帮助

工具名 用途 期望解决的问题 调用AI 原项目
文本智能生成
TextRewriter
使用AI对文本进行表达优化、结构调整、内容转换、文本评价等 提高文本处理效率和质量,满足多样化文本生成与优化需求
文本混淆
TextEncryption
使用替换式密码的方式混淆文本,实现防君子不防小人的文本加密 保护敏感信息,实现轻量级可逆文本安全混淆 文本加密工具
文档智能搜索
SmartDocSearch
从多个文档中搜索关键词,并通过AI进行总结归纳 提升文档信息检索效率,快速定位关键内容并自动生成摘要
错别字检查
TypoChecker
使用AI检查文本是否存在错别字 自动检测和修正文本错误,提高文本准确性和可读性 错别字检查工具
编码识别与转换
EncodingConverter
识别文本文件的编码,并可以转换为指定编码 对一系列文本文件需要确定编码,或统一为指定编码格式
逐行智能转换
LineByLineProcessor
针对每行文本调用AI进行独立转换,可用于分类、判断或文本改写等任务 针对大量需要基于语义进行非程序化判断的文本行,实现智能化逐行处理。它能够理解每行文本的深层含义,完成分类、判断、信息提取等复杂任务。
AI服务提供商
AiProviders
配置AI服务提供商 统一管理AI服务配置

照片工具(PhotoTools)

照片工具帮助

工具名 用途 期望解决的问题 原项目
修复照片修改时间
RepairModifiedTime
寻找EXIF信息中的拍摄时间与照片修改时间不同的文件,将修改时间更新闻EXIF时间 对照片进行处理后,文件修改时间会更新,不利于部分软件的照片排序,需要从EXIF中读取实际拍摄时间,对文件修改时间进行更新。 照片归档工具
控制台小程序集
照片瘦身
PhotoSlimming
复制或压缩照片,用于生成更小的照片集副本 需要将硬盘中整理后的部分照片复制到手机中以便随时查看,但可能存在文件过大放不进手机、只需要部分目录中的文件、只需要部分类型文件等需求。 照片归档工具
照片瘦身工具
照片地理信息写入
PhotoGeoTagging
将GPX轨迹中的GPS位置信息,根据拍摄时间自动匹配并写入照片Exif 相机拍摄的照片,不包含地理信息,无法根据位置查找照片。使用该工具,可以将拍摄时在相关工具记录的GPX轨迹中找到拍摄时间所在的位置,并写入照片元数据中。
照片位置分类
PhotoGeoSorter
根据照片EXIF信息中的地理位置,以及用于提供分类标准的矢量数据,将照片移动到不同的目录 有大量的照片,这些照片由手机或其他能够定位的设备拍摄,并写入了位置信息。希望将这些数据

异地备份(OfflineSync

在无法通过网络或实地全量同步的情况下,使用增量同步的方式,利用小容量设备完成异地和本地磁盘的数据同步

异地备份工具帮助

工具名 用途 原项目
制作异地快照
Step1
在异地计算机创建所需要的目录快照 异地备份离线同步
本地生成补丁
Step2
在本地计算机生成与异地的差异文件的补丁包 异地备份离线同步
异地同步
Step3
在异地应用补丁包,实现数据同步 异地备份离线同步

动态固存备份(WriteOnceArchive

将动态更新目录中的定期文件备份到多个容量有限、写入后不可修改介质(如光盘、一次性磁带)

动态固存备份帮助

工具名 用途 原项目
打包
Packing
扫描文件特征,制作文件归档包 光盘归档工具
重建
Rebuild
从文件归档包重建目录结构,或验证文件完整性 光盘归档工具
包信息和验证
Verify
查看备份介质中文件包的信息,验证文件完整性 光盘归档工具

文件备份服务(FileBackupper

将目录中的文件定时或实时备份到另一个位置,支持全量备份或增量备份

自动备份服务帮助

工具名 用途 原项目
备份任务配置 对备份任务进行新增、删除、修改配置 文件自动备份系统
备份管理中心 查看备份任务的信息、进行手动备份,查看快照、快照文件、日志等 文件自动备份系统

下一步计划:增加FileWatcher备份、删除日志

开发

架构

解决方案结构

解决方案主要结构为项目框架-模块的形式,各模块名称均为ArchiveMaster.Module.*,独立编译成dll,然后由ArchiveMaster.UI进行反射调用。这样做的目的是后续可以开放接口,不改动原始程序而进行开发,灵活加载新模块。

项目名称 类型 描述 依赖
ArchiveMaster.Core 依赖编译 同时被.UI.Module.*调用,包含一些基础的接口、基类、配置约定等 FzLib
ArchiveMaster.UI 依赖编译 界面管理程序 ArchiveMaster.Core
ArchiveMaster.UI.* 启动模块 具体平台的启动器 ArchiveMaster.UI
ArchiveMaster.Module.* 独立编译 每个模块在界面上显示为一个组别,同一类的工具放在同一个模块中 ArchiveMaster.Core

项目内部结构

除了ArchiveMaster.UI.*外,其余项目结构基本一致。本解决方案的主要结构是总(公共方法、接口、定义)-分(功能模块)-总(UI启动器)

项目名称 描述
Assets 图标等素材文件,作为AvaloniaResource
Configs 工具的配置文件
Converters 用于XAML的值转换器
Enums 枚举类型
Services 各工具~~~~的执行逻辑代码,每个Service拥有一个ConfigBase的属性。
ViewModels 视图模型,连接ViewsConfigsServices
ViewModels.FileSystem 用于表达文件或目录信息的类,继承自SimpleFileInfo
Views UI视图界面。本软件实现了完全的MVVM。除UI项目外,Views中仅包含界面,不包含逻辑。

构建

  1. git clone https://github.com/f-shake/ArchiveMaster.git,将源代码下载至本地。
  2. 编辑Directory.Build.props
    1. UseLocalFzLib设置为false
    2. 调整OutputDir,或将SpecialOutputDir设置为false
  3. build目录中按需执行PowerShell脚本,或在IDE中重新生成解决方案。

模块

新增模块

一个模块表现为一个dll。步骤如下:

  1. 创建一个项目(或复制已有项目并清空),名称前缀约定为ArchiveMaster.Module.TargetFrameworknet8.0RootNamespaceArchiveMaster
  2. 新增并实现一个或多个工具
  3. 新建一个类,实现IModuleInfo,声明模块基本信息

新增工具

一个工具,在界面上表现为主页上的一个标签页,在实现中表现为一组同前缀的View、ViewModel、Service、Config组成的类的集合。一般来说,步骤如下:

  1. 创建一个配置类,继承并实现ConfigBase,用于保存配置
  2. 创建一个服务类,继承并实现ServiceBase,用于工具的具体逻辑实现。大多数工具可以分为初始化和执行两步,这类工具可以继承并实现TwoStepServiceBase,实现InitializeAsyncExecuteAsync时,应确保不会占用长期主线程。
  3. 创建一个视图模型类,继承并实现ViewModelBase,用于页面的模型。大多数工具可以分为初始化和执行两步,这类工具可以继承并实现TwoStepViewModelBase
  4. 创建一个视图类,继承PanelBase,用于页面的模型。大多数工具可以分为初始化和执行两步,这类工具可以继承TwoStepViewModelBase
  5. 在实现IModuleInfo的类中更新工具相关信息

About

一套协助用户对文件进行处理、管理、备份、同步的工具集;A toolkit designed to assist users in processing, managing, backing up, and synchronizing files.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages