PTT推薦

Re: [請益] 大型Git版本庫的備份或替代方案

看板Soft_Job標題Re: [請益] 大型Git版本庫的備份或替代方案作者
popcorny
(畢業了@@")
時間推噓 9 推:9 噓:0 →:4

※ 引述《popcorny (畢業了[email protected]@")》之銘言:
: 分享一下我們開發的工具
: 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://www.ptt.cc/Soft_Job/M.1649817739.A.49E
: 推 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留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.103.224 (臺灣)
PTT 網址

quickbym104/21 13:35

Odia04/21 15:42git lfs有收費喔!還以為是免費的

popcorny04/21 15:49git lfs本身是open source,但用github上的超過額度要錢

kojj04/21 17:08要錢的產品,還有一個選擇 "Perforce"

lf2net04/21 18:23lfs 有人有做plug-in 可以改變 blob的reference路徑,gith

lf2net04/21 18:24ub 找一下就有了

appleboy4604/21 21:29有看有推

nicetw20xx04/22 08:49推分享

qrtt104/22 09:17有下有推

Chikei04/22 10:56lfs.url表示:...

抱歉,我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

x246libra04/23 10:19給推

jackyhuang04/24 03:10thanks for the explanation!

wulouise04/29 23:39就算git lfs不是first class citizen...他們在git下XD