Backup
Git Backup /home 與其中的其他儲存庫
我正在嘗試對我的
/home
目錄進行自動備份。理論上,通過在 cronjob 中執行它很簡單:cd /home git add . git commit -m "nightly backup" git push
其中 push 會將更改推送到遠端備份伺服器。
我遇到的問題是目錄中是否有 git repo,
/home
例如/home/tom/projects/myproject/.git
. 備份任務執行並將所有更改推送到伺服器。但是,任何包含儲存庫的目錄現在在伺服器上都是空白的。我意識到這可以用子模組來處理。但是,這有幾個缺點:
- 每個子模組都必須在父倉庫中註冊(這可以是自動化的,但會有點麻煩,遞歸到每個目錄並在每次 cron 執行時添加子模組)
- 子模組中未送出的更改將不會被備份,這對於備份來說是不可取的行為,我想要所有文件的實時快照,無論它們是否在其他地方被跟踪
我意識到還有其他工具,例如 rsync 可以做到這一點,但是讓 git 跟踪一段時間內的變化會很好。有沒有辦法讓 git 將其他儲存庫視為普通文件(包括它們的 .git 目錄!)
一個解決方法是在 cron 中執行類似這樣的東西:
- 遞歸到所有子目錄
- 查找 .git 文件夾
- 將 .git 重命名為其他名稱
- 然後執行標準的 add/commit/push
這將起作用,但需要在任何恢復過程中重命名所有 .git 文件夾。有沒有辦法在沒有這種成本的情況下實現這一目標?
Git over git 有點瘋狂 :)
- 嘗試使用您的儲存庫添加到 gitignore 目錄。
- 添加您的 cron 腳本命令以在送出之前歸檔您的儲存庫。
- (可選)設置自動送出/推送到所有包含的儲存庫。
恕我直言,1 和 2 對你有好處。
cd /home tar -zcvf my-gits-backup.tar.gz path/to/git/projects git add . git commit -m "nightly backup" git push
我還有一堆 git 儲存庫,並在註銷、重新啟動或關閉時通過rsync將它們備份到我的雲中。它是您將在那裡找到的最簡單的解決方案。
我也聽說過bup ( https://github.com/bup/bup ),但從未使用過它,所以我無法告訴你它的效果如何。
我自己,我不會使用 git 來備份多個 git 儲存庫(因為我不需要備份歷史記錄) 我唯一感興趣的歷史記錄已經在 git 儲存庫中!