# Deepin-Clone **Repository Path**: liliang_linux/Deepin-Clone ## Basic Information - **Project Name**: Deepin-Clone - **Description**: 深度备份还原工具是深度科技开发的一款备份还原工具,包括磁盘克隆、磁盘备份、磁盘还原、分区克隆、分区备份、分区还原功能,还可以配合深度Live系统进行修复引导、修复分区等操作 - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 6 - **Created**: 2022-03-16 - **Last Updated**: 2022-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # deepin-clone Disk and partition backup/restore tool # DIM文件格式详解 * 文件后缀名必须为 dim dim文件元数据最大为的 24 * 1024 字节,位于文件开头。元数据格式: | | 版本 | 文件数量 | 文件1元数据...文件n元数据 | | ---- | ---- | ---- | ---- | | 0xdd | 1B | 1B | ... | 文件部分元数据格式: | | 文件名| 文件内容开始的偏移 | 文件内容结束的偏移 | | ---- | ---- | ---- | ---- | | 0xdd | 63B | 8B | 8B | 元数据结束后的16个字节为dim文件数据的校验和,其计算方法为: ```` md5_data // 保存参与md5计算的数据 md5_data.append(dim文件元数据) 首先将数据分块: block_size = max(1024 * 1024, 文件大小 / 1000) for (文件1...文件n) { seek(移动文件指针) 到文件的数据开头 // pos 为表示文件指针当前位置 while (pos < 文件数据的结尾 - block_size - 4) { block_index = 读取4个字节的数据 block_index %= (block_size / 1024) old_pos = pos if (seek 到 pos + block_size * 1024) { md5_data.append(读取1024字节) } else { seek 失败结束计算 } } md5_data.append(读取 min(文件数据的结尾 - pos, 1024 * 10)) } check_sum = md5(md5_data) ````