U盘GIT仓库同步系统开发规划
增强版xugit
(V5.2)发布
2024-05-09 16:37 完成增强版
xugit.sh
, 安装后命令仍然为ugit
. 后期如果没有重大bug
, 尽量不再升级了,因为科研工作紧张。欢迎大家使用增强版xugit.sh
, 欢迎反馈您的意见.2024年05月09日, 完成了增强版
U盘
同步程序xugit.sh
. 写这支程序的动机是为了解决文件夹误删除,同时如果被改名时能够智能找回或重建,此版采用uudi
来唯一识别主机上的HOME
挂载硬盘和相应的U盘
, 它不依赖于U盘
和仓库的名称来识别设备,所以可以自动校准电脑和U盘上的仓库,所以我称之为增强版。同时在实现逻辑上比之前的版本也进步了一大截,所以无特别需求的话,您应当下载使用增强版xugit.sh
, 安装后其命令仍然为ugit
, 使用ugit -h
查看帮助信息。此版,将同步网络的配置内容保存于
U盘
仓库,不受主机限制,所以配置一次即可走遍天下。同时,也取消了对本地~/.ugitmap
的引用,专而将其建立在U盘
端,这也可以避免受限于本地,所以更加合理。增强版还优化了命令,强调易用性,对于同步的和操作实现自动化,仅保留几项常用的操作,所以它更加实用。
为了保留近二十多天的劳动成果,所以同时保存了三个版本的程序,也可以作为大家学习之用,但是未来本人将只维护
xugi.sh
,同时由于实现逻辑上的巨大差异,增强版xugit.sh
直接升级至V5.0
, 2024年05月09日版本号V5.2
.
ugit V4.0 存在的问题
已经开发成功了ugit
软件,基本实现U盘上建立GIT
仓库,并且同步到不同电脑。其实现原理为:在U盘上建立仓库,然后在本地电脑写入本地目录
与U盘仓库
的对应关系,然后实现同步。但是这种情况存在问题也是比较严重的,下面说明:
本地仓库名称有可能被用户改变,这种情况下导致本地记录文件
.ugitmap
的一系列记录失效,因为这些路径不存在。最初对本地仓库命名时,使用
U盘名称@UGIT
的模式,如果用户使用了另一个同名的U盘
, 尽管通过比对U盘的UUID
可以识别出这不是之前的源仓库,但是在本地建立仓库时就会和之前的U盘名称@UGIT
冲突。如果某用户误删除了
.ugitmap
文件,但是原来建立的仓库还存在,于是在执行同步的时候ugit
就无法取得本地和源仓库的对应关系。
ugit V4.1 的改进计划
硬件设备的唯一识别编号为UUID
, Linux
让的所有文件识别的唯一编号为 inode
,
于是通过这两者建立一一对应关系,就不会存在ugit V4.0
的问题。需要做的应当是将.ugitmap
删除,同时根据硬盘UUID
和U盘UUID
取得一一对应关系,同时将系统中的inode
自动和U盘仓库
建立一一对应关系。实现流程为:
读取
U盘
信息,将所有插入电脑的U盘
的UUID
和路径
存入数组变量待用。新的
U盘仓库
为空时,在该U盘
建立映射文件.ugitmap
, 加入防删除权限。如果在U盘仓库
中已经存在仓库,则使用ls
命令,建立仓库路径
存入数组变量待用。.ugitmap
中记录了克隆过U盘仓库
的电脑硬盘UUID
和目标文件夹的inode
读对主机的硬盘信息,如果其不在
.ugitmap
内,此硬盘没有克隆过U盘仓库
, 执行克隆操作,同时将本地上的文件夹inode
记录到U盘
中的.ugitmap
. 如果其在.ugitmap
内,则使用find
按inode
在/home/$USER
内查找路径,建立本地map
, 执行同步操作。剩下的工作交给
ugit V4.0
原始程序处理。2024-05-08 12:22 暂时记录到此。