[Azure][DevOps]針對 Azure DevOps 的 Repository 來做備份 ( 1/2 )

備份 Repository 之前我們先確定哪些動作可以透過 UI 來進行,以及那些可以短時間內來做回復,而避免使用到備份檔案,並且了解相關的時間限制,來確定我們需要備份的週期。

最近因為在處理 ISO27001:2022 的部分,因此開始針對所使用的資料庫、程式碼和組態設定來做相關的風險檢查,針對資料庫的部分就如同前面一篇的說明,除了密碼管理、防火牆之外,還加上容錯移轉、異地複寫複本、長時間備份和時間點復原這些措施,確保資料能萬無一失的被保存起來。那接下來就要來針對程式碼的管控了。

以往對我來說放在 Azure DevOps 上搭配 Git 的管理,應該不可能會有程式不見的狀況吧 ? 但不管如何如果說沒有備份的機制,視乎很難去說明這就一定是安全的,因此就花了一點時間來練習和測試,確保程式碼能妥善被保存。


首先是先針對誤刪 Project 的情況,如果需要去救回來的時候,可以在 Organization Settings 裡面找到最近被刪除過的專案,這裡會保存 28 天的歷史專案,因此基本上一個月內都應該還是很安全。

接下來就是針對 Repository 刪除的處理,這個部分會稍微麻煩一點,因為目前沒有 UI 的介面可以執行,只能自己透過下指令的方式來進行處理。

會需要以下相關的 API 資料

  1. 取得刪除的 Repository ( Repositories - Get Deleted Repositories )
  2. 取得垃圾桶中 Repository ( Repositories - Get Recycle Bin Repositories )
  3. 還原垃圾桶中 Repository ( Repositories - Restore Repository From Recycle Bin )

因此有上面三份文件之後,我們要先取得可以進行維護的 PAT  (Personal Access Token) 來進行。

首先我們利用第一個取得刪除的 Repository 的API , 透過相關工具去呼叫後,則可以看到我們刪除掉的 Repository 的名稱和 Id , 這個 Id 要保留下來,後續我們需要透過這個 Id 來進行回復

GET https://dev.azure.com/{organization}/{project}/_apis/git/deletedrepositories?api-version=7.0

或者是您要用第 2 個的取得垃圾桶中 Repository 的API , 這兩個都可以去取得相關的資料,反正重要的是取得 Id,就看您喜歡用哪一個 API 了。

GET https://dev.azure.com/{organization}/{project}/_apis/git/recycleBin/repositories?api-version=7.0

當取得 Id 之後,接下來我們就可以使用第 3 個 API 來進行回復了

PATCH https://dev.azure.com/{organization}/{project}/_apis/git/recycleBin/repositories/{repositoryId}?api-version=7.0

這個 API 主要有兩個要注意的地方,一個是要使用 PATCH 的方法,一個是 Body 的部分要記得設定 deleted : false 的屬性。

當執行完上述的指令之後,就可以把我們刪除的 Repository 給救回來了。