因此,git 共享儲存庫似乎或多或少完美地保持具有大 blob 的資料夾同步。我有大約 700 GB 的圖片和影片想要在我的電腦上分發,但是使用 git 而不添加任何其他內容會導致巨大的磁碟使用開銷,而這並不是真正需要的。
現在,使用 --shared (或 -s)進行複製為我提供了一個沒有本地物件儲存的 git 儲存庫(如果我理解正確的話),這幾乎正是我所需要的。但是,文件以「當要複製的儲存庫位於本機電腦上時...」開頭。 clone -s 透過 SSH 也能正常工作,但這讓我想知道如果要克隆的儲存庫是不是在本地機器上。由於 -s 的文檔以這句話開頭,我覺得整個案例沒有被涵蓋。除了刪除遠端的提交可能導致某些物件(可能仍在本地使用)被垃圾收集之外,我還需要注意什麼嗎? (無論如何這都不會發生,因為我想在伺服器上使用裸存儲庫)
答案1
我喜歡 git,但不幸的是,git 不是完成此任務的合適工具。
Git 旨在非常有效地保留大多數文字內容儲存庫的變更歷史記錄。雖然 git 確實支援保留二進位文件,但它必須將它們永遠保留在歷史記錄中,以便您可以簽出任何修訂版,這在磁碟空間方面非常昂貴。
另外,假設您的二進位檔案不可壓縮(圖片、影片、音樂等),git 物件儲存的大小將與樹結帳大致相同。換句話說,對於價值 700GB 的原始文件,物件儲存(.git
目錄)將消耗大約相同的量,然後當您開始提交(新增和刪除內容)時消耗更多。
您可以使用所謂的淺克隆,它只保留物件儲存中物件的最後修訂版本,但淺儲存庫只能克隆 - 不能提交。在這種情況下,主 git 儲存庫必須是正常的(不淺)並且仍然很大,但是所有淺克隆都將具有合理的大小。
保持更簡單的同步方案(如 rsync)可能會更好。然而,在這種情況下,你就失去了回顧歷史的能力——天下沒有白吃的午餐:(
答案2
我意識到這並沒有真正回答你的問題,但是......不會同步保持兩個資料夾同步容易得多嗎?