gitlab自动备份

为了防止gitlab服务器硬盘损坏等问题导致代码丢失,最好定时自动备份git仓库并保存在远程文件服务器上,下面是我的配置过程

gitlab存储的目录
在ubuntu中默认的gitlab仓库是在 /var/opt/gitlab/git-data/repositories 中,gitlab的备份文件保存在 /var/opt/gitlab/backups 之中

修改备份保存的目录和保存时间
我这里gitlab服务器挂载了两块硬盘,git仓库在第一块硬盘(/),于是我想要将gitlab的备份放在第二块硬盘中(/backups).如果没有这样的需求,只是将git备份在远程服务器的话,这一步可以省略.

修改gitlab配置文件

打开/etc/gitlab/gitlab.rb

  sudo vi /etc/gitlab/gitlab.rb

找到

  #gitlab_rails['manage_backup_path'] = ture
  #gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"

两行,去掉注释符号’#’,然后将 /var/opt/gitlab/backups 改成自己想要存放的备份文件路径 /backups

找到

  #gitlab_rails['backup_keep_time'] = 604800

去掉注释符号’#’,将604800改成自己想要的保存时间,这里单位是秒,604800表示一周,我改成了86400,最多保存一天

更新gitlab配置

sudo gitlab-ctl reconfigure
创建备份脚本并设置权限

touch /home/gitlab/auto-backup.sh
echo “gitlab-rake gitlab:backup:create” > /home/gitlab/auto-backup.sh
sudo chmod +x /home/gitlab/auto-backup.sh
尝试运行一遍auto-backup.sh脚本,看看在/backups目录下是否生成.tar格式的gitlab备份文件

设置定时运行备份脚本

我这边设置的在每天的凌晨2点进行备份

sudo echo "0 2 * * * root /home/gitlab/auto-backup.sh -D 1" >> /etc/crontab
sudo service crond restart

将备份的文件copy到远程文件服务器
修改自动备份脚本 auto-backup.ssh ,在备份完成后将文件copy到远程文件服务器

echo "sshpass -p $remote_password scp -r /backups $remote_user@$remote_host:$dir" >> /home/gitlab/auto-backup.sh

这里 $remote_password 替换成远程服务器的登录密码, $remote_user 是远程服务器登录用户, $remote_host 是远程服务器域名或IP, $dir 是远程服务器的保存目录

至此,gitlab服务器的备份硬盘和远程文件服务器上都有一份gitlab的备份文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一份 GitLab 自动备份脚本及增量备份的方案。 1. 自动备份脚本 首先,您需要创建一个脚本文件,例如 `gitlab_backup.sh`,并将其放置在 GitLab 服务器上。以下是一个简单的备份脚本示例: ```bash #!/bin/bash # 设置备份目录 BACKUP_DIR="/mnt/backups/gitlab" # 创建备份目录 mkdir -p $BACKUP_DIR # 执行备份命令 gitlab-rake gitlab:backup:create BACKUP=timestamp # 将备份文件移动到备份目录 mv /var/opt/gitlab/backups/* $BACKUP_DIR/ ``` 该脚本将会执行 GitLab备份命令,将备份文件移动到指定目录中。 2. 增量备份方案 要执行增量备份,您需要使用 GitLab 的 `gitlab-backup` 命令的 `SKIP` 参数。该参数将跳过已备份的数据,只备份最新的更改。 以下是一个示例脚本,可以在每天执行一次增量备份: ```bash #!/bin/bash # 设置备份目录 BACKUP_DIR="/mnt/backups/gitlab" # 创建备份目录 mkdir -p $BACKUP_DIR # 获取最近备份的时间戳 LAST_BACKUP=$(ls -Art $BACKUP_DIR | tail -n 1 | cut -d'_' -f2) # 执行备份命令 gitlab-rake gitlab:backup:create BACKUP=timestamp SKIP=$LAST_BACKUP # 将备份文件移动到备份目录 mv /var/opt/gitlab/backups/* $BACKUP_DIR/ ``` 该脚本将检查备份目录中最新的备份文件的时间戳,并将其传递给 `gitlab-backup` 命令的 `SKIP` 参数。这将导致 GitLab备份自上次备份以来更改的数据。 希望这些信息能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值