首页 > 其他分享 >gitlab备份与还原

gitlab备份与还原

时间:2023-06-26 10:22:05浏览次数:37  
标签:code 备份 gitlab 备份文件 还原 服务器 backup

一.备份
配置修改
vim /etc/gitlab/gitlab.rb

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab-backups"   //备份文件存储路径,如果没有配置,则备份数据到默认”/var/opt/gitlab/backups“下
gitlab_rails['backup_archive_permissions'] = 0644   //生成的备份文件权限
gitlab_rails['backup_keep_time'] = 2592000      //默认备份保留天数为7天(604800秒,这里是30天)

更改完成后重载配置文件

gitlab-ctl reconfigure

本地部署完成的gitlab服务器上操作,手动备份

gitlab-rake gitlab:backup:create

远程备份数据

  1. gitlab服务器A(192.168.80.111),备份服务器B(192.168.80.112)

  2. 配置服务器A到B免密登录,在A服务器执行 ssh-keygen -t rsa 命令,生成密钥文件

  3. A服务器执行 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected], 将公钥文件传输的备份服务器B,并生效

  4. 创建远程备份脚本
    vim /deploy/bin/backup_code.sh

#!/bin/bash

# gitlab 服务器备份路径
#LocalBackDir=/var/opt/gitlab/backups #默认备份路径
LocalBackDir=/data/gitlab-backups #修改配置文件后,自定义的备份路径

# 远程备份服务器 gitlab备份文件存放路径
RemoteBackDir=/data/code_backup

# 远程备份服务器 登录账户
RemoteUser=root

# 远程备份服务器 IP地址
RemoteIP=192.168.80.112

#当前系统日期
DATE=`date +"%Y-%m-%d"`

#Log存放路径
LogFile=$LocalBackDir/log/$DATE.log

#执行备份
gitlab-rake gitlab:backup:create

# 查找 gitlab本地备份目录下 时间为60分钟之内的,并且后缀为.tar的gitlab备份文件
BACKUPFILE_SEND_TO_REMOTE=$(find $LocalBackDir -type f -mmin -60  -name '*.tar*')

#新建日志文件
touch $LogFile

#追加日志到日志文件
echo "Gitlab auto backup to remote server, start at  $(date +"%Y-%m-%d %H:%M:%S")" >>  $LogFile
echo "---------------------------------------------------------------------------" >> $LogFile

# 输出日志,打印出每次scp的文件名
echo "---------------------The file to scp to remote server is: $BACKUPFILE_SEND_TO_REMOTE-------------------------------" >> $LogFile

#备份到远程服务器
scp $BACKUPFILE_SEND_TO_REMOTE $RemoteUser@$RemoteIP:$RemoteBackDir

#追加日志到日志文件
echo "---------------------------------------------------------------------------" >> $LogFile

#删除备份服务器上旧的备份文件
ssh $RemoteUser@$RemoteIP "/deploy/bin/auto_remove_old_code_backup.sh"

5.修改脚本权限

chmod 777 /deploy/bin/backup_code.sh

6.创建日志存放目录

mkdir -p /data/gitlab-backups/log

7.定时删除备份服务器上的备份文件,在备份服务器B上创建定时删除脚本
vim /deploy/bin/auto_remove_old_code_backup.sh

#!/bin/bash
  
# 远程备份服务器 gitlab备份文件存放路径
GitlabBackDir=/data/code_backup

echo '查找远程备份路径下,超过3天且文件后缀为.tar 的 Gitlab备份文件 然后删除'
find $GitlabBackDir -type f -mtime +3 -name '*.tar*' -exec rm {} \;

8.修改脚本权限

chmod 777 /deploy/bin/auto_remove_old_code_backup.sh
  1. 在服务器A添加定时任务
    vim /etc/crontab
#每天23时执行脚本
0  23   * * *  root    /deploy/bin/backup_code.sh
``

二. 备份恢复

将备份文件拷贝到待恢复测试的服务器上,注意:GitLab恢复数据的时候需要满足版本一致,即进行恢复的GitLab的版本和备份数据时的GitLab的版本一致。
1、安装git
2、安装gitlab
3、修改配置文件
4、启动gitab服务
5、停止与连接 数据库有关的进程
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

这里的备份文件名是  1687460936_2023_06_22_14.3.3_gitlab_backup.tar

gitlab-rake gitlab:backup:restore BACKUP=/var/opt/gitlab/backups/1687460936_2023_06_22_14.3.3

