git 影子备份做出来了,但……

随便聊聊 · 512 次浏览
风未知 创建于 2022-07-24 23:39

git 影子备份做出来了

性能太差了

kopia 影子备份 10秒就能干完的事 git 影子备份要 30 秒

我把我的 sm 多复制了一份,直接成 60 秒了。

 

要是能在应用运行时进行影子备份,应用不运行时像之前一样备份也就算了

但 git 影子备份实现的方式非常勉强

所谓影子备份,就是通过 windows 的 shadow copy 服务将备份文件夹那一刻的镜像挂载到某个目录上,这个目录只可读不可写,可以拿来复制

kopia 影子备份是直接对这个目录进行备份,生成快照后再把目标路径换成源路径,这个过程非常顺滑

 

由于 git 只能在 git 仓库里运行,必须要将数据放在 git 仓库里才能进行 git 备份,而影子目录只可读不可写,这是做不到的

必须先将文件数据复制进 git 仓库,然后才能进行 git 提交。这里又出现了一个新的问题,这样复制进去的文件在提交时需要花费大量的时间,再加上复制文件需要的时间,git 影子备份的性能变得非常差。

最大的问题是,因为要用复制替换的方式更新 git 工作区,你就不能直接把备份文件夹放在工作区里用 git 提交更改,就算不通过影子备份只使用普通备份也得这么替换一次,耗时翻了十几倍。

从中午写到晚上,30 kb 的代码就整出了这种东西,删了得了


回复内容
crazylion 2022-07-25 08:17
#1

对技术上一无所知,之前看到有朋友说GitHub因为众所周知网络的原因,会导致同步问题,https://hulinhong.com/2018/03/11/git_shadow_socks_proxy/,需要单独设置代理会更好点,看文章没搞定,先贴上来大佬看看对后续开发有没有什么用的上的帮助(我自己本身现在每次同步Githup都是挂上梯子,不然经常出现2台电脑数据不同步的问题)

风未知 回复 crazylion 2022-07-25 10:01 :

单独设置代理,并不等于不用开梯子,因为给你做代理的就是梯子。单独设置,其实等同于黑名单,强制流量必须经过你的梯子。不开梯子的话,代理自然就没用了。

我自己呢,梯子在路由器里,一直开着在,没这方面烦恼……如果你 github 同步不顺滑,用 OneDrive 同步 kopia 储存库的体验如何?这个不需要梯子

crazylion 回复 风未知 2022-07-25 10:16 :

嗯 嗯,梯子一直开着的,只是每次GitHub同步的时候要手动切到全局,平时是自动判断的,确实搞个软路由不错的方法,onedrive之前直接把sm放进去同步是有问题,同步Kopia这个到没试过

风未知 回复 crazylion 2022-07-25 10:21 :

sm 当然是不能直接放的,被占用的文件 onedrive 是无法上传的,但是 kopia 储存库并不会被占用,可以直接被完整上传

crazylion 回复 风未知 2022-07-25 10:53 :

好的,谢谢


sugarhope 2022-07-25 08:59
#2

哈哈,可以但没必要

回复主贴