一、備份
1. docker執行備份
docker exec gitlab gitlab-rake gitlab:backup:create
預設將備份檔案儲存至docker的/var/opt/gitlab/backups/ 目錄
這條命令是在 Docker 容器內部執行 GitLab 的備份操作。讓我來解釋一下這個命令的各個部分:
docker exec:這是 Docker 命令,用於在正在執行的容器內部執行命令。
gitlab:指定要操作的容器名稱或 ID,即執行 GitLab 服務的容器。
gitlab-rake gitlab:backup:create:這部分是在 GitLab 容器內部執行的實際命令。具體來說:
gitlab-rake:是 GitLab 提供的用於管理資料庫和執行其他任務的命令列工具。
gitlab:backup:create:是使用 gitlab-rake 工具建立 GitLab 資料庫備份的命令。
透過執行這條命令,GitLab 將會在容器內部建立一個資料庫備份。這樣可以確保資料的安全性和可恢復性。
執行完會有一個警告
Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data
and are not included in this backup. You will need these files to restore a backup.
Please back them up manually.
這個警告是在執行 GitLab 備份時提醒您,備份檔案中不包含 gitlab.rb
和 gitlab-secrets.json
這兩個檔案,這兩個檔案包含了敏感資料,例如配置資訊和加密金鑰,因此在恢復備份時需要手動備份這兩個檔案。
為了確保完整的備份和恢復過程,請務必手動備份 gitlab.rb
和 gitlab-secrets.json
檔案。
2. 備份敏感資料
docker cp gitlab:/var/opt/gitlab/backups/1709697433_2024_03_06_13.6.2_gitlab_backup.tar /data/gitlab-bak/
docker cp gitlab:/etc/gitlab/gitlab.rb /data/gitlab-bak/
docker cp gitlab:/etc/gitlab/gitlab-secrets.json /data/gitlab-bak/
備份完成
二、資料的恢復
我們啟動新的容器,然後將剛才備份的檔案複製到容器裡,後面兩個檔案直接覆蓋即可
docker cp /data/gitlab-bak/1709697433_2024_03_06_13.6.2_gitlab_backup.tar gitlab:/var/opt/gitlab/backups/
docker cp /data/gitlab-bak/gitlab-secrets.json gitlab:/etc/gitlab/
docker cp /data/gitlab-bak/gitlab.rb gitlab:/etc/gitlab/
複製完之後,我們進入容器,進入備份目錄,執行如下命令
docker exec -it gitlab bash
gitlab-rake gitlab:backup:restore BACKUP=1709697433_2024_03_06_13.6.2
如果沒有許可權,則執行
chmod 777 檔名
恢復之後,我們重新載入配置,並重啟gitlab
gitlab-ctl reconfigure
gitlab-ctl restart