1.gitlab数据备份
1.1 更改配置文件
gitlab的配置文件为/etc/gitlab/gitlab.rb,把下列配置信息写入配置文件使其生效
#新增
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #gitlab默认备份目录,可修改
gitlab_rails['backup_archive_permissions'] = 0777 #生成的备份文件权限
gitlab_rails['backup_keep_time'] = 604800 #默认备份保留天数为7天
1.2 重载配置文件
gitlab-ctl reconfigure
1.3 编写gitlab备份脚本
vi /var/opt/gitlab/gitlab_backup.sh
#!/bin/bash
gitlab-rake gitlab:backup:create
chmod 777 /var/opt/gitlab/gitlab_backup.sh
1.4 备份文件同步远程服务器
1.4.1 设置远程服务器免登录
现有两个服务器A(192.168.1.188)、服务器B(192.168.1.189)
从服务器A向服务器B传送文件
服务器A输入下面命令生成配对密钥
ssh-keygen -t rsa
备注: -t代表密钥类型为rsa型,rsa是一种加密算法
遇到输入就一路回车用默认
生成的公钥文件在:cd /root/.ssh/
分别为私钥id_rsa和公钥id_rsa.pub
将id_rsa.pub放到服务器B的/root/.ssh/ 目录下
然后执行:
cat /root/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后:ssh root@192.168.1.189 就可以免密码登录,scp免密码传递文件
1.4.2 编写备份文件同步脚本
vi /var/opt/gitlab/gitlab_remote_backup.sh
#!/bin/bash
#本地备份目录
localBackupDir=/home/gitlab/gitlabbak
#远程服务器账号
remoteUser=root
#远程服务器目录
remoteBackDir=/devops/gitlab/gitlabbak
#远程服务器IP
remoteIP=134.99.22.29
#日志输出目录
backupLog=/var/opt/gitlab/logs/out.log
#查找gitlab本地生成备份, 时间为24小时内后缀为.tar的备份文件
lastBackupFile=$(find $localBackupDir -type f -mmin -1440 -name '*.tar')
echo "备份文件: $lastBackupFile" >> $backupLog
echo "传送时间: $(date +"%Y-%m-%d %H:%M:%S")" >> $backupLog
backup()
{
if [ ! -n "$lastBackupFile" ]; then
echo "查询备份文件不存在,备份失败"
else
# scp -r $lastBackupFile $remoteUser@$remoteIP:$remoteBackDir
# 远程目录若有该文件则不覆盖
rsync -avz --ignore-existing $lastBackupFile $remoteUser@$remoteIP:$remoteBackDir
echo "备份成功!"
fi
echo "------------------------------"
}
backup>>$backupLog
chmod 777 /var/opt/gitlab/gitlab_remote_backup.sh
2 定时任务配置
2.1 安装配置crontab(若已安装,跳过该步骤)
buntu安装cron
安装:apt-get install cron
启动:service cron start
重启:service cron restart
停止:service cron stop
重新载入配置 : service cron reload
检查状态:service cron status
查看crontab服务状态 : service cron status
查询cron可用的命令:service cron
检查Cronta工具是否安装:crontab -l
#查看定时任务
cat /etc/crontab
使用crontab -l 时,提示“no crontab for XXX”
这是因为第一次使用,crontab,没有生成对应文件导致的。
解决方法:使用crontab -e进入编辑,保存退出,即可正常使用 crontab -l
crontab -e
2.2 配置定时任务
vi /etc/crontab
#每天上午11点、晚上11点定时备份
* 11,23 * * * /bin/bash /var/opt/gitlab/gitlab_backup.sh > /dev/null 2>&1
#每天上午11点15、晚上11点15定时将备份数据同步到124.99.22.29服务器
15 11,23 * * * /bin/bash /var/opt/gitlab/gitlab_remote_backup.sh > /dev/null 2>&1
使配置文件生效
crontab /etc/crontab
2.2 定时清理目标服务器上备份文件
cd /devops/gitlab
vi delbackup.sh
#!/bin/bash
#gitlab备份的位置
backupdir=/devops/gitlab/gitlabbak
#保留7日
find $backupdir -name "*.tar" -type f -mtime +7 -exec rm -rf {} \;
chmod /devops/gitlab/delbackup.sh
定时执行清理脚本
vi /etc/crontab
#每天晚上11点定时清理备份数据
0 23 * * * /bin/bash /devops/gitlab/delbackup.sh > /dev/null 2>&1
crontab /etc/crontab