使用python來備份SVN
前言
備份SVN這件事以前都不是我會負責的事,但一定有做,最近添購了一台NAS,想想是個機會,就來研究一下,在此做個紀錄。內容
如果需要備份SVN的話就需要"svnadmin",所以請先確認該命令是否可以使用。備份SVN的命令如下svnadmin dump c:\svnrepo --incremental > c:\backup\xxx.dump
紅色的部分是檔案庫的位置,藍色的則是輸出的備份檔,請依據需求更改。如果要用備份檔來還原檔案庫的話命令如下
svnadmin load c:\svnrepo < c:\backup\xxx.dump
紅色的部分是還原檔案庫的位置,藍色的則是使用的備份檔。整個過程用起來相當簡單,但備份這件事通常會希望是"自動執行"的,而不是需要用"手動執行"命令才動作,所以接著來介紹如何自動執行。
排程這個功能在Windows與Linux都有這個功能,它可以用來每隔一段時間來時執行某個命令,幸運的,買來的NAS有視窗化的操作來編輯排程,所以這部份很快就完成了,至於Windows與Linux的排程實際上怎麼使用以後有機會再研究。
使用Python來執行備份命令,為什麼不直接用bash呢?唯一的考量就是跨平台,加上Python使用起來比較靈活,所以就決定用Python了。執行的時候通常會希望可以依據備份的時間來分資料夾,所以我實作了以下的範例碼
import os import time backUpRootDir = '/homes/hosee/SVNBackUp/' backUpFileName = 'svnBackUp.dump' # dirName = time.strftime("%Y%m%d_%H%M%S", time.localtime() ) os.system('mkdir -p '+backUpRootDir+dirName) os.system('svnadmin dump /homes/hosee/svn/repo --incremental > '+backUpRootDir+dirName+'/'+backUpFileName)
這個範例碼會依據備份的時間製作資料夾,並在該資料夾儲存備份檔。範例碼的路徑請依據需要修改,如"backUpRootDir"與svnadmin的檔案庫位置。最後,就是只要用排程來啟動Python的script就完成了。
沒有留言:
張貼留言