注意!!!! 指定备份文件时得把  _gitlab_backup.tar去掉 才可以正常恢复,否则会报错说找不到文件

标签:code,备份,gitlab,备份文件,还原,服务器,backup
From: https://www.cnblogs.com/hi-lijq/p/17504669.html

相关文章

  • docker 安装gitlab
    一.安装访问DockerHub官网搜索:https://hub.docker.com/search?q=gitlab&type=image一个社区版,一个企业版。我们安装社区版,选择GitlabCommunityEdition,dockerpullgitlab/gitlab-ce:14.3.3-ce.0dockerrun-d-p8443:443-p8088:80-p222:22--namegitlab--restart......
  • 镭速——简单、快速、自动备份数据到云端
    备份数据是一个重要的举措,确保数据在事故或故障时能够得到恢复。但是,备份数据需要时间和精力,将数据保存在本地设备也可能会遇到丢失、盗窃或损坏等问题。如何能够简单快捷地备份数据,而且还能保证数据放心呢?这就需要使用自动备份到云端的解决方案。假设一位影视制作工作者,拥有大......
  • VMware虚拟机ubuntu备份文件到百度网盘+定时任务自动备份
    在虚拟机里弄东西,免不了有些文件需要保存,手动保存太麻烦,用工具设置成自动备份,还不怕遗忘。一、文件同步方式一:1.在你的物理机上找一个目录假设:D:\Win-share2.在VM虚拟机里/mnt/hgfs/路径下就可以看到分享的物理机目录了。3.设置百度网盘同步选择文件夹是选择物理机......
  • [WePE]使用Dism++备份系统是报错“磁盘空间不足”
    造冰箱的大熊猫@cnblogs2023/6/24问题:使用安装了WePE的优盘启动计算机,进入WinPE环境后使用Dism++备份操作系统时,提示“磁盘空间不足”。原因:WePE会创建一个卷标为WEPE、盘符为X、容量为8GB的虚拟分区,用于存放WinPE系统。Dism++在进行操作系统备份时,先将数据写入X:\Windows\temp......
  • 在system32文件夹中,config子文件夹存储了Windows注册表的备份文件。注册表是Windows操
    system32是Windows操作系统中的一个文件夹,它位于C:\Windows\system32路径下。这个文件夹包含了许多重要的系统文件和设置,它们对于操作系统的正常运行非常关键。在system32文件夹中,config子文件夹存储了Windows注册表的备份文件。注册表是Windows操作系统中的一个重要组成部分,它保......
  • 备份 mysql数据
    Mysql数据库的常用备份方法是使用使用mysqldump,其命令格式如下:#mysqldump[options]database[tables]其中参数的含义为:options:代表mysqldump的选项,通过mysqldump–help可以查到。database:代表将要备份的数据库tables:代表将要备份的表,如果不指定任何表,则备份整个数据库......
  • Oracle 19c新特性介绍(仅包含RAC、DG和备份)
    本文参考:OracleDatabaseDatabaseNewFeaturesGuide,19c,目前版本为2023年03月。摘抄RAC、DG和备份这三块的新特性介绍。1RAC新特性1.1Grid零停机补丁升级1.1.1切换Grid主目录原文摘抄:Usethe-switchGridHomeoptiontoswitchfromthesourceOracleGridInfrastruct......
  • gitlab忘记root密码解决方法
    #切换到git用户[root@gitlab_3_45~]#su-git#查看gitlab-rails的目录-sh-4.2$ls-lgitlab-railstotal40drwx------2gitroot4096Feb252020etc-rw-r--r--1rootroot8Feb252020REVISION-rw-r--r--1rootroot58Feb252020RUB......
  • mysql的备份恢复之-mysqldump
    1.目录目录1.目录2.一.背景2.1.分类2.2.基本实现原理3.非一致性备份和一致性备份原理3.1.非一致性备份原理:3.2.一致性备份原理:4.常用备份命令:4.1.建议生产上使用的备份命令:4.2.常用备份选项:4.3.参数详解:4.4.导入4.5.导入时记录日志到文件中2.一.背景2.1.分类......
  • mysql的备份恢复之percona-xtrabackup物理备份
    1.mysql的备份恢复之percona-xtrabackup物理备份目录1.mysql的备份恢复之percona-xtrabackup物理备份1.1.背景1.2.Xtrabackup是什么?1.3.使用场景1.4.Xtrabackup可以做什么?1.5.Xtrabackup版本及下载地址1.6.PerconaXtraBackup工作流程1.7.Xtrabackup使用说明文档1.8.X......