1.Gitea與SQLSERVER定期備份
1.1. 前言
架設Gitea Server
時是搭配MSSQL
。同時研究gitea內鍵備份功能中,發現備份方式是以SQL指令進行備份,這個部分預期的結果不會是我想要的…
並試著還原…還原過程不是很順暢,如果災害發生時,時間通常較為緊急。所以,才想到要搭配維護計畫的方式進行資料庫備份。
接下來,會以gitea備份
與維護計劃備份
進行筆記記錄。
1.2. Gitea 定期備份
1.2.1. Gitea 備份指令
在使用gitea dump
指令時,請先關閉gitea服務,備份時command line 才不會噴錯誤,指令如下:
1 | C:\gitea>gitea dump |
執行後結果如下:
在c槽會看到一個壓縮檔
解壓縮內容如下
打開gitea-db.sql
查看
1 | /*Generated by xorm 2024-01-03 09:22:54, from mssql to mssql*/ |
1.2.2. 撰寫BAT腳本
gitea_backup.bat
1 | REM 更改當前的字符編碼頁(code page)。而 65001 是 Unicode UTF-8 的字符編碼頁。 |
延伸學習
forfiles /p C:\Backup\Gitea\ /s /m *.zip /d -7 /c “cmd /c echo @file the zip file is over 7days”
以上指令會print出符合刪除條件的檔案
1.2.3. 造假資料測試備份運行結果
這邊造假了好幾個zip檔案如下:
因為forfiles
指令會看建立日期,因此再透過以下指令(powershell),修改檔案的日期:
1 | $(Get-Item C:\Backup\Gitea\20231226.zip).creationtime=$(Get-Date "12/26/2023") |
不過,這個備份檔還是有一些其它以檔案形式存在的資料,之後還原還是會用到,記得之後再設定排程定期備份。
1.3. 維護計畫定期備份
1.3.1. 安裝資訊
- SQLSERVER 2022 Developer版
- SSMS 19.2
1.3.2. 確認版本
1.3.3. 勾選Integration Services
因為之前已經安裝過了,所以上圖看起來已經是預設打勾,無法取消勾選。簡單來說,這項要勾。
1.3.4. 連線至新個體
使用瀏覽其他
資料庫引擎下,就會看到剛剛新增的個體
1.3.5. SSMS工具確認維護計劃選項
在developer
版本下,並且在之前有勾選Integration Services
安裝,正常在這邊就會看到下圖的選項維護計畫
1.3.6. 確認啟動SQL Server Agent
在使用維護計畫
功能時,請先確認SQL Server Agent
是否有啟動
1.3.7. 服務啟動設定確認
同樣,再次檢查服務這邊是否有啟動
1.3.8. 維護計劃備份
設定定期每日備份
1.3.9. 維護計劃清除
定期清除,僅保留7天,可以透過這個方式達成。
下圖是維護清除工作的設定細項,其中可以看到可以設定7天的選項
1.3.10. 確認備份結果
可以看到有一個名字很常的,副檔名為bak的就是我們的備份檔案囉,如下:
1.4. 參考連結
- SQL Server 每日定期備份與定期刪除舊有備份檔
- 這篇有詳細的截圖教如何設定維護計畫
- 如何在批次檔(Batch)中實現 sleep 命令讓任務暫停執行 n 秒
- 參考保哥的文章說明
- forfiles Command 教學 | 教你使用forfiles 尋找及刪除過期的檔案
- 這篇針對forfiles的說明很有幫助
- 如何使用 PowerShell 變更建立日期、存取日期和修改日期屬性
- 從這篇參考修改日期的方法