centos

centos gitlab备份与恢复技巧

小樊
51
2025-09-17 18:29:54
栏目: 智能运维

CentOS GitLab备份与恢复技巧

一、备份技巧

1. 手动备份(全量)

使用gitlab-rake命令创建全量备份,包含Git仓库、数据库、用户/组、权限等所有关键数据,默认存储在/var/opt/gitlab/backups目录。命令:
sudo gitlab-rake gitlab:backup:create
备份文件命名格式为TIMESTAMP_gitlab_backup.tar(如1713350400_gitlab_backup.tar),便于按时间识别。

2. 配置备份路径与权限

若需修改默认备份路径,编辑/etc/gitlab/gitlab.rb文件,添加:
gitlab_rails['backup_path'] = "/mnt/backups"(自定义路径需存在且有写入权限)
同时可设置备份文件权限(如gitlab_rails['backup_archive_permissions'] = 0644)和保留时间(如gitlab_rails['backup_keep_time'] = 604800,单位:秒,此处为7天)。修改后需执行sudo gitlab-ctl reconfigure使配置生效。

3. 自动化定时备份

通过crontab设置定时任务,实现每日自动备份。例如,每天凌晨2点执行备份:
crontab -e → 添加行:0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
建议将备份脚本(包含备份与压缩逻辑)加入定时任务,提升自动化程度。

4. 远程备份(增强安全性)

将本地备份文件同步至远程服务器(如通过rsync),避免本地磁盘故障导致数据丢失。示例脚本(auto_backup_to_remote.sh):

#!/bin/bash
LocalBackDir=/var/opt/gitlab/backups
RemoteBackDir=root@192.168.1.100:/remote/gitlab_backups
find $LocalBackDir -type f -mmin -60 -name '*.tar*' | while read file; do
    scp "$file" "$RemoteBackDir"
done

添加定时任务(每天凌晨0点执行):0 0 * * * /root/auto_backup_to_remote.sh
远程服务器需配置SSH免密登录(通过authorized_keys),确保同步无需手动输入密码。

5. 备份文件管理

定期清理过期备份,节省存储空间。例如,删除/var/opt/gitlab/backups目录下超过30天的备份文件:
find /var/opt/gitlab/backups -type f -mtime +30 -name '*.tar*' -exec rm -rf {} \;
可将此命令加入定时任务(如每天凌晨1点执行),实现自动清理。

二、恢复技巧

1. 准备工作

2. 恢复流程

3. 配置文件恢复

备份文件不包含/etc/gitlab/gitlab.rb(配置文件)和/etc/gitlab/gitlab-secrets.json(密钥文件),需手动备份这些文件(恢复前复制至安全位置),并在恢复后将其放回原路径,然后执行sudo gitlab-ctl reconfigure重新加载配置。

三、关键注意事项

0
看了该问题的人还看了