Backup

Git Backup /home 與其中的其他儲存庫

  • April 19, 2016

我正在嘗試對我的/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 有點瘋狂 :)

  1. 嘗試使用您的儲存庫添加到 gitignore 目錄。
  2. 添加您的 cron 腳本命令以在送出之前歸檔您的儲存庫。
  3. (可選)設置自動送出/推送到所有包含的儲存庫。

恕我直言,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 儲存庫中!

引用自:https://unix.stackexchange.com/questions/277524