2014-09-27 63 views
1

我正在開發一個從一羣服務器收集特定數據的php應用程序。備份數據庫以及與數據庫相關的文件

我經常備份這些數據。很多時候我也想在開發時將數據庫恢復到某種狀態。例如,可能存在與某個備份狀態相關的錯誤。 我已經設置了將數據庫轉儲到新文件的bat文件,並讓我恢復到某個轉儲文件。 但是,數據現在還包含數據庫字段指向的文件系統文件。 如何以方便的方式同步備份數據庫和相關文件,並使其與其餘項目文件隔離? 寫這篇文章時想到的一種方式是將與數據庫相關的所有文件放在一個公共文件夾中,然後在結帳時提交一個嵌套的git存儲庫(「Submodules」)以及轉儲數據庫的git-hooks 。 但我沒有使用子模塊的經驗,並想知道這是否是一個明智的做法?

回答

1

我會避免在git倉庫中存儲一個大的二進制文件。

我寧願將數據庫保存的文件分開,但使用特殊名稱:包含回購的SHA1的名稱。
我將備份的同時回購,as a bundle(意爲只有一個文件)

這樣一來,你把兩個文件(即2)每次保存:一個數據庫,一個用於回購。

+0

謝謝!你認爲你可以在實踐中詳細說明你將如何做到這一點?我並不熟悉bundle,但我只是查看它,如果我理解正確,它是一個包含整個存儲庫的文件,無論是單個提交還是一系列提交。那麼我們是在談論一個單一的提交還是多個?你是否會將回購作爲新提交的捆綁包保存下來,以及與之相關的數據庫轉儲,然後將它們放在某種驅動器或類似的驅動器上?所有數據庫相關的文件應該在回購站內?我認爲我誤解了一些東西,因爲這對我沒有意義。 – Clox 2014-09-28 09:40:03

+0

@Clox是的,一個包可以有完整的回購歷史記錄,或者它可以是一個增量包(我會建議,如果大小不是太重要,只能製作完整的包)。 「所有數據庫相關的文件應該在回購站內」:如果這些文件是文本文件,那麼是的。 – VonC 2014-09-28 09:55:28

+0

@Clox我一直使用bundles進行備份:請參閱http://stackoverflow.com/a/23712022/6309和引用的腳本(https://github.com/VonC/compileEverything/blob/1b01af253eb938efe8f04eb44f9e8af0d9633baa/sbin/ save_bundles#L111) – VonC 2014-09-28 09:57:16