作者popcorny (毕业了..@@")
看板Soft_Job
标题Re: [请益] 大型Git版本库的备份或替代方案
时间Thu Apr 21 09:30:52 2022
※ 引述《popcorny (毕业了..@@")》之铭言:
: 分享一下我们开发的工具
: https://artivc.io/
:
: 用法跟 git 很类似,但是就是拿来备份大的档案。
: 更精确的说是 snapshot 档案,每个版本类似 git 的 commit
:
: 有支援,可以参考
: https://artivc.io/use-cases/backup/
: 目前有支援 local, remote(透过ssh), 还有 aws s3, google cloud storage, azure blob
: 我们工具只要是连得到你存放的位置,都可以同步
: 但是也先说明一下,目前我们的东西对 linux 跟 mac 比较友善
: 如果要在 windows 用可能要装 WSL
: 相关资讯在这里 https://artivc.io/usage/windows-supports/
: 有问题也可以私讯我
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.25.57.79 (台湾)
: ※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1649817739.A.49E.html
: 推 jackyhuang: 看起来和git非常相似,好奇开发这套的动机是什麽? 04/14 23:53
: 推 chchwy: 回楼上 不就为了版控大档? 04/18 19:49
感谢询问,来说说动机
首先 git 是 source code version control
ArtiVC 是给 data version control
这是最大的不同
source code 需要好的 diff/branch/merge 的机制
所以 git 的解决方法是每个 local 都有 local repository
所以你的所有 version control 的动作都是在 local 做
最後再透过 push/pull/fetch 跟远端同步
但是这样做对 data version control 的缺点是
有时候 data 太大,你可能只要一个版本的资料
再来就是 git server 成本太高,所以 github/gitlab 都有档案上限
当然有很多人试着从 git extension 做解决。
业界比较有名的两个 git lfs 跟 dvc
git lfs 是 github 出的,
https://git-lfs.github.com/
他让server多了一个endpoint专门处理大档案,他会特别的处理。
但是缺点也很明显
第一个价钱不便宜,
第二个不能放在自己的 storage (例如s3)
再来就是你要特别指定哪些东西叫做大档案
另外一个是 dvc
https://dvc.org/
dvc 不在 server 做手脚
而是 client 自己有两个 repo,一个是 git repo,一个是 dvc repo
但是很麻烦的也是,你要指定哪些在 git,哪些在 dvc
但是 dvc 是可以把资料放在所有主流的 cloud storage。
但是如果有做资料的人可能都有同样的想法
我的大资料要放哪? 当然是放在 s3 或是各个云端平台的 cloud storage
如果资料要放那,那为什麽我版控还需要另外一个 git server 去做版控?
何不直接在 cloud storage 做版控?
如果我一个 service 就可以解决的 service,那为什麽要两个 service?
不管用 git lfs 或是 dvc,data就是二等公民
即使你的 project 没有 code,你还是需要开个 git repo
可能有人会说,可是我就是想要 data 跟 code 一起 version control 啊
我会跟你说,code的进版跟data的进版是两回事
例如你有个 project 是要爬股票资料
你可能写好了之後 code 都不需要再动了
但是你的 data 会一直进版啊,因为永远都有新的资料。
另外有人可能会说,我根本不需要版控啊
反正我在 s3 上面每有新版本就开心目录就好了
以我的经验来讲,做 data project 有些时候data producer
跟 data consumer 是不同人
对於一些不定时更新的 data,我还是希望有版号
最好可以像是 git 一样,我可以 pull 最新版本,或是很明确我用的是哪个版本
data version control 不是必要,但是是一个好的 practice
就像 source version control,我们还是可以开目录或是包个zip/tgz档名放版号
但是如果要有更好的quality 更好的 process,就需要更多的工具辅助
而回到动机,就是我觉得 data version control
所有的 data version 应该发生在你放data的storage
不是 git repo,也不是一个外部的一个 dataset/model registry
而是你的 s3,你的 datalake,或是你的NFS server
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.25.103.224 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1650504654.A.83A.html
1F:推 quickbym1: 推 04/21 13:35
2F:推 Odia: git lfs有收费喔!还以为是免费的 04/21 15:42
3F:→ popcorny: git lfs本身是open source,但用github上的超过额度要钱 04/21 15:49
4F:→ kojj: 要钱的产品,还有一个选择 "Perforce" 04/21 17:08
5F:推 lf2net: lfs 有人有做plug-in 可以改变 blob的reference路径,gith 04/21 18:23
6F:→ lf2net: ub 找一下就有了 04/21 18:24
7F:推 appleboy46: 有看有推 04/21 21:29
8F:推 nicetw20xx: 推分享 04/22 08:49
9F:推 qrtt1: 有下有推 04/22 09:17
10F:→ Chikei: lfs.url表示:... 04/22 10:56
抱歉,我git lfs说得不够精确
如果你自己架git lfs server,当然有机会放在别的storage..
github有open source他们的git lfs reference implementation
也有人推放到支援放到s3的方案
但是这都是可行但是不会我选择的方案
理由是如果要那麽麻烦就去用dvc就好了,
会选择 git lfs 对我只有一个考量,就是我的git repo说有支援git lfs
然後我也不care资料实际放在哪里,可存的量跟费用我可以接受
但不管怎麽样,这都说明了现在放version control 大档的难处
只是为了这个需求还要operate一个git lfs server是否太搞刚?
※ 编辑: popcorny (114.25.88.185 台湾), 04/23/2022 06:59:09
11F:推 x246libra: 给推 04/23 10:19
12F:推 jackyhuang: thanks for the explanation! 04/24 03:10
13F:推 wulouise: 就算git lfs不是first class citizen...他们在git下XD 04/29 23:39