gitlab数据备份
1、Gitlab 创建备份
1.1、手动备份
创建备份文件
使用一条命令即可创建完整的Gitlab备份。
gitlab-rake gitlab:backup:create
使用命令会在/var/opt/gitlab/backups目录下创建一个压缩包,这个压缩包就是Gitlab整个的完整部分。
[root@server ~]# gitlab-rake gitlab:backup:create
生成完后,/var/opt/gitlab/backups目录下创建一个名称类似为*.tar的包
扩展知识
# 配置文件须备份
/etc/gitlab/gitlab.rb
# nginx配置文件
/var/opt/gitlab/nginx/conf
# 邮件配置备份
/etc/postfix/main.cfpostfix
2、更改Gitlab备份目录
也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
修改为你想存放备份的目录即可
# 更改gitlab备份目录
gitlab_rails['backup_path'] = "/home/gitlab-backup"
# 指定备份后数据存放的路径、权限、时间配置
## 开启备份功能
gitlab_rails['manage_backup_path'] = true
## 指定备份的路径
gitlab_rails['backup_path'] = "/home/gitlab-backup"
## 备份文件的权限
gitlab_rails[‘backup_archive_permissions’] = 0644
## 备份保留时间
gitlab_rails[‘backup_keep_time’] = 7776000
# 修改完后重新加载配置文件
gitlab-ctl reconfigure
# 创建备份目录并授权
chown -R git:git gitlab-backup
# 使用命令创建完整的Gitlab备份
gitlab-rake gitlab:backup:create
# 这个压缩宝就是gitlab的整个完整部分
3、Gitlab自动备份
实现每天凌晨2点进行一次自动备份:
通过crontab使用备份命令实现,需重启cron服务
# 方法一
## 使用定时任务
crontab -e
## 输入相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
### 注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
## 查看周期性计划任务 crontab -l 修改时间进行验证 date -s 01:59:30
4、脚本执行gitlab 备份
[root@server home]# cat gitlan.sh
#!/bin/bash
a="/home/gitlab-backup"
back="/home/git_back"
date="$(date +%Y-%m-%d)"
logfile=$back/$date.log
gitlab-rake gitlab:backup:create > /dev/null
b=`ls $a |wc -l`
if [ $b -eq 0 ];then
echo "$date.tar 备份失败" >> $logfile
elif [ $b -gt 0 ];then
echo " $date.tar 备份成功" >> $logfile
fi
mv $a/* $back/$date.tar
# 执行脚本后,会在/home/git_back下生成日志文件及备份的项目包
# 将脚本加入定时任务执行
crontab -e
0 2 * * * /home/gitlab.sh
Git知识扩展
git status #上次提交后是否对文件再做了修改项目
git add . #添加所有的变动
git checkout -b 文件夹名称 #创建本地分支并切换分支 git checkout -b pr/ffr
git commit -m “描述” #提交修改 git commit -m “修改什么”
git merge origin/develop “本地分支” #合并origin/develop上别人所做的修改到自己的本地分支 git merge origin/develop pr/ffr
git push origin “本地分支” #推送本地分支到远程,并建立联系 git push origin pr/ffr
git rebase -i 编号 #合并多次提交,将前几次的提交合并为一次
git checkout 分支名 #切换分支 git checkout pr/FFR-color git cherckout develop
git pull #更新当前分支的状态
git branch #列出本地分支
git branch -a #列出本地分支与远程分支
git branch -D 分支名 #删除分支(目前仅用于删除本地分支)
git remote -v #可以查看远程仓库信息
git branch 分支名 #仅仅创建 一个新分支,并不会自动切换到新分支中去
git rebase --abort #退出git rebase
git reset 提交编号 #git rebase -i 提交编号,之后出现错误,可以回退到之前未合并时的日志状态
git commit --amend -m “描述” #修改上一次的提交的描述
git stash #暂存上一次的修改,准备切换到其他的分支
git stash pop #还原上一次的修改,将暂存的修改加入到新的分支